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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
发表于 2014-11-4 20:54:40 | 显示全部楼层 |阅读模式

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

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

x
7 s8 l1 G0 @) t& r/ K( ^! o' _! D
NX二次开发源码分享:查找体中最大的面积9 x- M, `( _' E$ g1 j
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询; [5 R7 {) _  U$ M, J
6 {: ]# [/ @7 b( n% j8 [7 @
3 }, y, E: L3 F  i
  1. #include <NXOpen/Session.hxx>5 e+ ]' A! {" J4 C
  2. #include <NXOpen/Part.hxx>  m; z, n8 f% V2 V4 }5 R
  3. #include <NXOpen/ParTCollection.hxx>( R5 A9 s2 r4 M" J$ P3 D0 K
  4. #include <NXOpen/MeasureManager.hxx>
    * V, ~  h1 s5 S( v
  5. #include <NXOpen/MeasureFaces.hxx>* b2 e; t/ e$ |
  6. #include <NXOpen/NXObject.hxx>3 a" k, K& \8 w) y/ m
  7. #include <NXOpen/NXObjectManager.hxx>
    % V4 K, B* d; U8 r/ C
  8. #include <NXOpen/Body.hxx>
    6 q1 u4 Y/ q1 r+ `% t; H+ ?# r
  9. #include <NXOpen/Face.hxx>
    0 C6 W: v. w- W: h! `8 i
  10. #include <NXOpen/Unit.hxx>& r8 S& u9 [" _/ z- p/ i! A: B
  11. #include <NXOpen/UnitCollection.hxx>$ u4 B1 Y: \: z( R  b5 y% ?
  12. using namespace NXOpen;
    4 n  v- ?' w0 n! {9 `
  13. ! ~/ ]0 k5 x: U
  14. static tag_t ask_largest_face_interop(tag_t body_tag)# \6 J) ~7 Y8 k9 {
  15. {
    6 U- D& |  e# o6 b* V" [$ W
  16.     Session *theSession = Session::GetSession();4 u: y4 B7 E9 S7 r8 m0 [

  17. 3 v/ N2 ]0 L! `
  18.     Part *workPart(theSession->Parts()->Work());" D& M* e/ l8 H/ M% B. R2 C; ]
  19. ! {! o' K3 s- A8 [+ w" p
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");3 l6 X  m$ V5 ?' g
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");0 u7 C7 {5 U* f7 J1 [  c

  22. 3 G: [. m# _( Z( z- y
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));# Y+ d6 D1 t5 b+ _3 p* r( k9 h
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    9 I# Q/ r  z+ D& o+ R
  25. 6 K2 T" O3 k8 b& H" F
  26.     double bigArea = 0;
    ( J0 M- J/ L! w- ?
  27.     Face *bigFace;5 m" m4 v3 u% T7 P- ^* M1 F
  28.     std::vector<IParameterizedSurface *> theFace(1);% J  l* q2 N/ c. V3 J$ A
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    $ B# i; T. w  t4 U+ P
  30.     {- R! s. S9 j8 z0 i
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);3 ]1 ]6 {. a1 {5 F

  32. " x6 e7 `4 W6 o! x* o# G
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->0 I1 g2 K. D3 C
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);5 @) E  }9 X& ^& x' N

  35. * ~1 d+ m: z# ?/ z: A0 R2 B
  36.         if (theMeasure->Area() > bigArea)1 ^, `, c3 e, ?3 T3 a
  37.         {' h0 x' W' J/ q/ u5 W6 a
  38.             bigArea = theMeasure->Area();6 Y9 E" j6 s1 K& j# H
  39.             bigFace = theFaces[ii];  E, q4 \* W+ Y2 g" o4 V7 {
  40.         }6 R% _$ D  B& J
  41.     }  e0 b+ q+ E# T8 `; c

  42. 1 d: `, P! N4 H/ A  f
  43.     return bigFace->Tag();
    % H& m6 n6 a# F- W/ k7 ?4 `
  44. }+ y- m" O% {0 C8 ~  W( J6 j% v
复制代码

& q4 x0 b, u( Q2 m9 W7 j. V
0 S. Z9 Y+ t- O! q  O  i4 F( b' e6 j
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

0

主题

13

回帖

56

积分

注册会员

积分
56
发表于 2019-4-25 18:43:12 | 显示全部楼层
谢谢分享啊
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了