|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
( D& l( x$ X+ u5 S: c, `' i
NX二次开发源码分享:查找体中最大的面积
( h' K: D) c/ n& Q通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询! J/ \) p- B8 l8 G$ Z
1 _8 N( T5 o$ \4 d! R
5 F% k; y3 V$ L0 j% F1 j- #include <NXOpen/Session.hxx>
9 J2 A. m/ W5 D O _1 w% L - #include <NXOpen/Part.hxx>
4 d5 O! e& n7 _$ J$ ] - #include <NXOpen/ParTCollection.hxx># Y+ O- A; ~8 ^* Z
- #include <NXOpen/MeasureManager.hxx>
0 Z. H/ b# k6 B - #include <NXOpen/MeasureFaces.hxx>& [$ d: s7 @ v9 T1 m( M# ?
- #include <NXOpen/NXObject.hxx>
" T/ x' `+ H* `' a( g" o& l; s - #include <NXOpen/NXObjectManager.hxx>
$ t9 ?7 T/ K W, \, u7 V8 @ - #include <NXOpen/Body.hxx>& T1 X% s- R3 c3 ~# K6 I B
- #include <NXOpen/Face.hxx>; X; U0 r! ~% C/ p
- #include <NXOpen/Unit.hxx>5 _, Z/ }# ^; h0 d. a6 b
- #include <NXOpen/UnitCollection.hxx># z( `. _8 \1 ^& r9 ~0 B! Y% W) P5 v; E
- using namespace NXOpen;9 p% h) B' Z1 k
- # U$ T- l' h4 {+ R& j% F, j9 N
- static tag_t ask_largest_face_interop(tag_t body_tag)
! b D9 q M6 i9 H$ { - {& S1 j1 D3 G) y% s! E
- Session *theSession = Session::GetSession();* F+ e0 p% l$ U
- ! ^) ~: e0 M# e$ K
- Part *workPart(theSession->Parts()->Work());$ G, ]7 i9 l$ o1 f
- ) M1 o" w/ \6 W( ^4 Y( M2 C
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");$ K7 f! M( x7 b: v
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");# u2 w% H( K3 v
$ F4 V$ T% N) l8 ^4 E- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));/ s: U8 b) i( q! U0 g9 r
- std::vector<Face *> theFaces = theBody->GetFaces();
% Y7 ]/ ^* |9 m - 9 s: O: z" p6 i# Z, r
- double bigArea = 0;7 ?# k8 Z) |0 M& c* v6 N- I2 y
- Face *bigFace;) p7 z4 R( X1 v9 G z
- std::vector<IParameterizedSurface *> theFace(1);
; }8 Y, j, O* Q, }. M- b/ c - for (int ii = 0; ii < theFaces.size(); ii++)' h, m8 Z/ r1 W i! @/ ~! I
- {8 F- x$ S/ J3 n, z2 C0 v
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);' b/ b# X( T8 t1 d( P5 [4 ?
- + y" k R! w: r& S. A
- MeasureFaces *theMeasure = workPart->MeasureManager()->4 ^4 q; |* c3 z
- NewFaceProperties(area_units, length_units, 0.999, theFace);6 N' R7 l( O( K# R5 A
- , w4 z6 w: U" W4 E' S. j3 c: ~
- if (theMeasure->Area() > bigArea)
' ?) O# ~; h: X6 C% v& V: `! | - {
, D* ] u3 e2 t - bigArea = theMeasure->Area();
0 A4 N" r* O. E - bigFace = theFaces[ii];
1 G5 s) l; m- E - }. m- t( l4 c0 X D& h% u; a1 ]
- }
! I) j# y% S4 f# T; A - & d2 q; i9 y, c6 d T6 d7 t
- return bigFace->Tag();- i( i0 b9 J8 }+ N j0 F
- }$ q+ J! l: F& d/ d, c% x
复制代码
9 e* R1 C3 u; v$ G9 b' l! D1 @- K% [3 Y" y/ |, o
7 A' d1 a- F% X, ]8 ?* w" q |
|