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

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

[复制链接]

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

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

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

x
! o' a! P# l1 G# Z: f2 t, S+ q
NX二次开发源码分享:查找体中最大的面积9 ?& N1 f6 I1 G# V+ @7 N
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
$ @  Q% U' p/ T7 r
: h" ]6 B& S& J$ y4 Z& I2 l4 f# p3 l5 B
  1. #include <NXOpen/Session.hxx>
      Y. x0 w+ b  m, l
  2. #include <NXOpen/Part.hxx>2 J$ V% G9 g9 z/ U8 H
  3. #include <NXOpen/ParTCollection.hxx>
    # v6 g; |* c& H. j& R. I4 W
  4. #include <NXOpen/MeasureManager.hxx>
    ! U0 z9 O- J$ X7 W; c8 K) j
  5. #include <NXOpen/MeasureFaces.hxx>
    2 W! b( R! i' r2 I/ q8 o6 H, ~, k
  6. #include <NXOpen/NXObject.hxx>7 x6 U( @( ], S! H& r# D; `
  7. #include <NXOpen/NXObjectManager.hxx>/ L+ L) f  F; K2 }! _
  8. #include <NXOpen/Body.hxx>% H5 I9 m  @: X5 Z' \6 z
  9. #include <NXOpen/Face.hxx>
    " t( }" Y) F2 C8 ^, K& r* I" n
  10. #include <NXOpen/Unit.hxx>7 }, ?! k( l5 K( W4 |5 {
  11. #include <NXOpen/UnitCollection.hxx>0 D  ^+ N- r1 L6 l0 h: a
  12. using namespace NXOpen;
    ) ?9 t  D, R! H" z3 s* a# i$ d

  13. ( j( V3 ?! V" `* b" t4 A0 |& x1 k
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    , Y8 m* k. f# q8 k
  15. {: k) m& y* o' S% \  S$ B9 \+ }
  16.     Session *theSession = Session::GetSession();9 O# x- s" T' \: K

  17. ' a+ r5 M$ B6 \0 ]- [) l& U0 @
  18.     Part *workPart(theSession->Parts()->Work());  G3 ]( w0 r( Y

  19. $ r; W% u2 n2 Y, n% Q- w
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");1 @  f6 S6 Z2 g- P( H) J
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");/ ?+ s7 k. F8 R. A' V, n

  22. / f5 q5 j0 H. @+ z% ~4 f
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    4 d6 G. R: d+ ?- b: Z% }' A; J! S
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    0 H4 \' X& i) `8 M$ {, y% e$ F

  25. # l. B# a# U# S' N/ N' q
  26.     double bigArea = 0;7 D+ v) M/ W- n; r
  27.     Face *bigFace;, P$ O. z7 r9 X7 ~$ P. S/ ]2 c
  28.     std::vector<IParameterizedSurface *> theFace(1);. p, x  F/ w- x5 q2 f, W  ?# i1 w
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    ) N2 r, d6 x" d6 E7 v& z2 c& p
  30.     {7 N, A3 h- H5 p( J$ v9 J
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);* d* C5 s5 Z( o$ {' x

  32. ! M; K( R" b3 Y4 G2 Y  N7 J1 k# V1 `6 X9 [
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    ) W) F- M7 n. U1 B, u
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
      H) P1 p+ l9 j( _8 E$ A) T4 s$ F* |

  35. " h1 a4 E0 P5 o, }4 @# B
  36.         if (theMeasure->Area() > bigArea)6 f: h- t$ F8 l
  37.         {* G2 M! x8 F* B$ z* |! \
  38.             bigArea = theMeasure->Area();
    - f* v; Q. h+ N" S8 \
  39.             bigFace = theFaces[ii];. I: {8 C1 T  ]' t
  40.         }% e4 Q! ~8 {  o: I! V6 H
  41.     }
    6 n/ q& K) y. R( S. X$ \% d: F# S
  42. 3 g9 A# r$ r: A% R
  43.     return bigFace->Tag();9 [# {' l$ f3 {' G
  44. }
    , ?0 ]8 `' W* V6 h6 o3 B
复制代码
. x% z6 M: n' t

& ?+ n( B8 j! {" S. O* B, Y' t5 m$ B6 G  z8 Z, r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了