|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- a- z: ~, n4 ]
NX二次开发源码分享:查找体中最大的面积: i. }9 I1 w% h3 D6 a/ U
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
# N! z5 u0 ?0 V1 i' G/ L, r# v# G7 i: g% S5 V3 R3 b5 N
$ B5 u4 I1 A3 X; d1 V+ `/ c: U$ q
- #include <NXOpen/Session.hxx>
) O; q' @" m- j; P$ p1 m8 ?7 j - #include <NXOpen/Part.hxx>
! o6 o R4 J6 h/ w9 w" N, z - #include <NXOpen/ParTCollection.hxx>2 F' D% V) z! O2 @1 p' q, `
- #include <NXOpen/MeasureManager.hxx>% S/ G# ]% K: S: X
- #include <NXOpen/MeasureFaces.hxx>
$ ~. ^ D# E) M+ U - #include <NXOpen/NXObject.hxx>/ i( f7 o+ Y, N9 E w) a' P
- #include <NXOpen/NXObjectManager.hxx>
& ^, l" U; z. [* o$ b/ w3 U- ` - #include <NXOpen/Body.hxx>
3 z( F' C) H, e V - #include <NXOpen/Face.hxx>+ i0 @5 R- U- I- i5 ^& A
- #include <NXOpen/Unit.hxx>- K( i ?6 v# J9 d; [8 i
- #include <NXOpen/UnitCollection.hxx> E7 K4 r( c- t/ u" S1 n
- using namespace NXOpen;% x0 U- a, {) k; n& e* w9 C
6 V" K% O, B/ v* d- V+ J; k0 Q$ h; b- static tag_t ask_largest_face_interop(tag_t body_tag)' H* ?6 Q5 {& ^7 K# H) M- u; {( p
- {3 U5 e% X/ ^( w/ i
- Session *theSession = Session::GetSession();
, u% U2 N$ p/ j5 v+ R U' p5 c
& P |8 H6 }( Z1 V, {$ A- Part *workPart(theSession->Parts()->Work());
+ m b- ]5 ^5 L1 j1 k# f8 X
' V- G6 b7 j, J" a9 t, _ {- Unit *area_units = workPart->UnitCollection()->GetBase("Area");4 `$ {8 }3 q" U$ N+ r( b( n4 N
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");
8 R1 b# P7 ]: h0 L - & j7 L5 `! g3 ~! y8 N2 l6 R/ x" Q' @
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));# `: G, [: f/ x* g
- std::vector<Face *> theFaces = theBody->GetFaces();
/ m' E' }; J' q0 l( D) r' N/ X9 j - & V1 j. _0 s4 u3 k
- double bigArea = 0;+ A, H" ~" f8 @
- Face *bigFace;7 }+ f$ A& c/ j; w& X% ]
- std::vector<IParameterizedSurface *> theFace(1);
/ G: `7 F" c0 b' U3 i2 B1 v9 y - for (int ii = 0; ii < theFaces.size(); ii++), l* U; F" v; m+ X0 r
- {
" S1 f3 m$ |0 Z. h/ r1 o - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
0 }9 V- s( g! p: X$ C+ G - 6 D% z; C+ e$ M: ? t4 k% a5 `
- MeasureFaces *theMeasure = workPart->MeasureManager()->
" O8 z. p# x1 d6 } - NewFaceProperties(area_units, length_units, 0.999, theFace);
& X; S% I- H, p6 s# X: g - . h* K! b' b- R3 C) D
- if (theMeasure->Area() > bigArea)' `5 Z, W* d8 {: b& B- |4 O; r
- {9 @" \6 x2 b& d6 h& W' z2 f
- bigArea = theMeasure->Area();
4 t, B9 |( J& Z; N$ a# Q* G - bigFace = theFaces[ii];
J( d, L) J6 Y# L0 P- m/ ^5 S - }
% K0 M6 h8 X0 g N' L3 s - }
9 b! \% n# G, ~2 M2 i- L* G8 [ - - n4 h+ i% c5 T5 R7 X) U
- return bigFace->Tag();8 J" l# ~# Y- ~' n8 g6 y& j
- }
9 N5 m0 _1 d9 K7 b3 {6 f9 R$ |! ^
复制代码 1 n) n# V% ?) b8 V* V
5 a8 t# `; P6 E" [
3 ~ ~! `. \2 l+ m2 c1 U |
|