PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

3 q/ {: W* W, x7 I9 zNX二次开发源码分享:查找体中最大的面积
$ w1 z+ u% w5 {$ z3 x$ \" |- o通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
/ R) w, Z+ y  N5 m) f' T9 w
* _6 X1 D0 K$ f6 @: L, L* d+ Q1 C
$ t$ ^( a, u4 R  e
  1. #include <NXOpen/Session.hxx>
    * |2 l5 T1 Q; w! j8 d) _/ e& D
  2. #include <NXOpen/Part.hxx>
    1 N3 K# t/ R. z
  3. #include <NXOpen/ParTCollection.hxx>
      a- j! p5 N, {  V7 A) k
  4. #include <NXOpen/MeasureManager.hxx>
    % ^/ ]+ E6 g. x- g. s. @: ?# r1 {
  5. #include <NXOpen/MeasureFaces.hxx>
    6 C: y# D) v3 `% `6 u# r4 O3 k
  6. #include <NXOpen/NXObject.hxx>
    9 c' E4 n: e2 v! T% R' U
  7. #include <NXOpen/NXObjectManager.hxx>
    $ M- l$ u+ v  B. @' c9 m
  8. #include <NXOpen/Body.hxx>$ s5 _8 M# Y6 h
  9. #include <NXOpen/Face.hxx>
    4 L# ^: ?9 Y; q! W2 e
  10. #include <NXOpen/Unit.hxx>
    ' V+ E* b5 _) ^
  11. #include <NXOpen/UnitCollection.hxx>
    2 ]+ K$ r, g3 I7 a; ?
  12. using namespace NXOpen;* d7 w6 i2 K( Z/ n+ |$ ?7 s

  13. : @# V3 c/ d6 i2 s
  14. static tag_t ask_largest_face_interop(tag_t body_tag)3 K$ p9 Q- k8 R
  15. {: `8 p1 q* T; C5 y# d" K
  16.     Session *theSession = Session::GetSession();
    ' Y9 j4 g& c* V8 u2 p8 R* b
  17. * b2 p/ ]4 e; P
  18.     Part *workPart(theSession->Parts()->Work());6 _- T( A$ V6 ~/ J/ \+ G1 e
  19. ) ]- k, X# K0 {; e6 P8 L. e1 E
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    # N# G$ `1 e& E1 ?" k6 S
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    5 C+ l  R% n% x8 ?  A
  22. 3 g6 [- d: Z/ S- m; l: [; |3 p5 c3 ~- Y5 p
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    , b3 i  S1 |+ f
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    + k; c$ j4 D1 {! O1 q( e& V/ R" I# T
  25. + _0 l' `/ Q! U; C+ {3 ]8 C
  26.     double bigArea = 0;8 s; G0 k9 r8 ?
  27.     Face *bigFace;
    4 J7 s! Y6 T6 X1 T. W- {( U" F( M" E% n
  28.     std::vector<IParameterizedSurface *> theFace(1);; _: q; `8 D* H2 N) o
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    # I0 f3 G9 u. p7 w
  30.     {2 B0 M- W. i. E! x
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);/ b/ x. \9 w7 u. E) d$ j4 z
  32. 0 a9 D) g, M7 P* Q8 w* z6 M
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->7 P" B- j+ v* B% G; y/ d
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);/ [( T& s. V2 a' [' p
  35. , E" U$ ~, a; R' g9 C- l- h" R
  36.         if (theMeasure->Area() > bigArea)8 Q+ p& I8 ~1 T4 N
  37.         {
    7 F) c4 u2 l( Y& `1 P, j
  38.             bigArea = theMeasure->Area();
    4 h% l5 [$ w0 q: K9 `& s+ x) g
  39.             bigFace = theFaces[ii];
    . v' k3 }5 R/ p
  40.         }$ @# c# W" E. I, }, G( \+ x
  41.     }+ L6 i) B( `- d! o! n

  42. $ ^4 _0 x7 K6 }' ^
  43.     return bigFace->Tag();# \/ `8 x* U/ `
  44. }
    ; I! V+ m  C3 Y
复制代码

  e$ Q. M  V# c; q9 i* \7 U9 y9 L- b. N& P% J/ D1 C

0 M% O2 o! c  Y! k3 T: t- {- E. `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了