PLM之家PLMHome-工业软件践行者

[二次开发源码] NX二次开发源码分享:查找体中最大的面积

[复制链接]

2019-4-25 18:43:12 4386 1

admin 发表于 2014-11-4 20:54:40 |阅读模式

admin 楼主

2014-11-4 20:54:40

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
4 O' ^3 ^" o" x% M. s
NX二次开发源码分享:查找体中最大的面积/ |$ r9 U& x4 e% m2 s
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
7 |/ v6 ~+ F7 O  C5 v- Z& A! |( v& C* P* a

4 Z0 v7 e. l$ D7 Z
  1. #include <NXOpen/Session.hxx>
    . H" a0 l7 V8 ^
  2. #include <NXOpen/Part.hxx>
    9 v6 f: T5 J" ]" P% ?6 q- L7 ]
  3. #include <NXOpen/ParTCollection.hxx>  i( h6 @0 }. Y; S* o. t
  4. #include <NXOpen/MeasureManager.hxx>
    , S' z  M( U% P4 |% G
  5. #include <NXOpen/MeasureFaces.hxx>0 F5 {6 v0 a/ e5 |$ u8 v' W8 ~
  6. #include <NXOpen/NXObject.hxx>4 y; }3 r1 y# b/ A8 N( J& D; ?5 a
  7. #include <NXOpen/NXObjectManager.hxx>! L, B2 M2 F( w3 E& l  @
  8. #include <NXOpen/Body.hxx>
    6 H7 s% e4 U1 C7 w( ~8 R$ C. E
  9. #include <NXOpen/Face.hxx>
    3 I6 V' f% j1 e* e* n! z, m
  10. #include <NXOpen/Unit.hxx>
    0 ~" ~9 N: P3 {: B, i, D7 k
  11. #include <NXOpen/UnitCollection.hxx>
    3 N8 C6 V3 X& B0 u/ C. p
  12. using namespace NXOpen;
    ) P6 J6 Q0 ]( ~1 W" H
  13. 6 M8 ], U1 y2 S  q% J9 c
  14. static tag_t ask_largest_face_interop(tag_t body_tag)9 y  [/ s8 T: N; W2 ~9 ^( b' R
  15. {/ Y7 M- A! D8 y. {7 h
  16.     Session *theSession = Session::GetSession();4 n' }7 ]0 c1 S, y
  17. ! n" k5 n! O" g( h; Y
  18.     Part *workPart(theSession->Parts()->Work());
    8 S4 J& d. m* s) Z' y

  19. 2 X! E3 E; Y. V' e& f5 F
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    5 o' e4 C) J' U* k* c: s2 S
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    + J& S; v8 ]9 ?

  22. % Z' o6 A! A1 r9 Z; R) e2 O- ?7 t
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));, c. p0 t( }3 v! H2 F
  24.     std::vector<Face *> theFaces = theBody->GetFaces();- v4 A) t" s( u; s
  25. ) L& y! v- l! q
  26.     double bigArea = 0;& [  m( x/ U% x, \6 [( z
  27.     Face *bigFace;
    " f6 B0 p% C2 p& f: t
  28.     std::vector<IParameterizedSurface *> theFace(1);. }* w6 z4 R7 u: Q: I7 `
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    2 U8 s9 J6 a! ]8 N; ?
  30.     {  }9 ?; r! R$ O7 \6 i8 m" I: h5 I) H
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    9 h7 U) {' `# a8 ^) K: {
  32. 6 n& P1 i$ ]( q9 w
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    4 ~) t# F1 Z! H: s) H8 S- s
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    3 z- v" }( a1 s5 e! m/ f

  35. + c( g5 H* w  o) }) W6 l$ s. c! F
  36.         if (theMeasure->Area() > bigArea), c( y7 ?/ _( v0 I1 f
  37.         {
    ' r, |" i+ A7 [) V, ^
  38.             bigArea = theMeasure->Area();0 V+ w) x* u* K# ]  ?1 g8 a; K
  39.             bigFace = theFaces[ii];) S' d6 V& C7 ?' Q/ t
  40.         }* ?' [2 Y2 j. R8 H3 B5 @8 B* c6 @
  41.     }. M! @2 W/ b; Y. J4 e
  42. 2 q) k/ [0 H2 O5 e) R5 Z6 j1 P( [
  43.     return bigFace->Tag();7 i5 \- Y" e- W' s- w2 V% ]
  44. }
    9 i$ D- c7 ]$ N* [# R: Y7 J1 `
复制代码

5 i7 J7 q' }; A' C  ?9 `2 Q7 U" h- I3 z
0 R0 m0 ~" b: c0 Q
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

593232280 发表于 2019-4-25 18:43:12

593232280 沙发

2019-4-25 18:43:12

谢谢分享啊
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了