|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
2 w* }, L/ J; [5 S1 P5 C& vNX二次开发源码分享:查找体中最大的面积
& G* a( P: [4 b% f1 k) {% A通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
! H" l- N7 m0 J/ R; h9 M; ]) ]. p/ D
# Z$ S5 ]2 Y0 h5 ]- #include <NXOpen/Session.hxx>& ]/ C. p: w9 Q( X
- #include <NXOpen/Part.hxx>
& @1 V4 C! E# M3 |, Y: F - #include <NXOpen/ParTCollection.hxx>
% h; P& U, {$ v6 @1 g$ R& z - #include <NXOpen/MeasureManager.hxx># ?: \$ [) a+ Z7 ?
- #include <NXOpen/MeasureFaces.hxx>) ]) S* o, Y$ N4 T" o5 G9 l
- #include <NXOpen/NXObject.hxx>
/ H' L2 U7 h9 Q8 T" A) W - #include <NXOpen/NXObjectManager.hxx>/ r7 }$ G6 E9 j; p: }
- #include <NXOpen/Body.hxx>5 Z( c. n& |) l1 T& d) T# g
- #include <NXOpen/Face.hxx>3 I J# L6 q9 O8 K
- #include <NXOpen/Unit.hxx>
2 W) L& ?6 T4 X" s7 c, M/ ~ - #include <NXOpen/UnitCollection.hxx>; [$ m, `2 v5 L/ E
- using namespace NXOpen; M& W# x& U) z" A- m
- 7 x3 `/ @$ Z3 p4 O
- static tag_t ask_largest_face_interop(tag_t body_tag) \& a" S- v; _' H I, B8 W
- {- K# J( S/ Z# w- g2 L* H) ]$ l, w! N
- Session *theSession = Session::GetSession();% x+ O5 S- |& N' e: w: l6 H/ C
0 z' }# ^; p w- Part *workPart(theSession->Parts()->Work());
. S) P! W j2 Y - 1 Y' M9 } B0 a/ b( |; {4 Y4 O/ ?/ B
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");& D! U4 G" v, | H; i' p% l( l
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");
% X6 s8 o9 v/ R! q - % E: ]7 O) t4 x G% Y
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));2 N: ?. L/ z( k. m( Q0 J; f
- std::vector<Face *> theFaces = theBody->GetFaces();) N# \: ~5 H- D. K: P
- , y' O$ r( t L2 n! Q# h9 x$ ~
- double bigArea = 0;
9 y; v4 j/ f* J3 B5 Z$ H - Face *bigFace;
( u* V8 v. ~# i - std::vector<IParameterizedSurface *> theFace(1);! J* T0 P8 C2 E" e
- for (int ii = 0; ii < theFaces.size(); ii++)
8 E# e0 r; }0 L7 V9 V - {0 @ M& A; ]/ v& F2 b
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
$ T) F1 F* P; ]5 \
3 e% g7 Z9 n, N, @" ?9 P- MeasureFaces *theMeasure = workPart->MeasureManager()->4 E: q8 M/ f& O/ p" U+ ^' ~! T
- NewFaceProperties(area_units, length_units, 0.999, theFace);
/ }5 l( `; v# F2 X( S5 s* m4 p
. U5 p( N& \+ _! I' i- if (theMeasure->Area() > bigArea), |0 v' P; } I0 x7 R1 K
- {
0 M6 d0 u/ e. J! b3 z. H - bigArea = theMeasure->Area();
( t) W; E) u/ M0 p% l0 e - bigFace = theFaces[ii];9 T" e# |& V- A2 ~$ x* [
- }
3 M! S( F1 @) c9 |4 I - }
1 k6 R+ \- ~+ l/ ^6 G
0 B- c& R3 h; E+ t o" Z7 k- return bigFace->Tag();
' \ y* ^% o8 X! F0 C2 c7 k7 H - }0 D+ |: q Y8 X/ m
复制代码
! a! t( E+ f& w3 }0 l$ j, _' ?/ L4 O2 _ f+ r; J9 @
+ k0 q' [# T" Q: l e$ U2 X' Y
|
|