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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

" n( `% T7 V9 _, [NX二次开发源码分享:查找体中最大的面积
% a) r4 J; L4 e/ D通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
1 a: }, u$ f' E9 D: U) F' K* N- q$ b2 R& @* G
3 U% W/ D  C, Q6 S( p4 v4 `& `
  1. #include <NXOpen/Session.hxx>
    ; Z" b8 L6 o7 V. d* z
  2. #include <NXOpen/Part.hxx>2 _$ e2 u- ^8 D: r8 n! o
  3. #include <NXOpen/ParTCollection.hxx>
    - F% ]) q# i; @' }
  4. #include <NXOpen/MeasureManager.hxx>
    , G( i7 I5 a3 T
  5. #include <NXOpen/MeasureFaces.hxx>  t  {( ^5 e) h4 C5 P) T: r) k! m
  6. #include <NXOpen/NXObject.hxx>! Z5 n7 v; r' P' [
  7. #include <NXOpen/NXObjectManager.hxx>
    - a& i# \) `; z- G8 G
  8. #include <NXOpen/Body.hxx>/ R; X- t& s1 j( |1 z
  9. #include <NXOpen/Face.hxx>! Y1 Y; w: `, D
  10. #include <NXOpen/Unit.hxx>- E, \) V% d4 M
  11. #include <NXOpen/UnitCollection.hxx>( M8 Y  G2 q5 b1 I/ m
  12. using namespace NXOpen;( h/ o4 l; T9 U# R# a; v- S

  13. + v- O0 G  J6 v
  14. static tag_t ask_largest_face_interop(tag_t body_tag)6 M. i7 L' V" o! E7 N- M
  15. {" T0 \: N/ v/ K- a- z
  16.     Session *theSession = Session::GetSession();
    6 \( O5 v$ e$ l6 I4 M
  17. 7 y4 I; s! `  w% e9 K
  18.     Part *workPart(theSession->Parts()->Work());: @' ]& c. n9 X, @1 @; i

  19. * k: l! `2 ~; T% C% d3 w  s3 n: q1 `
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    / p2 S* v. Y' |6 a
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");, f7 N8 e8 J9 f/ [; h. B
  22. ! Q/ A$ r. d8 u$ N% F# Y( `6 W
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    2 ]% l2 N' N' l# t2 X
  24.     std::vector<Face *> theFaces = theBody->GetFaces();, m4 a* L. q6 E6 G  h4 _+ [# o; A

  25. / V# i% R) u6 \/ a
  26.     double bigArea = 0;: s1 W( o, C5 H* P- t
  27.     Face *bigFace;
    7 }' T( a3 S+ J  r# C$ V
  28.     std::vector<IParameterizedSurface *> theFace(1);
    ! N, y9 Z2 S, H4 O; \$ c
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    # x5 }/ |$ B' ?+ [
  30.     {
    $ T# s: o" K' w2 E
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);+ n, Y; v: C7 u9 q: y
  32. 9 a, M# V  F3 |! Y& z5 q% @& z
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->7 x  y1 ?! b3 L. w" d% r
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);6 G# L5 n1 S- _1 G

  35. 8 h) V. {+ ^* s0 O( ]
  36.         if (theMeasure->Area() > bigArea)# L9 y! i! x9 i+ x( H/ N5 V
  37.         {" Y; c) m: N3 z/ f8 j$ A
  38.             bigArea = theMeasure->Area();
    $ F1 v/ ~7 Y- k4 ^. C8 B4 s% [
  39.             bigFace = theFaces[ii];3 U: X, t2 f! g0 _  S1 P/ P
  40.         }  k; @* a( O0 O% d% |
  41.     }! x7 t& G1 _8 M- O) T3 A4 u

  42. 0 G% F/ U9 \2 w* q4 F$ I7 |4 h. }
  43.     return bigFace->Tag();- M6 N2 P% P; p6 O) ~, p
  44. }
    & n/ N: q  Z8 ~" \0 F
复制代码

% `" J# _8 m" B# i6 k  P5 Y
5 c) U. Q, a# Y0 ^6 {& W# g; P2 _- m: z1 l. c& f  l7 T% s9 Z0 a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了