|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 q/ {: W* W, x7 I9 zNX二次开发源码分享:查找体中最大的面积
$ w1 z+ u% w5 {$ z3 x$ \" |- o通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
/ R) w, Z+ y N5 m) f' T9 w
* _6 X1 D0 K$ f6 @: L, L* d+ Q1 C
$ t$ ^( a, u4 R e- #include <NXOpen/Session.hxx>
* |2 l5 T1 Q; w! j8 d) _/ e& D - #include <NXOpen/Part.hxx>
1 N3 K# t/ R. z - #include <NXOpen/ParTCollection.hxx>
a- j! p5 N, { V7 A) k - #include <NXOpen/MeasureManager.hxx>
% ^/ ]+ E6 g. x- g. s. @: ?# r1 { - #include <NXOpen/MeasureFaces.hxx>
6 C: y# D) v3 `% `6 u# r4 O3 k - #include <NXOpen/NXObject.hxx>
9 c' E4 n: e2 v! T% R' U - #include <NXOpen/NXObjectManager.hxx>
$ M- l$ u+ v B. @' c9 m - #include <NXOpen/Body.hxx>$ s5 _8 M# Y6 h
- #include <NXOpen/Face.hxx>
4 L# ^: ?9 Y; q! W2 e - #include <NXOpen/Unit.hxx>
' V+ E* b5 _) ^ - #include <NXOpen/UnitCollection.hxx>
2 ]+ K$ r, g3 I7 a; ? - using namespace NXOpen;* d7 w6 i2 K( Z/ n+ |$ ?7 s
: @# V3 c/ d6 i2 s- static tag_t ask_largest_face_interop(tag_t body_tag)3 K$ p9 Q- k8 R
- {: `8 p1 q* T; C5 y# d" K
- Session *theSession = Session::GetSession();
' Y9 j4 g& c* V8 u2 p8 R* b - * b2 p/ ]4 e; P
- Part *workPart(theSession->Parts()->Work());6 _- T( A$ V6 ~/ J/ \+ G1 e
- ) ]- k, X# K0 {; e6 P8 L. e1 E
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
# N# G$ `1 e& E1 ?" k6 S - Unit *length_units = workPart->UnitCollection()->GetBase("Length");
5 C+ l R% n% x8 ? A - 3 g6 [- d: Z/ S- m; l: [; |3 p5 c3 ~- Y5 p
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
, b3 i S1 |+ f - std::vector<Face *> theFaces = theBody->GetFaces();
+ k; c$ j4 D1 {! O1 q( e& V/ R" I# T - + _0 l' `/ Q! U; C+ {3 ]8 C
- double bigArea = 0;8 s; G0 k9 r8 ?
- Face *bigFace;
4 J7 s! Y6 T6 X1 T. W- {( U" F( M" E% n - std::vector<IParameterizedSurface *> theFace(1);; _: q; `8 D* H2 N) o
- for (int ii = 0; ii < theFaces.size(); ii++)
# I0 f3 G9 u. p7 w - {2 B0 M- W. i. E! x
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);/ b/ x. \9 w7 u. E) d$ j4 z
- 0 a9 D) g, M7 P* Q8 w* z6 M
- MeasureFaces *theMeasure = workPart->MeasureManager()->7 P" B- j+ v* B% G; y/ d
- NewFaceProperties(area_units, length_units, 0.999, theFace);/ [( T& s. V2 a' [' p
- , E" U$ ~, a; R' g9 C- l- h" R
- if (theMeasure->Area() > bigArea)8 Q+ p& I8 ~1 T4 N
- {
7 F) c4 u2 l( Y& `1 P, j - bigArea = theMeasure->Area();
4 h% l5 [$ w0 q: K9 `& s+ x) g - bigFace = theFaces[ii];
. v' k3 }5 R/ p - }$ @# c# W" E. I, }, G( \+ x
- }+ L6 i) B( `- d! o! n
$ ^4 _0 x7 K6 }' ^- return bigFace->Tag();# \/ `8 x* U/ `
- }
; I! V+ m C3 Y
复制代码
e$ Q. M V# c; q9 i* \7 U9 y9 L- b. N& P% J/ D1 C
0 M% O2 o! c Y! k3 T: t- {- E. ` |
|