|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
7 C* L. p8 m. R) y) @# xNX二次开发源码分享:查找体中最大的面积4 {/ O; z% ]0 c5 J
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
! L8 l! s0 U6 I j' T9 z* x$ n+ n; J# e/ M8 W
- m% I7 i2 ?3 A# v3 R# K" ^
- #include <NXOpen/Session.hxx>
( N, L) M. a1 f5 q" M - #include <NXOpen/Part.hxx>$ _) N. w" e, g+ z' o
- #include <NXOpen/ParTCollection.hxx>
' x f) B7 a8 h$ e/ n0 [# P8 u - #include <NXOpen/MeasureManager.hxx>" e, N, b0 x5 `, q6 S* e$ o
- #include <NXOpen/MeasureFaces.hxx>2 M3 |' X t7 `! b' q
- #include <NXOpen/NXObject.hxx>
7 W. c0 b3 n' [/ k& D - #include <NXOpen/NXObjectManager.hxx>
5 Z- v6 g! U t9 K0 O- Q- z) S( [ \5 M5 H - #include <NXOpen/Body.hxx>
. A+ C7 R1 H A. o8 _, u& S( T: g - #include <NXOpen/Face.hxx>
1 }* A7 c; q# M; E1 v - #include <NXOpen/Unit.hxx>0 S" { D" H' d
- #include <NXOpen/UnitCollection.hxx>
+ @2 g0 W3 O, b# X+ d; @ - using namespace NXOpen;7 T1 I Y' D& e
7 R& {$ a7 w/ M1 D; b" x- static tag_t ask_largest_face_interop(tag_t body_tag)
. y- ], {. Y/ S7 p, H6 b - {
9 w" k' M9 x4 V# d3 C' U. W - Session *theSession = Session::GetSession();% c# T# R& y6 S/ ]5 g* F# Z1 Y# l8 G
- 6 B8 g& V9 |( w
- Part *workPart(theSession->Parts()->Work()); Y+ V0 X8 s& u" S. c
- / A1 t6 S( N) R6 `" X
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
" `4 u* G$ _$ w' u9 Q9 i) u - Unit *length_units = workPart->UnitCollection()->GetBase("Length");
% p( v; B4 k# j( X% r, F; c
y! {) V7 m- X2 ]4 q# P; T- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
9 w( ~' x9 `6 U& D6 c3 R - std::vector<Face *> theFaces = theBody->GetFaces();7 p2 d4 P, n' p
- . O7 b; R0 G! g" \. B. }. a
- double bigArea = 0;5 R* B& D- {' T9 w- Q7 [
- Face *bigFace;
! Y) w5 x9 T( ^9 z: u) F$ f - std::vector<IParameterizedSurface *> theFace(1);
# M; Y) s1 `9 k0 M; R* I6 z - for (int ii = 0; ii < theFaces.size(); ii++), [3 W+ `0 |, R: b+ ]
- {
c/ i8 [! d4 b7 m. J - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
0 r! k; t# P% Z2 y
5 w1 t. a$ j, k, O; V: h! j) X- MeasureFaces *theMeasure = workPart->MeasureManager()->
2 ? K h0 T! x6 n - NewFaceProperties(area_units, length_units, 0.999, theFace);
/ ~- n: W. v3 w$ S - + c5 L0 O5 v0 W! u
- if (theMeasure->Area() > bigArea)
3 ~% ~$ w: P) ^ - {/ W$ `, r. A' p! t4 g! t; y" U
- bigArea = theMeasure->Area();
* ^& d, w8 S; {0 y - bigFace = theFaces[ii];
% _* v1 L: Q% ^ - }
4 N, S: B' q7 L$ F# t0 ? - }
4 n: b& D( _: f8 h x - ; G3 L+ `, X' L. F* R. `6 O
- return bigFace->Tag();9 T! t# a) K* q7 A# E7 L
- }
' n T. |4 L( p
复制代码
9 V' ^: x" X9 u# I# {4 h/ |! ^
" y$ P! j9 W1 U
* Y( y7 k- j$ K" z& ^ |
|