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

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

[复制链接]

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

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

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

x

5 x$ d9 u, X6 r: d  z0 g( PNX二次开发源码分享:查找体中最大的面积
. R+ v5 S! |0 q; @通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询9 y  t% C, X( ]. e8 p4 G
& [+ ]7 f- K. @, ?. A5 W8 n
- e  V9 q6 ^5 m8 B
  1. #include <NXOpen/Session.hxx>
    - D( m7 s# H1 T) g+ F
  2. #include <NXOpen/Part.hxx>
    ( c% v2 N0 M2 d. g$ |1 p
  3. #include <NXOpen/ParTCollection.hxx>" p2 @* E4 y* V/ b% {; R
  4. #include <NXOpen/MeasureManager.hxx>
    : o$ _  c4 a; ?" @8 ^; h  s$ M
  5. #include <NXOpen/MeasureFaces.hxx>/ `, F4 g) l# j1 g6 m
  6. #include <NXOpen/NXObject.hxx>
    7 J% S% v- U- R+ a! f
  7. #include <NXOpen/NXObjectManager.hxx>+ y/ j, V* a) E7 a% Y4 w  R
  8. #include <NXOpen/Body.hxx>
    . M* j- I( @2 v1 B& ]4 W
  9. #include <NXOpen/Face.hxx>1 i7 |7 A  w0 p7 c$ G
  10. #include <NXOpen/Unit.hxx>9 S$ X7 L- S' P9 _; y
  11. #include <NXOpen/UnitCollection.hxx>, ]" ~/ b: Z1 ]. m% B: M! u% R
  12. using namespace NXOpen;, t( D1 [7 q! U5 i! m
  13. . W: U3 G' H7 v4 C" e
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    & _: _; _, B! T
  15. {4 ?5 c% ^1 H' h  j9 X
  16.     Session *theSession = Session::GetSession();6 Y3 T2 I6 V* s  p4 t

  17. ! t9 y) g2 e, Y& ?, [+ y
  18.     Part *workPart(theSession->Parts()->Work());
    $ O3 P9 [! k; c0 v
  19. 2 d0 `$ t% U5 K: g
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    + h! j( f5 s' C- T# e& B1 R. {! L5 J
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");% _$ @! ~6 l2 a2 A+ S3 S

  22. 3 S1 u8 x% d& p. y3 }
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    ! B; d6 W5 ]3 I" |; ?) n
  24.     std::vector<Face *> theFaces = theBody->GetFaces();" G* l0 L: Q+ O" q
  25. 0 M* Z  c; K5 u3 t- s* J
  26.     double bigArea = 0;3 C0 C& S/ M/ }; H  s7 s
  27.     Face *bigFace;4 m2 [* K2 p2 z4 f% a
  28.     std::vector<IParameterizedSurface *> theFace(1);
    ) _, [4 i$ V+ o) |4 V7 A2 W6 B
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    3 |0 U7 K/ ?1 u  q& C: K7 l7 C! Y
  30.     {
    : K8 y& C( o5 c; o
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    ! V4 n6 }/ J: B; M% B, L% j/ Z

  32. , z0 o& Y6 y- z" J; v! e
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    - w3 d# y+ ~% |. Q( I
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    " Q; ?6 B# Q! k" f  X/ c

  35. 3 B9 f: ~" o+ ?# K. Z; g
  36.         if (theMeasure->Area() > bigArea)# s& }9 }2 U* Z) C( s* {& D3 c9 x0 v
  37.         {
    5 t4 ^9 k# F+ W7 l6 J2 l/ A( N% ?/ V  f2 k
  38.             bigArea = theMeasure->Area();* N/ a! O! s6 u5 n5 J
  39.             bigFace = theFaces[ii];- r/ }" U: f/ C$ P& m* u
  40.         }
    9 Z9 c/ L0 T/ q) M4 w. j. T/ v
  41.     }" W$ C$ S7 U3 U5 G
  42. * r' w# O2 N( d/ k3 l% s) I
  43.     return bigFace->Tag();4 {$ l" u- _9 k* [
  44. }
    8 Z$ j' r! }+ _- O) Q/ o+ Q
复制代码

, C0 g  r- L# r9 x- E$ t/ U
/ q' P/ S/ M+ f4 |4 x* u8 O5 L% a+ z' \3 }6 m  O
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了