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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

6 i: S6 W* r+ \8 g) k" cNX二次开发源码分享:查找体中最大的面积4 p4 W" p0 `) _" x* e3 z
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询! r) ?* S0 R6 N! K9 G1 g. d# k+ G

$ C2 \) V) b: ~7 g- n) H# |( V% v% N: v
% l; F) q: D7 J" S0 M
  1. #include <NXOpen/Session.hxx>
    9 W8 E8 y6 e6 [- a! C
  2. #include <NXOpen/Part.hxx>
    9 F  B1 c& {: \3 H, d  ^
  3. #include <NXOpen/ParTCollection.hxx>
    & d3 D2 G4 e6 X' m
  4. #include <NXOpen/MeasureManager.hxx>
    ( t$ B) w4 L! M5 \$ I* u* M7 t# w( |
  5. #include <NXOpen/MeasureFaces.hxx>5 I1 G. m; h6 f* \! V) Z- o
  6. #include <NXOpen/NXObject.hxx>
    1 Q) \5 `# {  J% k
  7. #include <NXOpen/NXObjectManager.hxx>
      S: R; s% @. |  Q3 s9 @
  8. #include <NXOpen/Body.hxx>
    : W! N5 ]8 {& M1 A0 |
  9. #include <NXOpen/Face.hxx>
    ) [; `. C9 y- c6 D: H0 s8 N1 F
  10. #include <NXOpen/Unit.hxx>
    : P8 T1 c. n" t7 E* z+ i/ C. P
  11. #include <NXOpen/UnitCollection.hxx>3 j) D. [* q) f% @
  12. using namespace NXOpen;
    / {1 t3 X% @, V$ J# ]4 w
  13. 9 a6 Z. B$ \8 M, Y/ y
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    , e: G/ S3 K7 J
  15. {, w0 K! o- N/ m2 n
  16.     Session *theSession = Session::GetSession();
    $ O4 B4 E9 k3 M" b0 q

  17. 3 k# Z6 r! t; u7 |
  18.     Part *workPart(theSession->Parts()->Work());
    / _9 H3 k: C' P$ @$ C  ?% d

  19. ! B$ I- C* ~2 X- P( ]3 d4 d  j
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    8 y4 E$ V" L, \5 c6 T
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    ; s# w# j. G1 [9 H1 o: m* ~
  22. / _4 T* P3 H5 Z1 T  Y- n# d2 M4 w
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));: m; i# {/ a; E5 C
  24.     std::vector<Face *> theFaces = theBody->GetFaces();8 X7 a7 T& q4 e& d) z' X

  25.   p, G, c; l2 n3 K$ g
  26.     double bigArea = 0;
    6 e/ ?8 P' v0 k* @1 Y
  27.     Face *bigFace;
    9 _" `1 _* j3 E4 V# `
  28.     std::vector<IParameterizedSurface *> theFace(1);. c: ?, o$ I1 v6 x
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    ( G1 r" t0 |5 f0 b/ p
  30.     {5 w( ^( h( ?. O: ~& }
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);, K. m( D, t% d  C1 H+ E/ \

  32. 4 l( [2 Y# ^, d8 D! T0 I8 d
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->" [* m" Q1 F$ c+ \1 d3 ~7 k( J
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);  u. z* @- }7 ^" ?# |
  35. / a; g: v+ }1 ?( g0 v
  36.         if (theMeasure->Area() > bigArea)
    5 x, W" x+ d6 d8 T7 B
  37.         {+ k# Y. |' }3 N) j
  38.             bigArea = theMeasure->Area();
    0 T) w- K4 x! |) j5 x) q/ n- L; U( b% ]4 i
  39.             bigFace = theFaces[ii];
    % k1 W/ D) M. F  C
  40.         }
    ( p' C6 ^9 K" M" d5 s7 ]
  41.     }5 h, P: \5 c: J+ _" }+ Y0 B

  42. - K$ t" n7 U% F. Q% G
  43.     return bigFace->Tag();
    6 A! \+ G0 h- L; c
  44. }" _  C5 J8 C" A0 \/ q- B6 h
复制代码

# i0 T* C! k5 Q- d: K
4 j) @4 G" \! i% G3 J' x# p. l* O& L' x6 m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了