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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

( ]4 v4 N2 L5 W7 n/ _' i; w' XNX二次开发源码分享:查找体中最大的面积
6 z3 q' ?- U. P& W通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询2 O9 N! `; e2 Q

2 g( m' Z1 q2 s+ l/ I4 K
6 [! w8 W$ k7 \( N0 i, v) D
  1. #include <NXOpen/Session.hxx>
    4 ^; }* K+ |2 A7 ~  s8 T+ G
  2. #include <NXOpen/Part.hxx>3 S1 b, G# U6 W
  3. #include <NXOpen/ParTCollection.hxx>8 v/ R& P0 K2 h4 B# R6 d2 h
  4. #include <NXOpen/MeasureManager.hxx>8 k+ ]1 N  Q. P; `1 r
  5. #include <NXOpen/MeasureFaces.hxx>
    * Y0 p# \) j* f5 z: y& M2 q  c6 l
  6. #include <NXOpen/NXObject.hxx>
    + e/ F% B" e7 w* L2 S) u, Y
  7. #include <NXOpen/NXObjectManager.hxx>  Y' ~  S* ?. r
  8. #include <NXOpen/Body.hxx>4 o- r  W6 {' x4 P
  9. #include <NXOpen/Face.hxx>
    7 r( F0 g0 t% n  u6 K+ n
  10. #include <NXOpen/Unit.hxx>
    # E1 J9 H- `, K/ K& k
  11. #include <NXOpen/UnitCollection.hxx>
    0 ?7 `0 m# q% j! Y
  12. using namespace NXOpen;
    / a1 G1 F  h! z% ?' |$ @' ?. a( _
  13. ; S' v6 n  i) v
  14. static tag_t ask_largest_face_interop(tag_t body_tag). m, L  i: A2 H
  15. {9 y  T: v  N1 Z
  16.     Session *theSession = Session::GetSession();
    / _+ {5 D! H4 D: E3 o! G$ ]7 ]0 p
  17. * o6 w6 K  Q* j4 U. Y
  18.     Part *workPart(theSession->Parts()->Work());
    ) L9 h! h& h1 h# ~
  19. # V2 W5 s' z! p5 w- C
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    # g$ U9 o* L) D  i% s
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");+ D  q& M1 W' ]+ C# s% F9 |

  22. 4 l- S( ~- b+ Y8 ~
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    2 h) |/ \% f: [( o) ^( q
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    # m# T! Q& ^, j% s$ g

  25. ' V' H9 ^, G. R
  26.     double bigArea = 0;( b* B% t# E9 g9 |: Q- s
  27.     Face *bigFace;
    9 z4 T# a. n- M) m0 }$ @4 n
  28.     std::vector<IParameterizedSurface *> theFace(1);$ v# X+ @" E8 }6 T
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    * A$ ?( C9 a( S* P+ k) ~
  30.     {; w7 X0 k8 H% s8 H& X: m, L2 \
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    ( `( W% f, L% W
  32. * G) m3 T6 [! l7 b+ R
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    " |0 P+ T& a2 a" {
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);0 N8 J0 h) g) N1 w4 m. ^1 s
  35. ; v1 S% `- ?) D/ N
  36.         if (theMeasure->Area() > bigArea)* q: `2 H0 F" ^# G( D! j9 ?: F: M  k
  37.         {# a+ k3 ]" _1 \. K9 |# j# b
  38.             bigArea = theMeasure->Area();
    6 \' g2 I, i3 `8 G+ Z3 j, f" @
  39.             bigFace = theFaces[ii];
    ) ]  ?7 z# h# L. T2 a
  40.         }
    . K8 X6 ~6 o% E  g$ c' p
  41.     }
    ' f2 j1 Y6 q+ d% r( V, L( `
  42. : ?& [% T/ w" x7 a; o% J6 \
  43.     return bigFace->Tag();
    " o! _  Y  E8 h9 T5 F
  44. }  e9 x" C# T( E$ {, K
复制代码

6 o2 C9 K' o$ b- K" f1 T% c2 i: o, L8 E) E# b6 O

8 i6 F$ t, v, P7 j0 n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了