|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
) b5 d$ b2 m& n7 v( o; BNX二次开发源码分享:查找体中最大的面积
) a' W E) o$ F: a4 I4 x) s; \" G4 V$ ?通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询 k. B5 @( B9 E, T
' t$ h9 S7 f8 ]/ d: o, |! ^ s" Z7 @. u( v
- #include <NXOpen/Session.hxx>
; c" g' h) Q9 u' {1 L - #include <NXOpen/Part.hxx>
" j4 ~" v/ ?9 e - #include <NXOpen/ParTCollection.hxx>6 N+ n$ m8 |% o" c: F- v5 Q
- #include <NXOpen/MeasureManager.hxx>2 L3 d4 P _, x( S9 h# q5 \
- #include <NXOpen/MeasureFaces.hxx>0 a4 w" w' Q6 I- R$ G) S
- #include <NXOpen/NXObject.hxx>- ^9 ?) e0 A4 }! \) b
- #include <NXOpen/NXObjectManager.hxx>
7 I2 q8 {. W! j( } - #include <NXOpen/Body.hxx>7 t* z& m" c8 D) ?
- #include <NXOpen/Face.hxx>: C! M7 B% w3 ^$ F* X
- #include <NXOpen/Unit.hxx>
1 k: x# ]! y+ f% }& k' [1 d - #include <NXOpen/UnitCollection.hxx>
3 E7 [0 }+ M. Z9 b b* [ - using namespace NXOpen;
3 B0 Q$ B2 p6 M( Q2 \ - " K) \$ ?" ?7 ~
- static tag_t ask_largest_face_interop(tag_t body_tag)
" t$ r0 A& V8 ~! D0 q8 z - {
$ j* F$ m' k# n9 M8 C4 o' [ z - Session *theSession = Session::GetSession();
) m" u0 _' y4 E - : i w5 G3 ?3 j$ S
- Part *workPart(theSession->Parts()->Work());
b7 L; b) I |8 g - 8 x4 C6 P9 G( \! v7 A
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
0 d8 W- t6 w u l1 }% m6 b) d - Unit *length_units = workPart->UnitCollection()->GetBase("Length");
, }& e8 e" w8 C. y7 W, _1 o, m: |
0 x; o/ h9 H% s$ H, n- j. p$ l- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));9 g+ G. y! d: u/ S
- std::vector<Face *> theFaces = theBody->GetFaces();
4 O5 s- _! f5 G1 x4 G5 i - " }( _ a3 K/ s) M
- double bigArea = 0;/ p. ?0 `& u: Y4 X
- Face *bigFace;! M5 ^$ d X& V/ p% }6 H# ^
- std::vector<IParameterizedSurface *> theFace(1);3 e9 J/ p* L8 j! t$ k6 [
- for (int ii = 0; ii < theFaces.size(); ii++)1 g: r8 f% |) v/ _2 r
- {5 f4 T! c$ d/ }3 _
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
' D; s1 f2 W4 r& L) J6 | - * }/ l" v8 O2 z- T# m# ^
- MeasureFaces *theMeasure = workPart->MeasureManager()->
* K: d! P' K* _4 ~1 D# ]" p, R - NewFaceProperties(area_units, length_units, 0.999, theFace);/ f) \- C4 C8 w
- & r$ b% I1 I* p- B8 F @
- if (theMeasure->Area() > bigArea)) z6 W1 Y7 p8 H, {0 Y1 w
- {! [ ? S3 ~' d8 ^9 D3 X/ Z
- bigArea = theMeasure->Area();, A5 [, Y# \" d- N
- bigFace = theFaces[ii];. O3 S$ {# P+ s( n# j
- }
/ q2 l' Y$ b- m" p& _ - }
& B" q" g- j( q. F3 \+ P9 y8 o
2 I' ?4 u. p& l- return bigFace->Tag();# d/ f1 f% S# n* o4 l; K
- }
+ o$ Q' \+ q, O
复制代码 + K) W5 v# F' _ A6 b3 r
; G! P! C2 Z/ C9 @/ J: |1 L. o
: q) e* @* e6 \, q
|
|