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

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

[复制链接]

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

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

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

x
. D; a4 _2 t# U/ B( Z
NX二次开发源码分享:查找体中最大的面积" e- u+ v) n  w: p. x& h
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询2 U& e& F! n: q' B. B4 m8 W

8 k2 h1 Y( j; R
0 W. V8 `, p5 ~' ]1 z2 J( S
  1. #include <NXOpen/Session.hxx>0 E# \% l: d5 m# \% z+ i6 O
  2. #include <NXOpen/Part.hxx>
    ; h. E( r; \, Y. k9 S
  3. #include <NXOpen/ParTCollection.hxx>
    7 ?6 }9 n1 _% r  X9 f, ~
  4. #include <NXOpen/MeasureManager.hxx>
    ; \. }( A1 z/ n4 i* ]0 N
  5. #include <NXOpen/MeasureFaces.hxx>! v% \9 c* D1 L
  6. #include <NXOpen/NXObject.hxx>
    " }, v& l) M* }8 j
  7. #include <NXOpen/NXObjectManager.hxx>3 v* ?  ^9 i0 _( B$ Y) b+ U
  8. #include <NXOpen/Body.hxx>
    6 X  L" _9 S9 S& X# I- w4 p7 i
  9. #include <NXOpen/Face.hxx>
    ; Q+ t7 p" I& \) W7 k; X2 K
  10. #include <NXOpen/Unit.hxx>+ G+ E! ~# h  ^8 q! q
  11. #include <NXOpen/UnitCollection.hxx>3 d, j' J) c; {7 H- s* v
  12. using namespace NXOpen;
    7 ]" p1 u5 h# n; G

  13. 4 J+ P0 G& Y+ P* y5 v$ h+ m
  14. static tag_t ask_largest_face_interop(tag_t body_tag): D$ A9 c6 ~" B0 _
  15. {
      c$ z- Z& P) l7 {) c& F
  16.     Session *theSession = Session::GetSession();
    + O) J- l. N1 v/ L

  17. 3 U6 _$ z9 i1 G0 n) L- J
  18.     Part *workPart(theSession->Parts()->Work());
    8 ^) a, B/ j2 V/ t  D
  19. ) }+ s+ T, n$ Q: Y3 B6 z
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");! \, ~, y$ s( F( n: n4 K
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");, m2 j" D+ s* T* N# a

  22. 2 b! U0 U" H& W3 p8 s" P
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));# ^& I8 S* z2 O' y! h7 H9 J1 O
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    ; s0 y1 z! n# ~& [) f( a( b
  25. % K; }/ K% p: C7 k$ z$ s; ]
  26.     double bigArea = 0;
      j$ B! s: U* u( _# B% y7 W
  27.     Face *bigFace;
    % A' O6 x3 T( T3 u  e( E) J0 n
  28.     std::vector<IParameterizedSurface *> theFace(1);* Z8 y5 K0 T" {" `! ?9 n) U/ s
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    " C* N( x2 Z% o8 k2 _
  30.     {% S  f* ~( Y9 ?$ T, z
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    7 D6 ~2 c, s) R9 x% f
  32. # T2 j' x" t4 W/ V7 f- p
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    1 S2 `  R: H6 P; ^* I* ^! H
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);# k$ J* d* }% K, l
  35. 6 q0 ]3 G  w+ [. j0 @; P4 o7 C4 j( U& `$ W
  36.         if (theMeasure->Area() > bigArea)1 |5 \3 I; S. G) b, _1 L- C# c8 D/ p
  37.         {
    3 G5 Y9 J: Z; U3 x: ]1 H6 A& I
  38.             bigArea = theMeasure->Area();
    & ~# O5 b. y# h) _' k
  39.             bigFace = theFaces[ii];
    / R: z8 L$ v  M# g* J0 k4 t
  40.         }6 V3 T0 Z9 |. `# f1 ?0 T# l
  41.     }
    3 V9 @) _3 r: H" u
  42. , J6 r# o; i- O  K$ S# r; y& |0 ^
  43.     return bigFace->Tag();7 @9 q" Y! B, p9 T
  44. }
    ; f; i/ \% D4 J
复制代码
5 d  [+ d) `" R+ I* c$ m/ _

8 v; Q& V0 ^/ Z: d$ ]. |
  K% o. T+ U( g) v( ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了