|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
/ o* \! ]" J! z/ \- J0 l& @
NX二次开发源码分享:查找体中最大的面积5 p$ ^- O! T! H$ i& l# _
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询9 o4 b7 q4 g# e# b0 K f
. }8 o: T$ I7 {' x1 Z! ]$ g& U( ~' n; I _" J1 r5 W! z _
- #include <NXOpen/Session.hxx>
( v& a" m& g) g4 r: p. x( J; i4 |$ J$ h - #include <NXOpen/Part.hxx>
- w6 C1 `- A6 L( H - #include <NXOpen/ParTCollection.hxx>- }9 s9 h) }; |8 K Q9 ?" p
- #include <NXOpen/MeasureManager.hxx>
4 b% z8 S9 m5 r8 m- [4 S! W1 b - #include <NXOpen/MeasureFaces.hxx>
" T. W) f3 r, G; @$ R - #include <NXOpen/NXObject.hxx>
F( e# [% H% l1 b" U3 z - #include <NXOpen/NXObjectManager.hxx>
- p$ R5 ?0 n4 D; b5 X9 H - #include <NXOpen/Body.hxx>
% z4 T7 I" j. J0 q$ B# o* s - #include <NXOpen/Face.hxx>
1 b# h9 s( G/ q! T$ ?6 i K! I - #include <NXOpen/Unit.hxx>
% Z" K- u o7 A- F% j* l/ @ - #include <NXOpen/UnitCollection.hxx>
2 E7 u: X$ {8 U; ~ - using namespace NXOpen;
7 ^3 d' W* p+ |5 B - ' j+ U0 s7 g( p! r
- static tag_t ask_largest_face_interop(tag_t body_tag)
! g" w- Q% M% @& ? - {
/ ], V) {5 Z/ j5 w8 H - Session *theSession = Session::GetSession();
' D7 G1 y$ u j ]' q. N5 N0 u - * L. k9 K' e- x- T2 x. z7 B2 b
- Part *workPart(theSession->Parts()->Work());
" N9 l( K6 }4 R! I M - 8 U2 k c* k: g: S5 S+ f4 q! b. a
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");% _9 N5 I$ {* Z! x* x% ~
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");
! y' o% ?( ~3 x. G+ [ - 0 J1 J/ f4 B7 U
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));" [& G" D r( ?2 ?7 _/ \
- std::vector<Face *> theFaces = theBody->GetFaces();
' @& P, P+ ]; A4 Q; d# @* y7 k - : n0 K! u, {# M8 x
- double bigArea = 0;2 S8 }( n: Z4 M* g# [
- Face *bigFace;7 P% l) `5 I. d* E) _. p5 ^
- std::vector<IParameterizedSurface *> theFace(1);5 }5 |/ ~! t9 c& ^* P- D
- for (int ii = 0; ii < theFaces.size(); ii++)( c6 r! h' U) y% s/ v7 v2 r, F$ @7 X0 i
- {
2 `9 S) t& G6 ^) ^0 [) i - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);1 b: g: s5 Z: j, ~4 w6 o
- % O9 Z( f: r- q. X$ T
- MeasureFaces *theMeasure = workPart->MeasureManager()->
: I8 {4 X. `" r# H - NewFaceProperties(area_units, length_units, 0.999, theFace);, Y! J( i3 x' M8 K
6 K, a! l: e$ ~3 J- if (theMeasure->Area() > bigArea)
) R2 A, d' y- h8 [/ G - {
! p6 ^3 T" O$ F& r" C - bigArea = theMeasure->Area();/ }/ P/ [; G6 G! l. E- e. U
- bigFace = theFaces[ii];6 r2 S4 A8 c% [& e2 g; j
- }
2 H* o1 j& I) x4 B, U% e& h" Q - }
* [1 c$ {9 Q7 h/ x - 3 l9 J" ]% s9 \
- return bigFace->Tag();
; R6 [& i) |! j. H7 b" u - }
6 v7 c( e2 w0 [- l% L' a4 b2 y
复制代码 3 l) b% Y; E3 h
% u `/ ?9 F& A$ B( R8 P, N2 ~' V
% Z2 i- c# u6 Q4 i' w& m% C
|
|