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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

7 C* L. p8 m. R) y) @# xNX二次开发源码分享:查找体中最大的面积4 {/ O; z% ]0 c5 J
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
! L8 l! s0 U6 I  j' T9 z* x$ n+ n; J# e/ M8 W
- m% I7 i2 ?3 A# v3 R# K" ^
  1. #include <NXOpen/Session.hxx>
    ( N, L) M. a1 f5 q" M
  2. #include <NXOpen/Part.hxx>$ _) N. w" e, g+ z' o
  3. #include <NXOpen/ParTCollection.hxx>
    ' x  f) B7 a8 h$ e/ n0 [# P8 u
  4. #include <NXOpen/MeasureManager.hxx>" e, N, b0 x5 `, q6 S* e$ o
  5. #include <NXOpen/MeasureFaces.hxx>2 M3 |' X  t7 `! b' q
  6. #include <NXOpen/NXObject.hxx>
    7 W. c0 b3 n' [/ k& D
  7. #include <NXOpen/NXObjectManager.hxx>
    5 Z- v6 g! U  t9 K0 O- Q- z) S( [  \5 M5 H
  8. #include <NXOpen/Body.hxx>
    . A+ C7 R1 H  A. o8 _, u& S( T: g
  9. #include <NXOpen/Face.hxx>
    1 }* A7 c; q# M; E1 v
  10. #include <NXOpen/Unit.hxx>0 S" {  D" H' d
  11. #include <NXOpen/UnitCollection.hxx>
    + @2 g0 W3 O, b# X+ d; @
  12. using namespace NXOpen;7 T1 I  Y' D& e

  13. 7 R& {$ a7 w/ M1 D; b" x
  14. static tag_t ask_largest_face_interop(tag_t body_tag)
    . y- ], {. Y/ S7 p, H6 b
  15. {
    9 w" k' M9 x4 V# d3 C' U. W
  16.     Session *theSession = Session::GetSession();% c# T# R& y6 S/ ]5 g* F# Z1 Y# l8 G
  17. 6 B8 g& V9 |( w
  18.     Part *workPart(theSession->Parts()->Work());  Y+ V0 X8 s& u" S. c
  19. / A1 t6 S( N) R6 `" X
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    " `4 u* G$ _$ w' u9 Q9 i) u
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    % p( v; B4 k# j( X% r, F; c

  22.   y! {) V7 m- X2 ]4 q# P; T
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    9 w( ~' x9 `6 U& D6 c3 R
  24.     std::vector<Face *> theFaces = theBody->GetFaces();7 p2 d4 P, n' p
  25. . O7 b; R0 G! g" \. B. }. a
  26.     double bigArea = 0;5 R* B& D- {' T9 w- Q7 [
  27.     Face *bigFace;
    ! Y) w5 x9 T( ^9 z: u) F$ f
  28.     std::vector<IParameterizedSurface *> theFace(1);
    # M; Y) s1 `9 k0 M; R* I6 z
  29.     for (int ii = 0; ii < theFaces.size(); ii++), [3 W+ `0 |, R: b+ ]
  30.     {
      c/ i8 [! d4 b7 m. J
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
    0 r! k; t# P% Z2 y

  32. 5 w1 t. a$ j, k, O; V: h! j) X
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->
    2 ?  K  h0 T! x6 n
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    / ~- n: W. v3 w$ S
  35. + c5 L0 O5 v0 W! u
  36.         if (theMeasure->Area() > bigArea)
    3 ~% ~$ w: P) ^
  37.         {/ W$ `, r. A' p! t4 g! t; y" U
  38.             bigArea = theMeasure->Area();
    * ^& d, w8 S; {0 y
  39.             bigFace = theFaces[ii];
    % _* v1 L: Q% ^
  40.         }
    4 N, S: B' q7 L$ F# t0 ?
  41.     }
    4 n: b& D( _: f8 h  x
  42. ; G3 L+ `, X' L. F* R. `6 O
  43.     return bigFace->Tag();9 T! t# a) K* q7 A# E7 L
  44. }
    ' n  T. |4 L( p
复制代码

9 V' ^: x" X9 u# I# {4 h/ |! ^
" y$ P! j9 W1 U
* Y( y7 k- j$ K" z& ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了