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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x
6 p# J4 B3 x. j- c$ M& {9 K$ v
NX二次开发源码分享:查找体中最大的面积$ _9 v( A1 q0 h+ a5 Y  y4 O! T2 i
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
& C9 Q( |; n% y& @1 u
! H" J* F/ A# o6 L) M4 T" H$ s/ ~) {4 Q7 E/ `6 A
  1. #include <NXOpen/Session.hxx>8 H; x7 R7 n+ g- E
  2. #include <NXOpen/Part.hxx>2 K- ~! K# {4 \5 U+ M+ o$ q* o) W4 `9 Y
  3. #include <NXOpen/ParTCollection.hxx>
    ; E$ @4 R- C- i; T+ M) Q3 H# i
  4. #include <NXOpen/MeasureManager.hxx>$ ~/ n; f9 D$ ^9 R
  5. #include <NXOpen/MeasureFaces.hxx>! c. r4 ^# K; e, L
  6. #include <NXOpen/NXObject.hxx>
    4 I  Z+ X: X  [
  7. #include <NXOpen/NXObjectManager.hxx>
    ! q. `; j& b9 W. k% C& j
  8. #include <NXOpen/Body.hxx>
    ) s8 O' l$ v4 j  p" d
  9. #include <NXOpen/Face.hxx>
    ! N+ q, `. m! N; K7 g& u2 q7 N
  10. #include <NXOpen/Unit.hxx>
    3 e) ~& j# x- V3 q
  11. #include <NXOpen/UnitCollection.hxx>* Z0 t2 P) Q+ J* W" J
  12. using namespace NXOpen;) b' ?  E2 U, E4 w0 C% N
  13. ( D4 E+ D  w  c, e3 j
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    2 P3 r- K& O0 P9 v& d+ y
  15. {, {; M" U7 e: W
  16.     Session *theSession = Session::GetSession();( n/ ~6 g, C8 [7 r
  17. ; ^, c) D  O+ ~7 g: ?
  18.     Part *workPart(theSession->Parts()->Work());
    5 z! o  y2 x% S  A! N2 e) z

  19. 5 u) U& `+ k7 t/ I
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    . X9 b0 A6 v! @* J% |2 A8 X2 i
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    * w' H4 e6 ^: S; N+ F# @
  22. 9 S, `: t% b. \( Z4 `* P$ }
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    $ h/ J+ x, w1 G- j  b4 T4 O
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    ) b- N# E) b2 A1 P
  25. $ l' t# O1 _- w3 d
  26.     double bigArea = 0;
    - k- \2 l. w% C, l# e
  27.     Face *bigFace;
      g1 N( t* G- i, y$ Q
  28.     std::vector<IParameterizedSurface *> theFace(1);" i* P) N  j) P/ J: \$ `5 N2 x
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    3 D+ A* b7 _8 ^0 v8 f7 H) J
  30.     {" p7 k2 X0 {" j
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    8 E& H) L/ K% G& N; B& U' E1 e

  32. * W5 B5 w: x8 g& j, `+ _: s$ t
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    " N; U) Q* g9 C$ k
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);9 P2 {; k- h" l
  35. 6 f0 W5 Q- q8 ^/ m9 v9 W7 A
  36.         if (theMeasure->Area() > bigArea)
    3 j6 R. v, k2 l9 ^/ p4 I
  37.         {
    3 [. n6 a! f1 L) s1 A  x
  38.             bigArea = theMeasure->Area();8 A- T: w) H3 A0 b
  39.             bigFace = theFaces[ii];5 ^* ~1 I$ l7 K1 u- s
  40.         }
    6 @! l4 l: s0 ?6 k, |
  41.     }" p2 `" j( ]9 w: D: ]8 F$ M1 i

  42. # M7 Q# J5 K4 r* u6 K
  43.     return bigFace->Tag();
    . S; @; q8 W0 w! Q
  44. }+ i; q3 J# t& G3 [: y
复制代码
3 `0 P. k& ^8 w) j7 y1 i

6 d* P; D2 q: F9 x: o& k3 i; n2 n1 Y# v4 I( c3 @- ^, ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了