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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

- i( d  k0 r* ^" hNX二次开发源码分享:查找体中最大的面积* Y- i( [: Z9 P% ~& x  U- g( M4 _8 W
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询, ?- P+ }, w* K2 f+ B# q% c

# [. N, ?% m: Q4 V+ U7 j6 x8 S$ y6 V9 L, q9 t; M1 J8 j  f) P
  1. #include <NXOpen/Session.hxx>% O# y' d$ ?' b' y& O& v4 E! t* u
  2. #include <NXOpen/Part.hxx>
    & X. |+ I  R. Z# M( J
  3. #include <NXOpen/ParTCollection.hxx>
    6 p3 n5 d: s9 Y3 `& G- j: a7 j
  4. #include <NXOpen/MeasureManager.hxx>5 q2 m; k  l1 W: h
  5. #include <NXOpen/MeasureFaces.hxx>! k5 }# r  w+ f' m' x5 ]4 N
  6. #include <NXOpen/NXObject.hxx>
    , A) T9 n( B$ q
  7. #include <NXOpen/NXObjectManager.hxx>
    / c5 E1 w" _" h% _2 l( ^
  8. #include <NXOpen/Body.hxx>
    & n0 S5 \6 I) L
  9. #include <NXOpen/Face.hxx>9 b% m( |8 U$ N: I, J' Q9 |( h
  10. #include <NXOpen/Unit.hxx>
    9 V+ \3 _5 Q8 F$ e8 e0 Z& Y2 a5 O
  11. #include <NXOpen/UnitCollection.hxx># ?& i% y. j4 H' R/ z: ~  i
  12. using namespace NXOpen;9 @* d" |0 a$ P. h/ [* d

  13. 3 E  L1 a+ [7 F6 `) w  X
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    - y8 p' N. S" T+ D8 p8 x  W1 K5 [
  15. {
    # f6 b: v# q) B: H$ G* L
  16.     Session *theSession = Session::GetSession();. u8 n) b) R, h3 {- j& a& V
  17. ' t, W- e5 W; ]2 l) a4 X
  18.     Part *workPart(theSession->Parts()->Work());
    # u1 `/ R5 q1 m1 N% v  s5 I/ o3 R" U+ X: a

  19. / O" o+ W; q, G  G4 Q
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    / i* _) E( k" }
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");. ]8 L" |+ k' v0 z  h

  22. + A; E0 e! {6 m& X3 D& }
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    * D% `; `  w- }; S
  24.     std::vector<Face *> theFaces = theBody->GetFaces();1 w' s6 t0 ]5 H' e% c8 `

  25. ' |' p  l3 Y9 w" \) l
  26.     double bigArea = 0;
    : [7 Q( V" g: E
  27.     Face *bigFace;, Z9 x9 |$ F2 y4 g8 K
  28.     std::vector<IParameterizedSurface *> theFace(1);
    $ O* Q: `$ B) X% p  l: r
  29.     for (int ii = 0; ii < theFaces.size(); ii++)9 j+ R" ^" S2 g; n6 B
  30.     {
    - v: E9 i4 ^# {' ~
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);1 U% p( Q5 }6 ^% r

  32. " Z, S0 @9 b# ~
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    1 R2 A- u5 v( H" w: ?  j+ d
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    3 S0 ]3 {+ p6 k) j+ A
  35. & H6 C0 K+ J4 I, t( j9 [2 g
  36.         if (theMeasure->Area() > bigArea)6 f6 p# D% Z+ [" H
  37.         {) @) s! J- ^7 X7 H
  38.             bigArea = theMeasure->Area();
    " i: |% T& E3 o* G1 Q4 k7 R7 ?" ]
  39.             bigFace = theFaces[ii];
    4 B8 m' ?. f5 Q+ v  Q. Y# R
  40.         }
    0 q3 _  u4 ~5 l% V5 \
  41.     }
    9 p' t4 x4 z4 v3 N

  42.   P& w3 ?4 y. X+ a3 |
  43.     return bigFace->Tag();* W' |% ^+ M: [7 K; r
  44. }
    * H; c& P- S0 t% P
复制代码
& m, s3 T8 @! U
  B( x( ^& f* `& T+ A+ g/ S% G
& I+ l% ]4 z5 @8 X
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了