|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
2 ^5 C: ?) A' @
NX二次开发源码分享:查找体中最大的面积8 T' V6 f' `; m* C) L; A6 U
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询7 i, G- W8 x4 l% U8 G
8 T. ~3 H5 ?4 h# C
& |# v4 C, ?2 g0 _4 _- #include <NXOpen/Session.hxx>
3 O- ^4 j( [8 s& t; p p& S/ j: m - #include <NXOpen/Part.hxx>
- `# H. `2 K6 \$ ^ - #include <NXOpen/ParTCollection.hxx>! p8 ]1 {6 P: b6 V# h: a; q
- #include <NXOpen/MeasureManager.hxx>
# R8 ^1 c% e# G6 z. k3 R, [- l. H - #include <NXOpen/MeasureFaces.hxx>
. ~$ M+ ]3 ]9 |. g% `/ ? - #include <NXOpen/NXObject.hxx>
Z/ a% s4 M8 Z, E6 z - #include <NXOpen/NXObjectManager.hxx>8 ]3 _& e& d5 _. h( N5 V: q- Z
- #include <NXOpen/Body.hxx>
; |* Z5 }$ d& A6 c( x, A - #include <NXOpen/Face.hxx>
' w# ]7 f4 S) N2 P: u* w - #include <NXOpen/Unit.hxx>) X/ h+ e. K; c! e# `, F
- #include <NXOpen/UnitCollection.hxx>
; x( h9 t9 k+ L8 ^% R - using namespace NXOpen;1 g( |, ~' J5 Q& j1 b
- 6 ~; `$ }. O6 S
- static tag_t ask_largest_face_interop(tag_t body_tag)
5 n( ~6 |! D2 @% u5 E - {0 b# j" F$ t g4 }( Q& y
- Session *theSession = Session::GetSession();
1 r9 x* j4 u0 I( j. Q2 T4 ~1 K5 |7 A - : r& A7 {/ R1 @0 A1 b
- Part *workPart(theSession->Parts()->Work());
, \8 |- z3 K- U" X
6 E6 `3 G$ S* ]7 U, f( [" ^+ d- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
* J7 j8 Q/ ~9 j" b8 j$ a# P/ n - Unit *length_units = workPart->UnitCollection()->GetBase("Length");% v: g4 D U& ?0 M0 U
: M' r9 z2 }) Q3 r! X4 H- j- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
/ V# Q% L0 @9 k - std::vector<Face *> theFaces = theBody->GetFaces();$ `* G2 W. r. }8 ^
, t. v/ c. \4 W d6 F3 n- q- double bigArea = 0;- j8 I4 k2 N& `
- Face *bigFace;- c" F$ S, k8 B, j# ]5 Z. G0 c' c
- std::vector<IParameterizedSurface *> theFace(1);1 Z/ ]0 M D4 R; x) G
- for (int ii = 0; ii < theFaces.size(); ii++)+ H/ ]0 {% M, @. ]4 U3 U
- {. B0 I8 B& n3 l8 N# I6 I4 |7 ?4 s
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);6 {8 W1 e- P! J7 ]& g; o
) p' Z9 P# _7 D: ?8 L- MeasureFaces *theMeasure = workPart->MeasureManager()->! V! N0 [$ N3 @
- NewFaceProperties(area_units, length_units, 0.999, theFace);
# o# G/ i) _. q1 x0 o5 |
# S' J6 b: F/ d8 C2 c3 _) D t- if (theMeasure->Area() > bigArea)& ~/ V6 G, Y2 I1 c
- {
+ T( X8 p. E7 x4 o/ p9 l - bigArea = theMeasure->Area();( u7 R% y* l! z; E
- bigFace = theFaces[ii];
! z& n/ M9 w& E$ R# }& u. [* Y% L - }2 q( |" }" h/ [" O) i
- }
; }( X) G7 Y4 u4 Z1 w! \/ ?9 H - 5 H$ k$ A; n, |& A! |
- return bigFace->Tag();
* w% Q6 k# Y9 n1 { - }
1 F* Q9 m$ R% K+ X3 E6 }
复制代码 % n5 ?4 L$ M7 O
% L" e/ ?0 {9 X, G# }% i. d+ [/ ]) D8 g3 i7 D+ k7 P
|
|