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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
* D- r/ p. E3 i& R8 c2 C
NX二次开发源码分享:查找体中最大的面积
2 a0 H+ b: x, I: p: E6 _& y通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询8 z$ @: |* |2 ?: I
% R2 [7 M3 [3 `6 ]; q4 ?; q7 l

! g+ V9 D1 F1 H' s$ W; h  {
  1. #include <NXOpen/Session.hxx>* c8 X5 ~+ Z( K- c0 [2 |
  2. #include <NXOpen/Part.hxx>9 X. f# d# S. J# i2 Q% M# _! i
  3. #include <NXOpen/ParTCollection.hxx>
    & J" D' \5 c0 @
  4. #include <NXOpen/MeasureManager.hxx>
    $ N3 @& {/ l( y* g2 K
  5. #include <NXOpen/MeasureFaces.hxx>& [: Q4 b/ h+ w' J0 w& a/ D# ]
  6. #include <NXOpen/NXObject.hxx>, r- W& {5 h: j  }& }8 c" s; w
  7. #include <NXOpen/NXObjectManager.hxx>
    * H/ Z+ j# z4 M' p  V" l
  8. #include <NXOpen/Body.hxx>
    ; W  {8 }# z' @% d
  9. #include <NXOpen/Face.hxx>
    8 N- T% e3 G2 B
  10. #include <NXOpen/Unit.hxx>" u% b# k) M8 q+ p  Q
  11. #include <NXOpen/UnitCollection.hxx>
    % ?" X/ }& X; V" c: r1 Q* t
  12. using namespace NXOpen;4 b8 {8 v) M7 l  b
  13. ) q. O2 N' u4 j6 Z* M- Y+ A
  14. static tag_t ask_largest_face_interop(tag_t body_tag)* v! e- w& O; p2 j; e% p! U
  15. {6 M) p9 f. }1 U& m6 w
  16.     Session *theSession = Session::GetSession();
    ) i! Q: _3 B" P0 i! W  y1 [

  17. 1 v$ S3 Q% q9 A
  18.     Part *workPart(theSession->Parts()->Work());" y# l/ @( y% M& E4 z
  19. 8 n8 I/ r& Y" J5 a0 _: o, \
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");% m5 P7 T2 p" y* ~3 Z
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    # S0 L0 o6 `1 K/ t" W

  22. 2 ]+ \$ r; O( s1 V9 Z
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    3 \1 T" `' Z# l0 \# R
  24.     std::vector<Face *> theFaces = theBody->GetFaces();# O7 {2 _3 k0 D; O, n: c
  25. ) G' u' E4 j5 ]4 P3 Y# h
  26.     double bigArea = 0;1 M! q/ {! N, c; }( A% @/ @
  27.     Face *bigFace;
    # {  l2 p/ U: W. v- W# n- \
  28.     std::vector<IParameterizedSurface *> theFace(1);. G# `8 U( d. L
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    7 F/ `. a: u$ c7 ]
  30.     {: C5 l) L  `; a1 `
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    # p; i2 m, y! l- v( D6 @
  32. ' ?6 _; u& X: _& W
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->4 b9 Q6 h! m2 a* v4 Z3 I
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);, V( h1 U8 k0 [

  35. - W- J  ^) B9 {0 l9 ?9 S- R; W6 `6 u
  36.         if (theMeasure->Area() > bigArea)
    ) j0 q2 b: Y8 S  g3 v- u5 @
  37.         {* i& y8 M9 ], k# o; v4 E+ o; U' k
  38.             bigArea = theMeasure->Area();
    ; K3 ?9 b. J: K8 k4 B6 `6 V
  39.             bigFace = theFaces[ii];
    9 T# N% D% Y3 ]6 T3 D( B; @
  40.         }# ^6 c2 H" N5 u+ M$ i. G4 K
  41.     }+ ^4 |5 l( J- Y5 L8 y: D6 F2 ^) @8 U

  42. 8 F! Y3 u9 B" v8 ^7 s
  43.     return bigFace->Tag();! x9 ]( B  a+ c  ^
  44. }
    ! I8 l3 k* S3 L  A
复制代码
$ S: Q, g6 N& U) S

# \! A5 B+ H" t: U- U3 @: _
1 t* l  ~5 l5 ~3 Z- _7 C* y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了