|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
4 A! K( V/ I x9 J0 h' w5 N
NX二次开发源码分享:查找体中最大的面积
4 T- S$ a. l& i$ t) z, R! |通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询. j4 B. q, X5 o9 T$ \3 G u" K
% B( Z7 ^ c0 ?! b, _
/ x: }- G' {% `. W- #include <NXOpen/Session.hxx>) d* K1 q$ P. n) N2 |6 v
- #include <NXOpen/Part.hxx>
& N8 Q" z R( f* O D3 Z- n - #include <NXOpen/ParTCollection.hxx>
& h/ X7 w8 K! N: r - #include <NXOpen/MeasureManager.hxx>
- \$ u/ \5 Z) j& d$ k5 u3 Z - #include <NXOpen/MeasureFaces.hxx>& U3 d5 L1 a, t
- #include <NXOpen/NXObject.hxx>
, o, x2 z+ C5 e, h- } _9 _% X - #include <NXOpen/NXObjectManager.hxx>
_( R. F- g, c% V2 N - #include <NXOpen/Body.hxx>6 B6 G- P. d9 D7 |
- #include <NXOpen/Face.hxx> {. S( M+ Q: o9 `/ L$ E; H' e' u
- #include <NXOpen/Unit.hxx>
8 \; a9 @: l$ i! n( Z - #include <NXOpen/UnitCollection.hxx>+ o9 w* s. f7 s: t
- using namespace NXOpen;
( P' ?4 `5 v' k( Y4 k
7 E7 H0 H$ b2 a; ?) v1 X+ I- static tag_t ask_largest_face_interop(tag_t body_tag)
! B" R- {8 l( z F$ M - {1 ^/ X! z' C# @" W
- Session *theSession = Session::GetSession();7 S3 Z( V8 d+ p) b# a3 i
- 7 {9 `* g9 y4 Z
- Part *workPart(theSession->Parts()->Work());& A. ^$ Z/ v* h( @2 b
- ' k" s0 y' Z4 {
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");! b5 [# I3 M- |* S$ d! F! x1 B
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");
4 S; ]2 K) u5 z/ E. A( {* `
3 C8 b2 D( g) m* W; w- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));" M# W" B5 ]' q Q9 g
- std::vector<Face *> theFaces = theBody->GetFaces();7 f2 n% F4 c. k
- ' I0 m! K. _# q3 m" B
- double bigArea = 0;/ ]0 E3 D3 K4 F" g
- Face *bigFace;
( E! ~7 w& ]4 Z8 d$ l7 S - std::vector<IParameterizedSurface *> theFace(1);
' `0 K( m7 t" c P) M: I7 K% a - for (int ii = 0; ii < theFaces.size(); ii++)+ E1 r: T+ k0 e) H; p
- {
- k& b) u! _- ^ - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);, Q* q2 n5 O" T- ?" ^4 O7 y
0 j' C$ V1 u; e( K9 U- X- MeasureFaces *theMeasure = workPart->MeasureManager()->9 X8 C& C/ [# V5 C# F0 I
- NewFaceProperties(area_units, length_units, 0.999, theFace);
4 O& F2 R' p/ j8 ?* b2 P
4 y7 w" i) f! P0 ~" |3 K' _- if (theMeasure->Area() > bigArea)+ N3 M. N6 r0 \) C9 U' ]
- {5 a9 ]+ k8 U* F! ]) z
- bigArea = theMeasure->Area();
# W1 \+ a, e6 r: V, \ - bigFace = theFaces[ii];
# Q2 |7 W. Z1 s, r. L# |& k. q - }
" {' m- l$ C; G - }6 }2 Q5 q' C1 b* T
- : ?' j z8 y# I% c& R- L6 X
- return bigFace->Tag();$ _- L3 ^. K& }6 M
- }: C/ o8 o- J- [+ }$ Y( K& t# a
复制代码
& r% G& M- J1 R: U% l# o
[! P+ R+ K7 a: J
/ {* n- p& o0 _1 f; H, k" h |
|