|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
: B3 y Q$ S; ?0 p' G
NX二次开发源码分享:查找体中最大的面积
8 S" C* j7 [9 H2 K/ p. i通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
0 y% A' X4 o6 y |* L1 j0 B6 [, Y+ H, Z
" r( i0 R: g8 O7 p
- #include <NXOpen/Session.hxx>! }; N$ q$ p1 g2 O
- #include <NXOpen/Part.hxx>
3 L! h0 a/ I/ E" R' [6 Q - #include <NXOpen/ParTCollection.hxx>
$ b# t, K$ V) s5 e0 H) C - #include <NXOpen/MeasureManager.hxx>
1 i# B0 t Y6 X, f! G6 {: n - #include <NXOpen/MeasureFaces.hxx>
8 j3 l( n' ]# F6 e - #include <NXOpen/NXObject.hxx>" s$ |( ?) P% _* V- H
- #include <NXOpen/NXObjectManager.hxx>" U8 U+ a) i7 e( X
- #include <NXOpen/Body.hxx>
; X) @& E R! G* w7 O - #include <NXOpen/Face.hxx>
6 g2 ?: W3 u* }% B3 m - #include <NXOpen/Unit.hxx>/ b! F$ l( F8 K# r) _
- #include <NXOpen/UnitCollection.hxx>
, k& O+ |6 b* a- n* g! g4 A! h) L( U - using namespace NXOpen;
& ~9 V, [4 h! S3 b" H( S" V' C6 E
1 t. D4 c9 H; j6 g/ m, V" } b- static tag_t ask_largest_face_interop(tag_t body_tag)
2 x" h/ p/ H, \" d* | w2 o - {& d9 i: }6 q$ v2 k8 |! z
- Session *theSession = Session::GetSession();
. L4 u; X) C# n' v# f2 h. Z) n
: T5 ]6 @2 [0 [1 J0 a9 }- Part *workPart(theSession->Parts()->Work());2 p/ w" U9 ~, N# M9 l
5 [2 ~) u% p! o2 [! T" x- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
* s) V7 m) K' q/ f - Unit *length_units = workPart->UnitCollection()->GetBase("Length");& W! k* Z9 Q% [2 K* b o
- + `" a! m& Q, r, r; M
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
# w, U& I4 l/ ^# ] - std::vector<Face *> theFaces = theBody->GetFaces();* N0 L. o# @$ M0 w9 [& {0 l3 x7 z
7 M K$ f8 e) @( A- double bigArea = 0;$ S+ `4 X' _/ u" m3 D0 z
- Face *bigFace;
$ ^, S( r% d: p. m3 o+ ]0 D& u - std::vector<IParameterizedSurface *> theFace(1);; }6 C' o9 G5 ^" k# Y: W: F2 r
- for (int ii = 0; ii < theFaces.size(); ii++)
* O% w$ D J/ @ - {
; {; o; q' Z& A! R$ x' i5 H' `8 m - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
& c; d4 U0 B7 I3 O4 I+ ] - 0 m$ a$ U0 N: I3 q
- MeasureFaces *theMeasure = workPart->MeasureManager()->: J* z5 C0 I3 j" p. J# t- A
- NewFaceProperties(area_units, length_units, 0.999, theFace);+ `( i9 l0 a5 P4 X. Z
- $ w7 _: |' m$ {4 A* y. k7 }' e
- if (theMeasure->Area() > bigArea)
1 o4 g. @2 I1 t6 o - {1 C. p1 e* o4 F1 k- a0 V: r
- bigArea = theMeasure->Area();9 M3 m7 d0 A% L# y& \9 n. s
- bigFace = theFaces[ii];
/ S& F5 S# a( K# L4 Y5 p* F - }( N' t: j( l8 ?: L+ l! [. C: ^
- }- B/ a9 d( K, Y" A/ V. m
! s2 @; ~* u1 j% g# I; j- return bigFace->Tag();
- i+ T& M H, ?5 G$ K, } - }
0 A- ~8 A, X) u0 h3 ?
复制代码 & i, `: a$ ]0 c5 d/ i& O& r
1 b( d' l3 [& C+ s) L: v
0 | B( y7 p- V v1 @ |
|