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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x
. w: U6 N, q* }7 @2 x. E
NX二次开发源码分享:查找体中最大的面积
# i0 t* s- S4 B; n5 e: E通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询& a/ L( X) c) n$ c  ~6 i' ?

. e3 y( T, v% e: {6 i. H- u9 B0 ~# B9 \( V( P9 `3 G
  1. #include <NXOpen/Session.hxx>( R! J8 Z: n+ e) N  {+ u5 ^3 {7 b0 O
  2. #include <NXOpen/Part.hxx>
    ; v$ r$ k( k# d& C* w/ `
  3. #include <NXOpen/ParTCollection.hxx>
    ( O2 |4 e' U1 A* v7 _3 ~
  4. #include <NXOpen/MeasureManager.hxx>2 g) F: W# n4 T( {; O7 E9 `7 R& u
  5. #include <NXOpen/MeasureFaces.hxx>/ Q! E% e$ Z( {- s5 I) A
  6. #include <NXOpen/NXObject.hxx>
    ( _$ \8 R2 A# c, O; f3 C3 K/ V4 W+ n
  7. #include <NXOpen/NXObjectManager.hxx>
    ! B5 A6 v/ Y% D& Z: Z
  8. #include <NXOpen/Body.hxx>) h. a1 W0 D' V; k; M/ ?/ j/ @
  9. #include <NXOpen/Face.hxx>7 ~7 k$ D! f; j6 x
  10. #include <NXOpen/Unit.hxx>
    : P3 P% ?. E% L% T# X9 c: g
  11. #include <NXOpen/UnitCollection.hxx>" {7 M, O- \0 |& T& T( L+ r/ R& q3 g
  12. using namespace NXOpen;
    1 V$ P) T1 E# j4 }8 O
  13. + K$ M  `, t  D9 {
  14. static tag_t ask_largest_face_interop(tag_t body_tag)9 Q5 P; c( ~/ n' r* G
  15. {
    - b3 }! Q3 \5 e6 Z: I; R6 z: q/ ?
  16.     Session *theSession = Session::GetSession();
    " Q% I0 K5 |5 c( {0 g

  17. ) C2 J* x7 o, p; t# S! D( X; e( c. r: N( O0 u
  18.     Part *workPart(theSession->Parts()->Work());
      P. w& G: A, c2 ~& z* L( s

  19. ) M$ S% F5 t/ w" `% O5 y5 \+ [
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");8 S! \! O8 v: k0 `: L. N# S
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    3 [. m: m' N: x' Z0 C2 }8 W  x

  22. . @% G+ q0 l7 {& E4 w/ w
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));" R: R2 e/ r( h, Z% b+ P
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    ' q/ m0 z! e5 u

  25. - }! q' p9 `7 s' }
  26.     double bigArea = 0;
    + \1 N5 l  K* w: @7 ]
  27.     Face *bigFace;. s$ J# w3 Y% u
  28.     std::vector<IParameterizedSurface *> theFace(1);5 k+ [6 `6 u, L& b$ a8 b5 }+ v1 t% ^
  29.     for (int ii = 0; ii < theFaces.size(); ii++)+ A' s  z+ Z2 h% D8 _( o+ m% q; k
  30.     {; B5 |  B( T! x+ \
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);& k* y; d- k- M5 H, ]* P

  32. 0 r4 B( D6 D/ s1 X
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    * h2 M  L& Z4 X& T
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    5 i# N) ^3 l$ Q# l; w. v0 p

  35. 3 Q  s# o4 O9 n1 c% Z3 l( Y
  36.         if (theMeasure->Area() > bigArea)3 G6 m/ s) S  w/ H8 A
  37.         {9 Y+ E* i7 R+ w. z
  38.             bigArea = theMeasure->Area();$ U* s. r, b1 Z% B) t' [
  39.             bigFace = theFaces[ii];
    + i% U$ r4 O* ]- a' M& \. O4 _
  40.         }
    # c6 A6 g- N9 v- ], q2 O) M1 {1 a* p4 ^
  41.     }. f& A* s) z6 x, A9 _

  42. , M  @$ T- a& D' y- H8 R
  43.     return bigFace->Tag();) o' l& b  j0 ^: A
  44. }
    - t8 Z) ^- e* U- v
复制代码

2 E; p& L7 d, Y: s# ]+ \+ R/ ~) i5 C3 t% h7 p6 R

4 N/ |7 S7 y, X% M" A
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了