PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x
2 ^5 C: ?) A' @
NX二次开发源码分享:查找体中最大的面积8 T' V6 f' `; m* C) L; A6 U
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询7 i, G- W8 x4 l% U8 G
8 T. ~3 H5 ?4 h# C

& |# v4 C, ?2 g0 _4 _
  1. #include <NXOpen/Session.hxx>
    3 O- ^4 j( [8 s& t; p  p& S/ j: m
  2. #include <NXOpen/Part.hxx>
    - `# H. `2 K6 \$ ^
  3. #include <NXOpen/ParTCollection.hxx>! p8 ]1 {6 P: b6 V# h: a; q
  4. #include <NXOpen/MeasureManager.hxx>
    # R8 ^1 c% e# G6 z. k3 R, [- l. H
  5. #include <NXOpen/MeasureFaces.hxx>
    . ~$ M+ ]3 ]9 |. g% `/ ?
  6. #include <NXOpen/NXObject.hxx>
      Z/ a% s4 M8 Z, E6 z
  7. #include <NXOpen/NXObjectManager.hxx>8 ]3 _& e& d5 _. h( N5 V: q- Z
  8. #include <NXOpen/Body.hxx>
    ; |* Z5 }$ d& A6 c( x, A
  9. #include <NXOpen/Face.hxx>
    ' w# ]7 f4 S) N2 P: u* w
  10. #include <NXOpen/Unit.hxx>) X/ h+ e. K; c! e# `, F
  11. #include <NXOpen/UnitCollection.hxx>
    ; x( h9 t9 k+ L8 ^% R
  12. using namespace NXOpen;1 g( |, ~' J5 Q& j1 b
  13. 6 ~; `$ }. O6 S
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    5 n( ~6 |! D2 @% u5 E
  15. {0 b# j" F$ t  g4 }( Q& y
  16.     Session *theSession = Session::GetSession();
    1 r9 x* j4 u0 I( j. Q2 T4 ~1 K5 |7 A
  17. : r& A7 {/ R1 @0 A1 b
  18.     Part *workPart(theSession->Parts()->Work());
    , \8 |- z3 K- U" X

  19. 6 E6 `3 G$ S* ]7 U, f( [" ^+ d
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    * J7 j8 Q/ ~9 j" b8 j$ a# P/ n
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");% v: g4 D  U& ?0 M0 U

  22. : M' r9 z2 }) Q3 r! X4 H- j
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    / V# Q% L0 @9 k
  24.     std::vector<Face *> theFaces = theBody->GetFaces();$ `* G2 W. r. }8 ^

  25. , t. v/ c. \4 W  d6 F3 n- q
  26.     double bigArea = 0;- j8 I4 k2 N& `
  27.     Face *bigFace;- c" F$ S, k8 B, j# ]5 Z. G0 c' c
  28.     std::vector<IParameterizedSurface *> theFace(1);1 Z/ ]0 M  D4 R; x) G
  29.     for (int ii = 0; ii < theFaces.size(); ii++)+ H/ ]0 {% M, @. ]4 U3 U
  30.     {. B0 I8 B& n3 l8 N# I6 I4 |7 ?4 s
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);6 {8 W1 e- P! J7 ]& g; o

  32. ) p' Z9 P# _7 D: ?8 L
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->! V! N0 [$ N3 @
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    # o# G/ i) _. q1 x0 o5 |

  35. # S' J6 b: F/ d8 C2 c3 _) D  t
  36.         if (theMeasure->Area() > bigArea)& ~/ V6 G, Y2 I1 c
  37.         {
    + T( X8 p. E7 x4 o/ p9 l
  38.             bigArea = theMeasure->Area();( u7 R% y* l! z; E
  39.             bigFace = theFaces[ii];
    ! z& n/ M9 w& E$ R# }& u. [* Y% L
  40.         }2 q( |" }" h/ [" O) i
  41.     }
    ; }( X) G7 Y4 u4 Z1 w! \/ ?9 H
  42. 5 H$ k$ A; n, |& A! |
  43.     return bigFace->Tag();
    * w% Q6 k# Y9 n1 {
  44. }
    1 F* Q9 m$ R% K+ X3 E6 }
复制代码
% n5 ?4 L$ M7 O

% L" e/ ?0 {9 X, G# }% i. d+ [/ ]) D8 g3 i7 D+ k7 P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了