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

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

[复制链接]

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

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

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

x

; O. y% w/ n% e/ G, iNX二次开发源码分享:查找体中最大的面积
: g: }$ R% T; v; ?2 m通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
$ r& s8 h; R9 {6 E9 [& D' I! o4 G. w8 P5 x7 u+ G+ }! b$ _

5 s; ]8 e3 z8 ~* ~6 g! m
  1. #include <NXOpen/Session.hxx>
    ! f8 L9 Q/ g. u. m  O
  2. #include <NXOpen/Part.hxx>2 _- X, t' C/ O& @8 A
  3. #include <NXOpen/ParTCollection.hxx>8 T( Q7 O7 Y" e( M9 {5 K
  4. #include <NXOpen/MeasureManager.hxx>" O! a+ s" M5 e  B3 o& w
  5. #include <NXOpen/MeasureFaces.hxx>
    ! W- E" U' f) i5 N7 e4 M
  6. #include <NXOpen/NXObject.hxx>& G2 T+ o5 L. E6 K2 u" L
  7. #include <NXOpen/NXObjectManager.hxx>
    " j0 N$ D2 H5 H$ L$ D9 [; Z
  8. #include <NXOpen/Body.hxx># m( K, G- q6 J3 P3 z1 Y& Y' ?
  9. #include <NXOpen/Face.hxx># k) M/ E! P. [; B1 X$ `
  10. #include <NXOpen/Unit.hxx>! V$ M, S3 Z* E) F: `
  11. #include <NXOpen/UnitCollection.hxx>2 `0 g5 U/ q* p' w3 W7 t2 C
  12. using namespace NXOpen;9 Q  @, H2 L$ I

  13. ' S: o$ _" B8 |' r* H8 _$ c
  14. static tag_t ask_largest_face_interop(tag_t body_tag)5 s/ l( t8 X5 Q& Y! T1 H
  15. {
      {- T2 i2 v6 `' C2 @# Z7 ]
  16.     Session *theSession = Session::GetSession();
      k) {% W6 x# V/ k
  17. 6 w+ I$ c. T& i" D* _: \+ P) w
  18.     Part *workPart(theSession->Parts()->Work());9 H, {+ ?  K* L

  19. 1 }) ?( y2 P; `4 W2 U! R, i
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    - K# E1 e+ K# q. S7 c1 a
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");0 u' q. k; ^. J; K$ S" K
  22. 2 u( W- Z: R9 t& t! f7 n0 _# b
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    $ u9 I5 Q" J+ O
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    7 g3 c8 t8 `# L4 u! x

  25. $ T- u! r/ Z3 Q& [2 Q' ~) R- r
  26.     double bigArea = 0;( o6 H  z3 ]. v* Y
  27.     Face *bigFace;# y6 C! V. o, L. B( n1 Y3 E. c
  28.     std::vector<IParameterizedSurface *> theFace(1);, A3 v) b8 H4 h4 Z( x
  29.     for (int ii = 0; ii < theFaces.size(); ii++)5 A* K: I  L" n  i" a- Z# W
  30.     {
    $ @$ A, z& [  B/ F3 ]+ i( u
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);- w0 P: T- N5 z# t9 [
  32. ( N( ~8 x# P) Q
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->1 t! D2 J6 f( m
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    , o  e7 {, w& P6 r5 \9 x# A

  35. 7 w; X; |( ?' l! z
  36.         if (theMeasure->Area() > bigArea)
    * O1 g% e% O# n. e
  37.         {( ?/ D7 v* ~' l6 {0 i
  38.             bigArea = theMeasure->Area();
    & r' a+ O4 u9 c& r! c3 y
  39.             bigFace = theFaces[ii];: Y( Q: `5 ~& y
  40.         }
    7 Y0 h$ p0 ]+ A& P  W; j# y
  41.     }
    4 S/ x1 Z# \) }$ s; r9 z
  42. - R) D4 }/ `6 Y  i" D
  43.     return bigFace->Tag();$ n1 C6 |/ w! t2 C
  44. }
    8 N7 `0 G# h5 t$ Q  Q3 X* u1 g
复制代码
0 H8 T2 P, Z% i6 i% a

0 {9 m! S0 Y) F4 r7 a! J: R& {( Y) q8 h* y" e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了