PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x
2 V( E5 y- ]8 [1 J" q+ p7 j. b
NX二次开发源码分享:查找体中最大的面积+ `9 v- I' u" Z0 O4 u3 f
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询# f" [8 |- p+ [

- c- ?: `! I& {/ l( P( J
. Q( S8 d! P; i% H. S6 x. r
  1. #include <NXOpen/Session.hxx>
    4 }3 `$ Z2 {( J
  2. #include <NXOpen/Part.hxx>
    & G6 u8 C+ Q- j  M$ i2 n, U
  3. #include <NXOpen/ParTCollection.hxx>
    ! v5 e$ F5 Z7 i
  4. #include <NXOpen/MeasureManager.hxx>
    2 Y! b! J. u! I& B
  5. #include <NXOpen/MeasureFaces.hxx>
    8 B* c# l' Z4 T6 y( M; X8 N8 R
  6. #include <NXOpen/NXObject.hxx>
    8 \8 Y" R5 a7 Q
  7. #include <NXOpen/NXObjectManager.hxx>
    , ^8 J, d( }) U) m( W' `3 {
  8. #include <NXOpen/Body.hxx>! A' T/ M& R% D3 R1 ^' ?
  9. #include <NXOpen/Face.hxx>
      g  u0 m2 |' W# L' E0 e9 f$ j! z
  10. #include <NXOpen/Unit.hxx>* }  i7 w+ r9 j" R9 Y* ~
  11. #include <NXOpen/UnitCollection.hxx>  N- _4 Y: S, F2 G- V3 b5 y
  12. using namespace NXOpen;
    ; A$ I3 M  }  q$ r5 V, h8 [
  13. 3 T$ r0 K! M! `
  14. static tag_t ask_largest_face_interop(tag_t body_tag)  j0 N. ?) F5 t
  15. {
    0 M' W0 F+ T/ v& Y* j& e( J
  16.     Session *theSession = Session::GetSession();7 M* T1 M) u% f* N  ~* Y; O3 J

  17. ( f( X7 o' I* u" o: K
  18.     Part *workPart(theSession->Parts()->Work());
    ' u. F1 J$ w7 X/ }. {

  19. 4 L9 G9 G4 j# b5 Q( |" `3 \. m
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");1 R3 D/ \9 I1 p: V
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");2 W, g7 F# m$ |" q

  22. * R" b% \  T: }
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
    $ G+ \0 A) p& @5 F) d
  24.     std::vector<Face *> theFaces = theBody->GetFaces();, A7 E% Q5 l2 S
  25. % T2 T2 i# _- d( V, t- g( I
  26.     double bigArea = 0;
    2 u' j0 I$ b9 S) C2 o
  27.     Face *bigFace;
    $ ^* H% l5 m$ w, @- n/ A. e7 d
  28.     std::vector<IParameterizedSurface *> theFace(1);+ d; r0 S1 v+ X
  29.     for (int ii = 0; ii < theFaces.size(); ii++)
    % m  _$ A; u3 D* ~
  30.     {/ w5 E5 ?9 u3 [6 U; T, t8 E0 L
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);. [; [9 q. f$ D! n' m1 W1 \& |( z

  32. ! S0 ?" D: h: ]
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->1 I% t- O* u, z: I4 N% ?5 Y
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    2 G; A) Y! i" p. n/ \

  35. , r0 }4 g$ \8 |/ z3 e
  36.         if (theMeasure->Area() > bigArea): |) `# j+ x& Q4 N' L- J
  37.         {
    9 F/ r" O% d: T6 f
  38.             bigArea = theMeasure->Area();
    ; @1 A# k4 R# O
  39.             bigFace = theFaces[ii];: E* n$ O9 \, r
  40.         }
    8 g% J" `5 w+ x$ }7 S7 j) Z
  41.     }
    " f/ {- [) }4 Q8 z

  42. 8 K  _( \2 p. f; g- m
  43.     return bigFace->Tag();) `  k& d  j5 \& S7 ^8 R  \0 G
  44. }7 n. r: K1 |$ o) r# E0 Z4 x
复制代码

9 F0 m# S  _' t7 V! W& k# B) z- |- p4 ~0 q3 p& q
0 d: w8 y% z' z6 O8 Y- G) }5 h
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ 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二次开发专题模块培训报名开始啦

    我知道了