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

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

[复制链接]

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

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

admin 楼主

2014-11-4 20:54:40

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

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

x

5 F+ p: [3 |$ x$ H/ ~! J4 {; L' \NX二次开发源码分享:查找体中最大的面积
! K# o* C! }; N# H7 p( G. P. Z, v9 P& ~通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询  |( c7 _. g- C  S+ P

: T% }, _, S: C8 g4 n& L5 r. c
# C& ]5 X& E; W) \
  1. #include <NXOpen/Session.hxx>5 T% C0 O' S+ W) X7 K: k  [
  2. #include <NXOpen/Part.hxx>" ?) t0 R& R. N' \. D
  3. #include <NXOpen/ParTCollection.hxx>( z# o0 I6 r! N: u
  4. #include <NXOpen/MeasureManager.hxx># G( N6 K9 r5 o4 y% o" X
  5. #include <NXOpen/MeasureFaces.hxx>! s* b7 h* o9 Q- u2 K5 \, g" L
  6. #include <NXOpen/NXObject.hxx># w, S& w" p; C
  7. #include <NXOpen/NXObjectManager.hxx>
    * g% M, Q" E% s, _7 O& B1 f3 M
  8. #include <NXOpen/Body.hxx>3 A' }7 C, ^) j  r+ Z3 d
  9. #include <NXOpen/Face.hxx>0 X7 n" T3 h9 U" [. X. [1 L: s
  10. #include <NXOpen/Unit.hxx>
    - N( k# \. ]/ c" O' c; R
  11. #include <NXOpen/UnitCollection.hxx>- s! f4 R9 [# T# |7 ~" e
  12. using namespace NXOpen;, ]  ^! K" M$ U( P5 n

  13. . i8 y4 U+ i9 k: V0 A1 u4 N2 m
  14. static tag_t ask_largest_face_interop(tag_t body_tag)4 i$ M" C" I$ u. w6 N% `7 H
  15. {
    & l! e: X8 U: ^7 `/ Y
  16.     Session *theSession = Session::GetSession();( j; S1 }, p! v! B' T

  17. ! E  A6 {. r/ z. Z) ^) G
  18.     Part *workPart(theSession->Parts()->Work());( O3 P: f' g9 C* x4 c: z9 M4 z
  19. ' F2 b' r* W7 U' n( _$ G  |) L
  20.     Unit *area_units = workPart->UnitCollection()->GetBase("Area");
    2 w0 [1 F/ u( a1 n  f- [2 z
  21.     Unit *length_units = workPart->UnitCollection()->GetBase("Length");
    # Z. D* ^& l& \

  22.   p) \% y" e) V3 B# m0 G7 H
  23.     Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));" n# Y% R1 _6 u  P* e# Q8 j
  24.     std::vector<Face *> theFaces = theBody->GetFaces();
    ) c* X9 F1 H" i: A6 n  f; h4 [

  25. ) `% I& w" j8 x$ [/ K
  26.     double bigArea = 0;
    , p8 G; c# w! d' H
  27.     Face *bigFace;
    ) J9 U1 i: r% E5 \) b
  28.     std::vector<IParameterizedSurface *> theFace(1);% b! X' x. g' X) ?+ ?$ j; \
  29.     for (int ii = 0; ii < theFaces.size(); ii++); @. ^. c" w/ t8 B& D
  30.     {0 G+ K6 v$ @0 ]( A( R7 I6 s
  31.         theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);( k! k' G4 x9 x* v& o

  32.   f5 `. d& i& X8 b# W' {6 j. g! m$ L
  33.         MeasureFaces *theMeasure = workPart->MeasureManager()->. k! Y! k! ^. d2 `' i: D- @$ n
  34.             NewFaceProperties(area_units, length_units, 0.999, theFace);
    9 |6 O1 w$ [  j9 s
  35. 7 f; C# S6 W1 \$ `8 B
  36.         if (theMeasure->Area() > bigArea); K* l5 i8 F/ U; h
  37.         {- N3 y' V* @, C$ y% |$ e
  38.             bigArea = theMeasure->Area();
    1 @5 Y) _5 ]+ t! ^' L8 U1 h
  39.             bigFace = theFaces[ii];2 L, G  q9 g7 N4 f7 h
  40.         }0 f$ f1 \$ k( q; g. N
  41.     }+ ?. Z3 u# f1 r, K3 r  N
  42. + H- ?) v* a0 `/ \. Y0 P
  43.     return bigFace->Tag();. g! v  h1 p1 L! I: C( ~4 o
  44. }  t, c& A+ m: x- E% [
复制代码

( ]; A' |/ l2 p4 m4 v  t% U9 Z3 [$ O$ H! }

3 g2 M& r. i: }  y, B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了