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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x
( c! U9 C, B4 N5 K: w7 B
NX二次开发源码分享:查找体中最大的面积
; Q7 f/ g: J( j4 o通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询. K' t. T: o9 h! T, v" p- b& z
, ^/ W) U: m( P4 }8 g( P8 c
* j! _4 Z! U. J$ u$ ~
  1. #include <NXOpen/Session.hxx>
    & w% I  m% g+ Y# W: y$ `9 e
  2. #include <NXOpen/Part.hxx>
    8 m+ D3 ~7 ~. W4 g
  3. #include <NXOpen/ParTCollection.hxx>6 t- x. F+ A7 E  U7 V2 j. S
  4. #include <NXOpen/MeasureManager.hxx>) ^: N0 W( g% i- `* }9 b
  5. #include <NXOpen/MeasureFaces.hxx>- b0 x/ Y% P9 ]# V$ y9 _) f
  6. #include <NXOpen/NXObject.hxx>
    0 `; ?. I/ F! t; O, {
  7. #include <NXOpen/NXObjectManager.hxx>
    3 \  L5 B2 s+ @1 b  O2 V
  8. #include <NXOpen/Body.hxx>
    # D$ v- O. s: s# p; Q, g! M
  9. #include <NXOpen/Face.hxx>3 {0 J7 L8 L5 j
  10. #include <NXOpen/Unit.hxx>
    . D5 h" h& C3 P  t) z. e, G
  11. #include <NXOpen/UnitCollection.hxx>
    , |2 w6 r& T, H/ v' w3 j
  12. using namespace NXOpen;& [/ Y/ E! V+ x% |0 E% _* w# [, ?! u: r
  13.   e: d* m3 m5 g1 P
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    * P# q. I' b2 C0 @. {
  15. {5 A" i% Z6 J) ]+ E. Y6 Z( [7 O
  16.     Session *theSession = Session::GetSession();  R9 T8 }- G9 x# X

  17. ! E( {* J# ~, F- f  d; `
  18.     Part *workPart(theSession->Parts()->Work());& H( X& b5 s: O* B

  19. ; h8 i& D1 \8 \5 d
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");9 ^+ ]9 l5 s* [5 ~7 l
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");% R% j& d1 ]" H
  22. ; |" B* L. ^7 r$ U2 e  l' x
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));5 `5 Q2 ]/ @. q! L. y( d
  24.     std::vector<Face *> theFaces = theBody->GetFaces();- \7 y# [" A  k. [7 v' j
  25. 2 `& l3 p& G6 u  i9 p2 o! F. ]
  26.     double bigArea = 0;
    ; k# M/ U% v$ P
  27.     Face *bigFace;
    ; N* T! J. Z2 q, ^/ I! v* d
  28.     std::vector<IParameterizedSurface *> theFace(1);( {5 s! g$ k4 [) u7 z! W
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    : h, K0 P+ m0 P0 I& k! O& z
  30.     {
    / L. W- O) M( q0 g7 ?2 U
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);/ Q1 H2 g# H$ t& v8 m" ]0 `

  32. ( A8 b) A! e# E' b) m
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    3 L/ Q/ X" x2 G% _, G& D  D1 y. G$ \
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    0 c2 m6 H0 X6 t8 j/ x6 y( B; H- M  s

  35. / B% J8 k5 H8 j% B
  36.         if (theMeasure->Area() > bigArea)3 P% w7 ]% t) S7 p! W/ b, s
  37.         {8 |' D! z5 V. F3 n# Y/ x
  38.             bigArea = theMeasure->Area();! n# w. g! r: _) P3 K
  39.             bigFace = theFaces[ii];: }8 ?! Z/ |2 [+ P+ }- i8 ]
  40.         }$ D; k8 X4 M( x9 O+ ^  Z
  41.     }6 y$ z* c. `3 T) u8 S$ G* g5 V/ H

  42. $ U9 f& U( J" X% ~  N% U
  43.     return bigFace->Tag();
    3 q4 K1 i) q$ }% I: P
  44. }
    , m% @6 e1 T: e& F5 P0 c
复制代码
. i2 d" m% H+ J. K5 M& a) E8 r( j
* _4 e4 ?4 i0 h8 N/ H: t: V( c

, R. I  R4 c3 S7 F; p- A4 V+ T$ I
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了