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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x
" y- j; T  s$ q7 i6 n( x  N
NX二次开发源码分享:查找体中最大的面积
3 d; z6 J6 `% B- S4 j7 z- Z通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询5 d3 h: ~6 z: }+ D
4 {) `; k6 U* m. ~/ ^* o
' {; [3 V$ J9 c/ |) A# Z( Z
  1. #include <NXOpen/Session.hxx>
    ) q) i3 a6 o8 l1 c* ]
  2. #include <NXOpen/Part.hxx>6 U% x4 d" [* q/ o  G( q" g
  3. #include <NXOpen/ParTCollection.hxx>4 f! W6 L# ^8 s0 N( H, g
  4. #include <NXOpen/MeasureManager.hxx>1 N( z9 K3 \+ O" e) q! e0 @$ V, Z
  5. #include <NXOpen/MeasureFaces.hxx>: ~- ]( \$ e# Y, S9 k
  6. #include <NXOpen/NXObject.hxx>, t2 L7 J4 q% \4 P3 W3 Q
  7. #include <NXOpen/NXObjectManager.hxx>
    5 ~: R, Z0 n. Z$ V+ K" v
  8. #include <NXOpen/Body.hxx>
    : B# R0 ]' ~* R8 V
  9. #include <NXOpen/Face.hxx>
    ; _% _/ g9 i% S. X# W" M
  10. #include <NXOpen/Unit.hxx>
    5 c3 F/ b$ ^* n2 e9 d
  11. #include <NXOpen/UnitCollection.hxx>
    * b' U' V! a3 B3 b% O
  12. using namespace NXOpen;( q6 Q4 c+ A' _5 P
  13. 4 S# c  Y" h/ R4 r, }- B
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    & w$ M. Z, F2 O( h7 R# U; G% q" d* E
  15. {3 V) A8 P9 n: V" \8 k
  16.     Session *theSession = Session::GetSession();
    7 b4 y& W# F8 Q- J5 P5 J" J5 A
  17. * W" n% h2 s+ u5 \
  18.     Part *workPart(theSession->Parts()->Work());! i6 \8 [+ |1 O: L; a3 U0 t
  19. ( E0 H& _# Z! M! a( u0 C
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");$ O& t! \- o0 n$ E
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    9 N# ^6 T+ @7 L1 ~, v

  22. 8 G; U+ h2 e& n5 P: s' a( B
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));# z; D7 v8 p) `0 u0 X7 P
  24.     std::vector<Face *> theFaces = theBody->GetFaces();& L8 }  t1 k$ a% u
  25. 9 E0 |; l. i2 q! o
  26.     double bigArea = 0;) j; v& \5 C% E7 A, E0 u3 k
  27.     Face *bigFace;3 Q. q  T  |4 F. o+ I" r
  28.     std::vector<IParameterizedSurface *> theFace(1);  p% G" p6 r( v  S" f; J2 a: _
  29.     for (int ii = 0; ii < theFaces.size(); ii++)0 {8 L# |8 o" p1 f" q' z
  30.     {
    $ b9 w1 f. b8 [/ O: Z$ R
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    , N) ~3 D& I6 c% w* n# b- h
  32. 9 |6 L$ y+ b# r; _1 s9 T* W
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    : Z2 D- ~2 \6 |/ N, [
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    9 |& {# y6 w: P# ^
  35. # ~$ @( |# r: d. ~0 c# y6 H
  36.         if (theMeasure->Area() > bigArea)
    . _1 Q! z0 [  k' r) i# N
  37.         {
    ( W" C% w: h: h0 R4 b4 _
  38.             bigArea = theMeasure->Area();0 P( q, \  y3 _
  39.             bigFace = theFaces[ii];
    # [0 F3 ]: u  w+ N9 `+ H7 Y) b: J
  40.         }! o) n1 m2 O6 S
  41.     }, P9 P0 W& @! f5 D4 T  s. P% R5 \
  42. ! \* y; f- D3 l8 X0 R
  43.     return bigFace->Tag();- M7 ?6 [; Z- C8 f  K/ V8 D( K
  44. }% @5 X: P9 o/ v! A5 L2 p
复制代码
  k5 h* a, L6 a* y! q
4 b5 {6 p$ l7 S0 h

; r0 z: }1 E  A* h- |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了