|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
5 x$ d9 u, X6 r: d z0 g( PNX二次开发源码分享:查找体中最大的面积
. R+ v5 S! |0 q; @通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询9 y t% C, X( ]. e8 p4 G
& [+ ]7 f- K. @, ?. A5 W8 n
- e V9 q6 ^5 m8 B
- #include <NXOpen/Session.hxx>
- D( m7 s# H1 T) g+ F - #include <NXOpen/Part.hxx>
( c% v2 N0 M2 d. g$ |1 p - #include <NXOpen/ParTCollection.hxx>" p2 @* E4 y* V/ b% {; R
- #include <NXOpen/MeasureManager.hxx>
: o$ _ c4 a; ?" @8 ^; h s$ M - #include <NXOpen/MeasureFaces.hxx>/ `, F4 g) l# j1 g6 m
- #include <NXOpen/NXObject.hxx>
7 J% S% v- U- R+ a! f - #include <NXOpen/NXObjectManager.hxx>+ y/ j, V* a) E7 a% Y4 w R
- #include <NXOpen/Body.hxx>
. M* j- I( @2 v1 B& ]4 W - #include <NXOpen/Face.hxx>1 i7 |7 A w0 p7 c$ G
- #include <NXOpen/Unit.hxx>9 S$ X7 L- S' P9 _; y
- #include <NXOpen/UnitCollection.hxx>, ]" ~/ b: Z1 ]. m% B: M! u% R
- using namespace NXOpen;, t( D1 [7 q! U5 i! m
- . W: U3 G' H7 v4 C" e
- static tag_t ask_largest_face_interop(tag_t body_tag)
& _: _; _, B! T - {4 ?5 c% ^1 H' h j9 X
- Session *theSession = Session::GetSession();6 Y3 T2 I6 V* s p4 t
! t9 y) g2 e, Y& ?, [+ y- Part *workPart(theSession->Parts()->Work());
$ O3 P9 [! k; c0 v - 2 d0 `$ t% U5 K: g
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
+ h! j( f5 s' C- T# e& B1 R. {! L5 J - Unit *length_units = workPart->UnitCollection()->GetBase("Length");% _$ @! ~6 l2 a2 A+ S3 S
3 S1 u8 x% d& p. y3 }- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
! B; d6 W5 ]3 I" |; ?) n - std::vector<Face *> theFaces = theBody->GetFaces();" G* l0 L: Q+ O" q
- 0 M* Z c; K5 u3 t- s* J
- double bigArea = 0;3 C0 C& S/ M/ }; H s7 s
- Face *bigFace;4 m2 [* K2 p2 z4 f% a
- std::vector<IParameterizedSurface *> theFace(1);
) _, [4 i$ V+ o) |4 V7 A2 W6 B - for (int ii = 0; ii < theFaces.size(); ii++)
3 |0 U7 K/ ?1 u q& C: K7 l7 C! Y - {
: K8 y& C( o5 c; o - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
! V4 n6 }/ J: B; M% B, L% j/ Z
, z0 o& Y6 y- z" J; v! e- MeasureFaces *theMeasure = workPart->MeasureManager()->
- w3 d# y+ ~% |. Q( I - NewFaceProperties(area_units, length_units, 0.999, theFace);
" Q; ?6 B# Q! k" f X/ c
3 B9 f: ~" o+ ?# K. Z; g- if (theMeasure->Area() > bigArea)# s& }9 }2 U* Z) C( s* {& D3 c9 x0 v
- {
5 t4 ^9 k# F+ W7 l6 J2 l/ A( N% ?/ V f2 k - bigArea = theMeasure->Area();* N/ a! O! s6 u5 n5 J
- bigFace = theFaces[ii];- r/ }" U: f/ C$ P& m* u
- }
9 Z9 c/ L0 T/ q) M4 w. j. T/ v - }" W$ C$ S7 U3 U5 G
- * r' w# O2 N( d/ k3 l% s) I
- return bigFace->Tag();4 {$ l" u- _9 k* [
- }
8 Z$ j' r! }+ _- O) Q/ o+ Q
复制代码
, C0 g r- L# r9 x- E$ t/ U
/ q' P/ S/ M+ f4 |4 x* u8 O5 L% a+ z' \3 }6 m O
|
|