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

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

[复制链接]

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

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

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

x

( U' b  o8 |( P: \+ n4 g. rNX二次开发源码分享:查找体中最大的面积
* X1 w% y+ b& A/ J$ J. k通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
2 c# v. Q9 K, d3 I* h
& T& Y3 Z, d, i
; C2 G' ]0 L7 U+ g
  1. #include <NXOpen/Session.hxx>5 O4 K- f0 I3 Y, N6 R
  2. #include <NXOpen/Part.hxx>
    4 `7 M( F& y0 P, @+ L
  3. #include <NXOpen/ParTCollection.hxx>5 A0 V- B" P$ J  h7 \
  4. #include <NXOpen/MeasureManager.hxx>" R1 `/ g+ m0 J
  5. #include <NXOpen/MeasureFaces.hxx>, R+ F8 o. v( i  a6 R
  6. #include <NXOpen/NXObject.hxx>$ e5 f- ?6 Z( h6 z$ N
  7. #include <NXOpen/NXObjectManager.hxx>
    $ Z6 G& F2 B9 L1 n1 h5 s3 i' Z( q; a% y
  8. #include <NXOpen/Body.hxx>
    + m: X2 }4 t3 L$ F4 F6 H% m
  9. #include <NXOpen/Face.hxx>
    & n5 q- g2 t1 N
  10. #include <NXOpen/Unit.hxx>) K1 ~. K9 X1 {7 t3 f8 g
  11. #include <NXOpen/UnitCollection.hxx>
    - W' P. j) i- W/ j
  12. using namespace NXOpen;
    9 r; k  e8 ]/ Z: _

  13. ! i4 [7 k7 D; C  W
  14. static tag_t ask_largest_face_interop(tag_t body_tag). X. U7 c. L; B5 w. S
  15. {
    & N$ y% P6 o0 d6 ~, G% t7 b2 o
  16.     Session *theSession = Session::GetSession();3 b, \( J) X1 i) J: J6 g9 X$ x

  17. 9 X0 l: G# f% \# v- R% c" q
  18.     Part *workPart(theSession->Parts()->Work());' Q' K) i# c7 G
  19. 8 c; r8 d. N: @: }: `2 r
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");- B: w1 B6 M" z$ |
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");, Y6 ]+ b: u6 ^' ^( n
  22. 3 v# k, A; ?8 S, U
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
      N% x' p- M5 O+ Q  J! p
  24.     std::vector<Face *> theFaces = theBody->GetFaces();0 C: J: A8 [9 O+ c

  25. / \# k" U' n' V, A. s% ^1 I
  26.     double bigArea = 0;0 c: r9 k4 J! A- Q, l1 c) i, ?1 }8 c' V
  27.     Face *bigFace;( z4 i+ B$ v1 |4 Q
  28.     std::vector<IParameterizedSurface *> theFace(1);0 i& q* X% Y; j, h2 r; w
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    4 g( I% S# I# T+ p6 \8 C
  30.     {6 U, ^6 T( ^. ]
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);: \2 I' F& j7 @) U
  32. 4 y8 f. `' c) @9 o6 ?, m# \  ]
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    & {* ?# S  M( Z! i% V
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);* f' D% h) E: }3 }7 e5 u1 W: N
  35. & j# G* s* T/ d4 Q/ K2 r: C0 ]( b
  36.         if (theMeasure->Area() > bigArea)7 G; Y9 U2 z- H8 o1 G
  37.         {8 J& h6 [" f# d; ^& o# j$ l
  38.             bigArea = theMeasure->Area();* P2 U+ O- H7 s2 h, @3 u" U# X
  39.             bigFace = theFaces[ii];- ]+ v' d2 z: c  [2 C5 M5 T" k
  40.         }5 z4 e! P8 [2 j- [) v) i
  41.     }
    , E' `9 [( [. z% a! C
  42. 2 B7 k) \, d' `/ i* s1 z; F% g8 @9 _
  43.     return bigFace->Tag();
    / a8 o/ F  [- ^( p/ K/ E8 L
  44. }5 k, l, y/ s  l) X
复制代码
: H5 e* }5 b* r/ ^9 @+ e8 N" G$ x

, _& _1 g+ F# Q7 e  y7 F5 M$ h! m( y* z2 V# \* L4 }7 w1 N6 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二次开发专题模块培训报名开始啦

    我知道了