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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

# `  b2 ~( E8 D" cNX二次开发源码分享:查找体中最大的面积
+ N2 v$ l' ?# O) w& `; D通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询. s1 w+ T% t3 ~5 H' R& s

( s' M2 i# q. p# l  ]
9 w7 a7 W# m$ I
  1. #include <NXOpen/Session.hxx># ~$ U# ?; `7 d  \+ c
  2. #include <NXOpen/Part.hxx>
    - _) |9 d+ j9 a6 Q" l1 K' o9 C
  3. #include <NXOpen/ParTCollection.hxx>1 z- P9 K3 R& e; {5 I; \  y: U
  4. #include <NXOpen/MeasureManager.hxx>
    2 r# K6 T- R7 j; F, m& o0 A
  5. #include <NXOpen/MeasureFaces.hxx>$ Z) F, K0 S; W$ y
  6. #include <NXOpen/NXObject.hxx>0 H! P6 x2 @$ X
  7. #include <NXOpen/NXObjectManager.hxx>
    " y* [9 ]) N7 n" T0 H* c6 n. v
  8. #include <NXOpen/Body.hxx>( v; o- l" ?* o- e3 b3 f
  9. #include <NXOpen/Face.hxx>
    6 u% h( n8 ~, n6 m. N9 ^1 Z
  10. #include <NXOpen/Unit.hxx># `; e4 n: K5 J( J9 y- z7 i8 |, c3 _
  11. #include <NXOpen/UnitCollection.hxx>" c6 l: e3 N6 s$ P& i: G
  12. using namespace NXOpen;1 h2 N* `5 w6 ~( I1 S, f+ t

  13. ' u' D& t) o, F$ {7 T! o
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    % f9 L; v* \3 h4 p3 C8 M
  15. {" i) n! U( Z7 D3 p) H
  16.     Session *theSession = Session::GetSession();3 Y- q$ A/ ?- p; _" ?( t4 b

  17. 3 Y! ]3 T5 e9 t/ |
  18.     Part *workPart(theSession->Parts()->Work());
    ; K/ l8 x4 B7 J: c$ j$ {+ E( u

  19. 3 D) y# Q1 [7 ~' R0 ^- @
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    & e) U* q& j$ ~8 s& O/ W
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    # b6 i; z- \5 g7 e  D/ x# t
  22. ) A  V; _' K7 O9 q& L* J
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    " n& L* {* p3 \! ]/ e6 }" r4 H2 {- Z" Q
  24.     std::vector<Face *> theFaces = theBody->GetFaces();0 D! t/ \. K- r, `, z
  25. # H) e. X5 R- V! l5 q5 b7 C2 f
  26.     double bigArea = 0;
    ( a7 r" R$ `1 ]4 [
  27.     Face *bigFace;2 `: b7 [5 s5 a' o
  28.     std::vector<IParameterizedSurface *> theFace(1);
    - P. Z. E/ r, T! g
  29.     for (int ii = 0; ii < theFaces.size(); ii++)9 G* a" _* N; ~
  30.     {
    / [6 S6 Y$ r3 H' l  _! }9 ^
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);" D( }# G3 O2 m) l, |- e

  32. 0 K# C* j+ B# q9 \2 v, b
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    2 _) N: r$ l4 `  D* {
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    * ?8 r3 D1 v; S1 ]( d8 H

  35. : m4 j' Z" @2 ^" h8 Q6 r* a5 c
  36.         if (theMeasure->Area() > bigArea)
    4 c6 \9 Z& I) m/ N5 S' E6 p6 \
  37.         {
    5 A1 H, [* @) L2 x8 l% ^- J+ {
  38.             bigArea = theMeasure->Area();& J6 V+ ]$ i2 ?1 J9 i4 m0 y
  39.             bigFace = theFaces[ii];
    ( |) T& Y! _" r, [! a6 T4 i& q( O
  40.         }
    0 R# ~* L9 y4 }- `! d. h. {& o: q1 @
  41.     }) l0 T9 Q2 A% I( f; q: _' N! K

  42. ; f" Q6 ?+ N/ _2 d- u
  43.     return bigFace->Tag();
    / F8 q% W# C) q4 T  u; V( P
  44. }
    , W8 Q# N; e/ |; g$ [8 t9 E
复制代码

% f9 a. x7 e; P6 x0 }( n8 l. ?1 \9 E' l9 M& y) T
% _+ s6 b+ Z8 K. i
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ 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二次开发专题模块培训报名开始啦

    我知道了