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

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

[复制链接]

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

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

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

x
- n' A* s; l7 E" K# s; P" A
NX二次开发源码分享:查找体中最大的面积
* i/ G3 b0 }. J7 I( ?/ w通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
# h' I: F% V1 @- u6 i; q) C$ b! D
4 S0 {8 H) a1 C+ e' o6 @4 K' \
  1. #include <NXOpen/Session.hxx>; g* _4 J; N1 t* b  e
  2. #include <NXOpen/Part.hxx>
    , N: E( J* O1 [8 M3 {! G# V
  3. #include <NXOpen/ParTCollection.hxx>
    . n2 B' T4 l# X! K7 E7 m: h; K0 s7 Z+ s
  4. #include <NXOpen/MeasureManager.hxx>+ G1 ?" I" q4 P, D3 e  _
  5. #include <NXOpen/MeasureFaces.hxx>% g9 f" v/ B" G  E1 t/ u* u! ^
  6. #include <NXOpen/NXObject.hxx>$ V- D* [$ X7 w
  7. #include <NXOpen/NXObjectManager.hxx>8 A2 Z4 Y1 K( K1 b# e
  8. #include <NXOpen/Body.hxx>
    . p6 O" t" M( M; ~& h# J- ]1 D8 Q
  9. #include <NXOpen/Face.hxx>; \0 x6 J8 Q8 Z4 C' W
  10. #include <NXOpen/Unit.hxx>
    , @3 `. x- |3 r( S
  11. #include <NXOpen/UnitCollection.hxx>3 y2 p0 ]6 l" U+ M( H/ j2 J' V
  12. using namespace NXOpen;- d+ I8 L% Z5 R
  13. # _" i) l1 _. C2 J) f+ ^
  14. static tag_t ask_largest_face_interop(tag_t body_tag)  B1 |. ?- q# A" ~
  15. {
    9 M" {# d% f  U; |' i* z
  16.     Session *theSession = Session::GetSession();
    + B* O+ }6 A& p. F2 H3 a. H9 M% g
  17. $ Y3 T# ]/ A. M+ U$ l9 I, Q
  18.     Part *workPart(theSession->Parts()->Work());+ A, L1 k0 J/ G" G  G- a8 W, e
  19. 5 y* \& i4 A# o( E/ T
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");% b0 g* h& i  }: l5 D! q
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    ) j4 S1 @' B; o
  22. 0 |( V) o& _, s& t5 x6 Z
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));( n* l0 }/ K" Y5 a
  24.     std::vector<Face *> theFaces = theBody->GetFaces();! K# \% S# f9 v' P4 p; {
  25. ' k' k1 t" ]& p0 r! B% z' H
  26.     double bigArea = 0;
    : [/ ^: Z8 p4 j% f
  27.     Face *bigFace;
    * s3 T+ h7 M! K, g1 t
  28.     std::vector<IParameterizedSurface *> theFace(1);
    - C# u1 E* r/ s* k6 ?* O# c
  29.     for (int ii = 0; ii < theFaces.size(); ii++)+ o4 A" z- J  M! @3 `/ G) r
  30.     {
    % c+ j+ h/ s5 S9 x
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);' ?, p2 ]3 D5 b5 e2 ]
  32. # `# M/ K3 V# h' F/ m
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    % C+ i) o' N+ i  [& H( y9 n, B
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);+ s* S( M" V' i6 h7 Z/ D

  35. % x3 ~$ i2 o3 K- N# @' M3 i  P
  36.         if (theMeasure->Area() > bigArea)
    1 F; |+ d, Z; O* ?8 e
  37.         {" `6 X% _" \3 i- T! b' r6 h3 V
  38.             bigArea = theMeasure->Area();
    . H8 K- T* g1 J+ N# J
  39.             bigFace = theFaces[ii];
    9 _( S- B! n# r4 w+ Y0 |" F
  40.         }; A" G+ \' ^( M& g8 C* Q
  41.     }
    ( J6 ]' |( A2 l$ W+ Q/ z
  42. 4 q+ B0 A* W  J, ~
  43.     return bigFace->Tag();7 g+ K2 ?% k, Z+ a* |9 M9 h
  44. }( r5 s* r3 f9 [3 r$ D' b  r
复制代码

& f- B: b1 i1 x
5 l! ?) g$ @% v# B2 Z( y; }1 s4 N# y2 b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了