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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

7 t9 ]& |" b" d$ i* LNX二次开发源码分享:查找体中最大的面积
7 f( g; x3 ^: A! M% k  i7 A通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询9 s) h' _& s# K( H/ t, F- {6 b& g

4 U! [# X* ]; I- j& O1 V8 w
; a: Z3 K  i) e' G  a! g
  1. #include <NXOpen/Session.hxx>% ^# I* {2 j) t3 ]0 ~( s* f$ A
  2. #include <NXOpen/Part.hxx>2 H0 B0 Q0 `# p6 L
  3. #include <NXOpen/ParTCollection.hxx>
    % Y: f) V4 p  S
  4. #include <NXOpen/MeasureManager.hxx>
    0 O* c( ?7 p" [6 u2 r9 ~
  5. #include <NXOpen/MeasureFaces.hxx>
    4 Y: u* ]8 v; o* f
  6. #include <NXOpen/NXObject.hxx>2 Y8 e/ f0 E3 I3 H) K: q$ Z* X/ s. b
  7. #include <NXOpen/NXObjectManager.hxx>
    0 e  |# A) c+ |$ T+ c9 ~
  8. #include <NXOpen/Body.hxx>: j% u5 |! f/ b0 e( ^0 m1 R
  9. #include <NXOpen/Face.hxx>
    5 B- V3 ]+ ?  W& C4 F$ ]" n+ P
  10. #include <NXOpen/Unit.hxx>
      ]9 m6 b6 z6 q
  11. #include <NXOpen/UnitCollection.hxx>7 [" t' _8 ]2 l7 y' w- c. B$ \; j
  12. using namespace NXOpen;/ O7 P- w: B' h

  13. # P$ g6 J' J5 n# N, f& e8 Q( d
  14. static tag_t ask_largest_face_interop(tag_t body_tag)( S/ _* K* ^3 _* Z8 R
  15. {
    , F; `0 `4 M4 V! B. }
  16.     Session *theSession = Session::GetSession();
    2 Q1 U* U4 c( z$ W
  17. , ~: t$ E3 z9 l) E1 m1 B& n! P
  18.     Part *workPart(theSession->Parts()->Work());* ^/ j7 R0 o4 H& F  U6 {* W
  19. ' i  W5 b4 ^- s0 n
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");! v1 s6 Q& z# z( ~* W; v3 l0 v3 m
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");- t. ?9 I5 m' F3 Y
  22. " u# y( @1 I, m+ m+ A% c
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));8 a/ z3 u) N; n/ r( {4 l
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    / y/ R8 D1 V: p( `4 P8 _- A9 }
  25. * \! Z9 P# q! ]3 U
  26.     double bigArea = 0;
    ) b) \. }; B& Y) X
  27.     Face *bigFace;! q( R# O* v& ^% ~
  28.     std::vector<IParameterizedSurface *> theFace(1);
    + k9 v1 W4 _5 H2 A+ m% d
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    3 ]! v) N5 B  a0 y$ {, m1 q& o+ H4 C
  30.     {
    5 J2 U5 P# F3 c$ O, n) m& e7 J9 ?) A( Q
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);5 A- S( S) D* E" Q! p! o! _6 e8 L0 @

  32. ! d7 S3 U7 @/ u# v) F, S7 v0 M
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->7 Q& E5 z$ \: E/ W+ x
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);5 |% V  R# S( ?8 y

  35. . ^: a) f) [7 Q6 Q7 v6 p# B& p
  36.         if (theMeasure->Area() > bigArea)
    1 z+ m& T' s9 X4 I
  37.         {
    9 k% ~( ^+ m) _1 m, F- ^* P9 U$ e
  38.             bigArea = theMeasure->Area();
    ' }  w* V5 J2 o# F. a
  39.             bigFace = theFaces[ii];
    4 I/ L- s1 k/ X2 x# b
  40.         }4 U( f$ n- s6 r$ d
  41.     }" k2 F5 O! F/ \+ ?" U
  42. 1 Z4 l2 u% L2 l3 D& z: F) o
  43.     return bigFace->Tag();- v/ m8 P' M8 L2 L
  44. }0 ?' P1 x/ k7 Y1 k. N
复制代码

) [9 [: _) z  t% y1 o% Z* V& O4 c/ @5 X" q

& Y6 C7 z4 c) E0 Q# {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了