|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- i( d k0 r* ^" hNX二次开发源码分享:查找体中最大的面积* Y- i( [: Z9 P% ~& x U- g( M4 _8 W
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询, ?- P+ }, w* K2 f+ B# q% c
# [. N, ?% m: Q4 V+ U7 j6 x8 S$ y6 V9 L, q9 t; M1 J8 j f) P
- #include <NXOpen/Session.hxx>% O# y' d$ ?' b' y& O& v4 E! t* u
- #include <NXOpen/Part.hxx>
& X. |+ I R. Z# M( J - #include <NXOpen/ParTCollection.hxx>
6 p3 n5 d: s9 Y3 `& G- j: a7 j - #include <NXOpen/MeasureManager.hxx>5 q2 m; k l1 W: h
- #include <NXOpen/MeasureFaces.hxx>! k5 }# r w+ f' m' x5 ]4 N
- #include <NXOpen/NXObject.hxx>
, A) T9 n( B$ q - #include <NXOpen/NXObjectManager.hxx>
/ c5 E1 w" _" h% _2 l( ^ - #include <NXOpen/Body.hxx>
& n0 S5 \6 I) L - #include <NXOpen/Face.hxx>9 b% m( |8 U$ N: I, J' Q9 |( h
- #include <NXOpen/Unit.hxx>
9 V+ \3 _5 Q8 F$ e8 e0 Z& Y2 a5 O - #include <NXOpen/UnitCollection.hxx># ?& i% y. j4 H' R/ z: ~ i
- using namespace NXOpen;9 @* d" |0 a$ P. h/ [* d
3 E L1 a+ [7 F6 `) w X- static tag_t ask_largest_face_interop(tag_t body_tag)
- y8 p' N. S" T+ D8 p8 x W1 K5 [ - {
# f6 b: v# q) B: H$ G* L - Session *theSession = Session::GetSession();. u8 n) b) R, h3 {- j& a& V
- ' t, W- e5 W; ]2 l) a4 X
- Part *workPart(theSession->Parts()->Work());
# u1 `/ R5 q1 m1 N% v s5 I/ o3 R" U+ X: a
/ O" o+ W; q, G G4 Q- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
/ i* _) E( k" } - Unit *length_units = workPart->UnitCollection()->GetBase("Length");. ]8 L" |+ k' v0 z h
+ A; E0 e! {6 m& X3 D& }- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
* D% `; ` w- }; S - std::vector<Face *> theFaces = theBody->GetFaces();1 w' s6 t0 ]5 H' e% c8 `
' |' p l3 Y9 w" \) l- double bigArea = 0;
: [7 Q( V" g: E - Face *bigFace;, Z9 x9 |$ F2 y4 g8 K
- std::vector<IParameterizedSurface *> theFace(1);
$ O* Q: `$ B) X% p l: r - for (int ii = 0; ii < theFaces.size(); ii++)9 j+ R" ^" S2 g; n6 B
- {
- v: E9 i4 ^# {' ~ - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);1 U% p( Q5 }6 ^% r
" Z, S0 @9 b# ~- MeasureFaces *theMeasure = workPart->MeasureManager()->
1 R2 A- u5 v( H" w: ? j+ d - NewFaceProperties(area_units, length_units, 0.999, theFace);
3 S0 ]3 {+ p6 k) j+ A - & H6 C0 K+ J4 I, t( j9 [2 g
- if (theMeasure->Area() > bigArea)6 f6 p# D% Z+ [" H
- {) @) s! J- ^7 X7 H
- bigArea = theMeasure->Area();
" i: |% T& E3 o* G1 Q4 k7 R7 ?" ] - bigFace = theFaces[ii];
4 B8 m' ?. f5 Q+ v Q. Y# R - }
0 q3 _ u4 ~5 l% V5 \ - }
9 p' t4 x4 z4 v3 N
P& w3 ?4 y. X+ a3 |- return bigFace->Tag();* W' |% ^+ M: [7 K; r
- }
* H; c& P- S0 t% P
复制代码 & m, s3 T8 @! U
B( x( ^& f* `& T+ A+ g/ S% G
& I+ l% ]4 z5 @8 X
|
|