|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- n' A* s; l7 E" K# s; P" A
NX二次开发源码分享:查找体中最大的面积
* i/ G3 b0 }. J7 I( ?/ w通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
# h' I: F% V1 @- u6 i; q) C$ b! D
4 S0 {8 H) a1 C+ e' o6 @4 K' \
- #include <NXOpen/Session.hxx>; g* _4 J; N1 t* b e
- #include <NXOpen/Part.hxx>
, N: E( J* O1 [8 M3 {! G# V - #include <NXOpen/ParTCollection.hxx>
. n2 B' T4 l# X! K7 E7 m: h; K0 s7 Z+ s - #include <NXOpen/MeasureManager.hxx>+ G1 ?" I" q4 P, D3 e _
- #include <NXOpen/MeasureFaces.hxx>% g9 f" v/ B" G E1 t/ u* u! ^
- #include <NXOpen/NXObject.hxx>$ V- D* [$ X7 w
- #include <NXOpen/NXObjectManager.hxx>8 A2 Z4 Y1 K( K1 b# e
- #include <NXOpen/Body.hxx>
. p6 O" t" M( M; ~& h# J- ]1 D8 Q - #include <NXOpen/Face.hxx>; \0 x6 J8 Q8 Z4 C' W
- #include <NXOpen/Unit.hxx>
, @3 `. x- |3 r( S - #include <NXOpen/UnitCollection.hxx>3 y2 p0 ]6 l" U+ M( H/ j2 J' V
- using namespace NXOpen;- d+ I8 L% Z5 R
- # _" i) l1 _. C2 J) f+ ^
- static tag_t ask_largest_face_interop(tag_t body_tag) B1 |. ?- q# A" ~
- {
9 M" {# d% f U; |' i* z - Session *theSession = Session::GetSession();
+ B* O+ }6 A& p. F2 H3 a. H9 M% g - $ Y3 T# ]/ A. M+ U$ l9 I, Q
- Part *workPart(theSession->Parts()->Work());+ A, L1 k0 J/ G" G G- a8 W, e
- 5 y* \& i4 A# o( E/ T
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");% b0 g* h& i }: l5 D! q
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");
) j4 S1 @' B; o - 0 |( V) o& _, s& t5 x6 Z
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));( n* l0 }/ K" Y5 a
- std::vector<Face *> theFaces = theBody->GetFaces();! K# \% S# f9 v' P4 p; {
- ' k' k1 t" ]& p0 r! B% z' H
- double bigArea = 0;
: [/ ^: Z8 p4 j% f - Face *bigFace;
* s3 T+ h7 M! K, g1 t - std::vector<IParameterizedSurface *> theFace(1);
- C# u1 E* r/ s* k6 ?* O# c - for (int ii = 0; ii < theFaces.size(); ii++)+ o4 A" z- J M! @3 `/ G) r
- {
% c+ j+ h/ s5 S9 x - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);' ?, p2 ]3 D5 b5 e2 ]
- # `# M/ K3 V# h' F/ m
- MeasureFaces *theMeasure = workPart->MeasureManager()->
% C+ i) o' N+ i [& H( y9 n, B - NewFaceProperties(area_units, length_units, 0.999, theFace);+ s* S( M" V' i6 h7 Z/ D
% x3 ~$ i2 o3 K- N# @' M3 i P- if (theMeasure->Area() > bigArea)
1 F; |+ d, Z; O* ?8 e - {" `6 X% _" \3 i- T! b' r6 h3 V
- bigArea = theMeasure->Area();
. H8 K- T* g1 J+ N# J - bigFace = theFaces[ii];
9 _( S- B! n# r4 w+ Y0 |" F - }; A" G+ \' ^( M& g8 C* Q
- }
( J6 ]' |( A2 l$ W+ Q/ z - 4 q+ B0 A* W J, ~
- return bigFace->Tag();7 g+ K2 ?% k, Z+ a* |9 M9 h
- }( r5 s* r3 f9 [3 r$ D' b r
复制代码
& f- B: b1 i1 x
5 l! ?) g$ @% v# B2 Z( y; }1 s4 N# y2 b
|
|