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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x
- a- z: ~, n4 ]
NX二次开发源码分享:查找体中最大的面积: i. }9 I1 w% h3 D6 a/ U
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
# N! z5 u0 ?0 V1 i' G/ L, r# v# G7 i: g% S5 V3 R3 b5 N
$ B5 u4 I1 A3 X; d1 V+ `/ c: U$ q
  1. #include <NXOpen/Session.hxx>
    ) O; q' @" m- j; P$ p1 m8 ?7 j
  2. #include <NXOpen/Part.hxx>
    ! o6 o  R4 J6 h/ w9 w" N, z
  3. #include <NXOpen/ParTCollection.hxx>2 F' D% V) z! O2 @1 p' q, `
  4. #include <NXOpen/MeasureManager.hxx>% S/ G# ]% K: S: X
  5. #include <NXOpen/MeasureFaces.hxx>
    $ ~. ^  D# E) M+ U
  6. #include <NXOpen/NXObject.hxx>/ i( f7 o+ Y, N9 E  w) a' P
  7. #include <NXOpen/NXObjectManager.hxx>
    & ^, l" U; z. [* o$ b/ w3 U- `
  8. #include <NXOpen/Body.hxx>
    3 z( F' C) H, e  V
  9. #include <NXOpen/Face.hxx>+ i0 @5 R- U- I- i5 ^& A
  10. #include <NXOpen/Unit.hxx>- K( i  ?6 v# J9 d; [8 i
  11. #include <NXOpen/UnitCollection.hxx>  E7 K4 r( c- t/ u" S1 n
  12. using namespace NXOpen;% x0 U- a, {) k; n& e* w9 C

  13. 6 V" K% O, B/ v* d- V+ J; k0 Q$ h; b
  14. static tag_t ask_largest_face_interop(tag_t body_tag)' H* ?6 Q5 {& ^7 K# H) M- u; {( p
  15. {3 U5 e% X/ ^( w/ i
  16.     Session *theSession = Session::GetSession();
    , u% U2 N$ p/ j5 v+ R  U' p5 c

  17. & P  |8 H6 }( Z1 V, {$ A
  18.     Part *workPart(theSession->Parts()->Work());
    + m  b- ]5 ^5 L1 j1 k# f8 X

  19. ' V- G6 b7 j, J" a9 t, _  {
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");4 `$ {8 }3 q" U$ N+ r( b( n4 N
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    8 R1 b# P7 ]: h0 L
  22. & j7 L5 `! g3 ~! y8 N2 l6 R/ x" Q' @
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));# `: G, [: f/ x* g
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    / m' E' }; J' q0 l( D) r' N/ X9 j
  25. & V1 j. _0 s4 u3 k
  26.     double bigArea = 0;+ A, H" ~" f8 @
  27.     Face *bigFace;7 }+ f$ A& c/ j; w& X% ]
  28.     std::vector<IParameterizedSurface *> theFace(1);
    / G: `7 F" c0 b' U3 i2 B1 v9 y
  29.     for (int ii = 0; ii < theFaces.size(); ii++), l* U; F" v; m+ X0 r
  30.     {
    " S1 f3 m$ |0 Z. h/ r1 o
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    0 }9 V- s( g! p: X$ C+ G
  32. 6 D% z; C+ e$ M: ?  t4 k% a5 `
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    " O8 z. p# x1 d6 }
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    & X; S% I- H, p6 s# X: g
  35. . h* K! b' b- R3 C) D
  36.         if (theMeasure->Area() > bigArea)' `5 Z, W* d8 {: b& B- |4 O; r
  37.         {9 @" \6 x2 b& d6 h& W' z2 f
  38.             bigArea = theMeasure->Area();
    4 t, B9 |( J& Z; N$ a# Q* G
  39.             bigFace = theFaces[ii];
      J( d, L) J6 Y# L0 P- m/ ^5 S
  40.         }
    % K0 M6 h8 X0 g  N' L3 s
  41.     }
    9 b! \% n# G, ~2 M2 i- L* G8 [
  42. - n4 h+ i% c5 T5 R7 X) U
  43.     return bigFace->Tag();8 J" l# ~# Y- ~' n8 g6 y& j
  44. }
    9 N5 m0 _1 d9 K7 b3 {6 f9 R$ |! ^
复制代码
1 n) n# V% ?) b8 V* V

5 a8 t# `; P6 E" [
3 ~  ~! `. \2 l+ m2 c1 U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了