|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
7 t9 ]& |" b" d$ i* LNX二次开发源码分享:查找体中最大的面积
7 f( g; x3 ^: A! M% k i7 A通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询9 s) h' _& s# K( H/ t, F- {6 b& g
4 U! [# X* ]; I- j& O1 V8 w
; a: Z3 K i) e' G a! g- #include <NXOpen/Session.hxx>% ^# I* {2 j) t3 ]0 ~( s* f$ A
- #include <NXOpen/Part.hxx>2 H0 B0 Q0 `# p6 L
- #include <NXOpen/ParTCollection.hxx>
% Y: f) V4 p S - #include <NXOpen/MeasureManager.hxx>
0 O* c( ?7 p" [6 u2 r9 ~ - #include <NXOpen/MeasureFaces.hxx>
4 Y: u* ]8 v; o* f - #include <NXOpen/NXObject.hxx>2 Y8 e/ f0 E3 I3 H) K: q$ Z* X/ s. b
- #include <NXOpen/NXObjectManager.hxx>
0 e |# A) c+ |$ T+ c9 ~ - #include <NXOpen/Body.hxx>: j% u5 |! f/ b0 e( ^0 m1 R
- #include <NXOpen/Face.hxx>
5 B- V3 ]+ ? W& C4 F$ ]" n+ P - #include <NXOpen/Unit.hxx>
]9 m6 b6 z6 q - #include <NXOpen/UnitCollection.hxx>7 [" t' _8 ]2 l7 y' w- c. B$ \; j
- using namespace NXOpen;/ O7 P- w: B' h
# P$ g6 J' J5 n# N, f& e8 Q( d- static tag_t ask_largest_face_interop(tag_t body_tag)( S/ _* K* ^3 _* Z8 R
- {
, F; `0 `4 M4 V! B. } - Session *theSession = Session::GetSession();
2 Q1 U* U4 c( z$ W - , ~: t$ E3 z9 l) E1 m1 B& n! P
- Part *workPart(theSession->Parts()->Work());* ^/ j7 R0 o4 H& F U6 {* W
- ' i W5 b4 ^- s0 n
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");! v1 s6 Q& z# z( ~* W; v3 l0 v3 m
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");- t. ?9 I5 m' F3 Y
- " u# y( @1 I, m+ m+ A% c
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));8 a/ z3 u) N; n/ r( {4 l
- std::vector<Face *> theFaces = theBody->GetFaces();
/ y/ R8 D1 V: p( `4 P8 _- A9 } - * \! Z9 P# q! ]3 U
- double bigArea = 0;
) b) \. }; B& Y) X - Face *bigFace;! q( R# O* v& ^% ~
- std::vector<IParameterizedSurface *> theFace(1);
+ k9 v1 W4 _5 H2 A+ m% d - for (int ii = 0; ii < theFaces.size(); ii++)
3 ]! v) N5 B a0 y$ {, m1 q& o+ H4 C - {
5 J2 U5 P# F3 c$ O, n) m& e7 J9 ?) A( Q - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);5 A- S( S) D* E" Q! p! o! _6 e8 L0 @
! d7 S3 U7 @/ u# v) F, S7 v0 M- MeasureFaces *theMeasure = workPart->MeasureManager()->7 Q& E5 z$ \: E/ W+ x
- NewFaceProperties(area_units, length_units, 0.999, theFace);5 |% V R# S( ?8 y
. ^: a) f) [7 Q6 Q7 v6 p# B& p- if (theMeasure->Area() > bigArea)
1 z+ m& T' s9 X4 I - {
9 k% ~( ^+ m) _1 m, F- ^* P9 U$ e - bigArea = theMeasure->Area();
' } w* V5 J2 o# F. a - bigFace = theFaces[ii];
4 I/ L- s1 k/ X2 x# b - }4 U( f$ n- s6 r$ d
- }" k2 F5 O! F/ \+ ?" U
- 1 Z4 l2 u% L2 l3 D& z: F) o
- return bigFace->Tag();- v/ m8 P' M8 L2 L
- }0 ?' P1 x/ k7 Y1 k. N
复制代码
) [9 [: _) z t% y1 o% Z* V& O4 c/ @5 X" q
& Y6 C7 z4 c) E0 Q# { |
|