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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

+ m. P: U' |! u" _7 }. xNX二次开发源码分享:查找体中最大的面积
" H# \! w0 Y3 Y$ P+ R* K8 I# m( R! L) a- A通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询7 C! L, i* ]2 w, [$ u+ b/ N3 S

1 I. S2 [8 [1 m0 O9 I; L* s: f* L
8 S. U. {! n. b" C8 D
  1. #include <NXOpen/Session.hxx>- W) i% l3 V2 K- M5 q7 G
  2. #include <NXOpen/Part.hxx>
    . ]( |7 A( B2 P2 E* _: s  _* {
  3. #include <NXOpen/ParTCollection.hxx>: x) F9 h; {% w. \. a3 v* t
  4. #include <NXOpen/MeasureManager.hxx>
    ) \! `8 e8 d: l
  5. #include <NXOpen/MeasureFaces.hxx>
    9 Z* V! `8 \, g6 {( `
  6. #include <NXOpen/NXObject.hxx>: n) ]. ~, Q  B. Q6 `
  7. #include <NXOpen/NXObjectManager.hxx>
    ! j+ \& N0 J% M$ O& y
  8. #include <NXOpen/Body.hxx>- ~' d1 H& U( u- _5 W
  9. #include <NXOpen/Face.hxx>
    " l& {$ X) Y% K8 z
  10. #include <NXOpen/Unit.hxx>
    + h9 F' L0 ^& \' P" g( Y) `
  11. #include <NXOpen/UnitCollection.hxx>
    3 w7 |" F! i( D4 c& A' u
  12. using namespace NXOpen;
    8 U6 S% V& B+ {

  13. 3 V& c! a+ {! j$ Z+ x  j" v
  14. static tag_t ask_largest_face_interop(tag_t body_tag)  o. l, r  p, p; m/ E
  15. {
    8 h  Y5 c! i' S" _
  16.     Session *theSession = Session::GetSession();
    9 b% a' a9 J% U4 P' h$ `5 @
  17. ! g  _( w  ]. {9 g/ ]2 Q
  18.     Part *workPart(theSession->Parts()->Work());
      d7 C2 f0 q6 b2 T9 V' L; e

  19. % q4 D5 E5 e! |, a+ v, q, X" z+ Z
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");1 B9 f$ f! g9 C
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
      P4 u, j5 C# i2 B  D, X7 D* G. y2 O
  22. / w- M$ q/ q) j& d% `: P% ?* H
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));8 g( \. M$ l$ R3 w! l
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    0 q3 X" r; F2 V+ g% c$ e
  25. 0 m, q  b+ V/ ?2 r/ u( ?' F' S: \
  26.     double bigArea = 0;: a- h* m, ]/ L; \" P6 W
  27.     Face *bigFace;
    2 A' H8 p* t" p  N
  28.     std::vector<IParameterizedSurface *> theFace(1);& n6 k+ V; X1 d9 j, }* O& R/ d$ ~3 {
  29.     for (int ii = 0; ii < theFaces.size(); ii++); }' u3 a+ L! q0 V4 u
  30.     {
    * Q; x- w1 w! i
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    0 a! u3 a/ `( Z/ g- E3 o7 C

  32. + ^& v/ n( u8 _' @% ?+ i
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
      r* g/ o( H/ d
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);3 i% q. Z% z. C: M
  35. 7 m6 x( z( F  D3 Z5 M
  36.         if (theMeasure->Area() > bigArea)
    / Y8 p; @8 j: g1 g
  37.         {( g; |1 X% ?2 ^; P
  38.             bigArea = theMeasure->Area();
    # D1 f/ t6 p2 y
  39.             bigFace = theFaces[ii];8 R. A, K8 V" b
  40.         }
    + n; Q9 X9 _2 d& e. t5 V; x
  41.     }) h: v# N  ?+ r9 S7 M4 M* x

  42. ) z" t7 l* P: q2 g; @5 x
  43.     return bigFace->Tag();
    - C: G( c5 T/ N$ i
  44. }
    $ G8 r; O9 n$ y4 Q1 E: ~9 W' i
复制代码

+ E  Q& ^; s! P, A- l7 ]) l, A# r5 l- }" L, ?

7 [! ?, S. o5 Y3 B+ x( 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二次开发专题模块培训报名开始啦

    我知道了