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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

0 N6 M  G+ _) [! k- x) `% ^+ kNX二次开发源码分享:查找体中最大的面积, G% {6 E6 l8 ^$ \1 S0 Q- J
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
, P- t* x/ o9 z5 Y3 e9 d( I6 G) M# y) L$ A8 Q; ?4 _5 t
* w! Z! M. a0 H1 w$ p# |
  1. #include <NXOpen/Session.hxx>6 f# t0 T) Q: e9 W
  2. #include <NXOpen/Part.hxx>
    2 R" A$ y" D+ o3 S& V7 O* ]
  3. #include <NXOpen/ParTCollection.hxx>
    ) u  y8 @: j% g, c6 Y
  4. #include <NXOpen/MeasureManager.hxx>
    $ i. T2 U) f* t" D) H$ w" G* a$ x
  5. #include <NXOpen/MeasureFaces.hxx>
    4 o. g4 e' t" T1 K0 {2 l+ r
  6. #include <NXOpen/NXObject.hxx>9 R! D1 S3 Y5 k6 D4 Z# ^4 V
  7. #include <NXOpen/NXObjectManager.hxx>
      s# S4 S4 b& X7 E  U, }
  8. #include <NXOpen/Body.hxx>
    - E6 b" G; i& ^, p5 {5 \. g
  9. #include <NXOpen/Face.hxx>
    ) N5 j$ O/ t! E+ f$ R
  10. #include <NXOpen/Unit.hxx>
    . x, R8 T2 N% m4 p2 T( N* f8 w
  11. #include <NXOpen/UnitCollection.hxx>0 M1 z; I4 N; d4 _) x
  12. using namespace NXOpen;
    ; z+ @9 T9 r. O% a$ p
  13. % Y; l3 `' [* f/ ^
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    9 {2 o; K+ W3 L3 H/ k
  15. {
    ; x) c% f% a! Z6 w" ]
  16.     Session *theSession = Session::GetSession();
    9 K( t, W) {6 G& h/ M6 ]7 K- P) S
  17. # I, P3 ^% c2 d8 n5 H
  18.     Part *workPart(theSession->Parts()->Work());
    5 O8 `  e2 M# ~7 B! `% L
  19. 2 w3 ~7 }' p3 e
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");/ u& L/ s% v( |4 y/ [
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");3 `0 k4 Z2 @( r" S
  22. / t# w& |5 z! ~+ Q( t: _# j  M8 F
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    ; P& d8 C" H! i3 I* U6 d' R6 c
  24.     std::vector<Face *> theFaces = theBody->GetFaces();1 q/ j! G& z1 g  Y" [
  25. / `1 U; _! _" s: t; c
  26.     double bigArea = 0;
    , _/ E7 K  R; p) l) c8 e; s: f
  27.     Face *bigFace;& \! F: d% D# b2 C3 D+ B  [: N. h
  28.     std::vector<IParameterizedSurface *> theFace(1);% V  _* F# i% q6 |3 `) O9 v
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    ( `) S5 ^& [  i& |3 w
  30.     {8 m- n( a5 C3 I9 _0 E! C6 C7 Z9 ?
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    " {9 ~( G2 j+ k2 n' `$ c

  32. + Z. V3 n- B* z1 Y- u! r! T
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()-># c$ E. {: v/ O2 q- [8 Y* f
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);* p( y2 \0 ]1 q% x
  35. ( \8 A# C, m% Q1 s5 j( }% n! \9 p4 g
  36.         if (theMeasure->Area() > bigArea)  |; M3 P! m  K; N- a4 s8 m
  37.         {5 S- a0 Y% ~( g0 A# i  }
  38.             bigArea = theMeasure->Area();; R" v0 ?8 G/ H5 H0 |- |4 \! {6 F
  39.             bigFace = theFaces[ii];
    1 X2 O$ M: r/ h1 s! i7 R! O/ g+ R
  40.         }
    7 x7 s- F4 h6 T
  41.     }
    0 n0 N3 `9 V& W9 H
  42.   v, n% |- |. ^! G! G0 Z2 U% w
  43.     return bigFace->Tag();7 ~) i0 I- ^5 s" b  p
  44. }
    5 j7 o" J5 S) x" H1 l0 m
复制代码

; h% X/ @5 ~7 r8 n7 u+ Z9 r/ d* d6 V, j' T( k5 n

6 G+ Q5 b1 \4 X% V( I/ {! z8 g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了