|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
( ]4 v4 N2 L5 W7 n/ _' i; w' XNX二次开发源码分享:查找体中最大的面积
6 z3 q' ?- U. P& W通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询2 O9 N! `; e2 Q
2 g( m' Z1 q2 s+ l/ I4 K
6 [! w8 W$ k7 \( N0 i, v) D- #include <NXOpen/Session.hxx>
4 ^; }* K+ |2 A7 ~ s8 T+ G - #include <NXOpen/Part.hxx>3 S1 b, G# U6 W
- #include <NXOpen/ParTCollection.hxx>8 v/ R& P0 K2 h4 B# R6 d2 h
- #include <NXOpen/MeasureManager.hxx>8 k+ ]1 N Q. P; `1 r
- #include <NXOpen/MeasureFaces.hxx>
* Y0 p# \) j* f5 z: y& M2 q c6 l - #include <NXOpen/NXObject.hxx>
+ e/ F% B" e7 w* L2 S) u, Y - #include <NXOpen/NXObjectManager.hxx> Y' ~ S* ?. r
- #include <NXOpen/Body.hxx>4 o- r W6 {' x4 P
- #include <NXOpen/Face.hxx>
7 r( F0 g0 t% n u6 K+ n - #include <NXOpen/Unit.hxx>
# E1 J9 H- `, K/ K& k - #include <NXOpen/UnitCollection.hxx>
0 ?7 `0 m# q% j! Y - using namespace NXOpen;
/ a1 G1 F h! z% ?' |$ @' ?. a( _ - ; S' v6 n i) v
- static tag_t ask_largest_face_interop(tag_t body_tag). m, L i: A2 H
- {9 y T: v N1 Z
- Session *theSession = Session::GetSession();
/ _+ {5 D! H4 D: E3 o! G$ ]7 ]0 p - * o6 w6 K Q* j4 U. Y
- Part *workPart(theSession->Parts()->Work());
) L9 h! h& h1 h# ~ - # V2 W5 s' z! p5 w- C
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
# g$ U9 o* L) D i% s - Unit *length_units = workPart->UnitCollection()->GetBase("Length");+ D q& M1 W' ]+ C# s% F9 |
4 l- S( ~- b+ Y8 ~- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
2 h) |/ \% f: [( o) ^( q - std::vector<Face *> theFaces = theBody->GetFaces();
# m# T! Q& ^, j% s$ g
' V' H9 ^, G. R- double bigArea = 0;( b* B% t# E9 g9 |: Q- s
- Face *bigFace;
9 z4 T# a. n- M) m0 }$ @4 n - std::vector<IParameterizedSurface *> theFace(1);$ v# X+ @" E8 }6 T
- for (int ii = 0; ii < theFaces.size(); ii++)
* A$ ?( C9 a( S* P+ k) ~ - {; w7 X0 k8 H% s8 H& X: m, L2 \
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
( `( W% f, L% W - * G) m3 T6 [! l7 b+ R
- MeasureFaces *theMeasure = workPart->MeasureManager()->
" |0 P+ T& a2 a" { - NewFaceProperties(area_units, length_units, 0.999, theFace);0 N8 J0 h) g) N1 w4 m. ^1 s
- ; v1 S% `- ?) D/ N
- if (theMeasure->Area() > bigArea)* q: `2 H0 F" ^# G( D! j9 ?: F: M k
- {# a+ k3 ]" _1 \. K9 |# j# b
- bigArea = theMeasure->Area();
6 \' g2 I, i3 `8 G+ Z3 j, f" @ - bigFace = theFaces[ii];
) ] ?7 z# h# L. T2 a - }
. K8 X6 ~6 o% E g$ c' p - }
' f2 j1 Y6 q+ d% r( V, L( ` - : ?& [% T/ w" x7 a; o% J6 \
- return bigFace->Tag();
" o! _ Y E8 h9 T5 F - } e9 x" C# T( E$ {, K
复制代码
6 o2 C9 K' o$ b- K" f1 T% c2 i: o, L8 E) E# b6 O
8 i6 F$ t, v, P7 j0 n |
|