|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 h8 F3 Y7 O; Y) m% zNX二次开发源码分享:查找体中最大的面积
& Z( C g+ Y0 G. t1 [6 ]通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
" r8 C* q* `* Q, ]) x2 \
1 f+ ~$ j5 c% d( W1 P& h: m
L* O- [, {% e" ?- #include <NXOpen/Session.hxx>/ V8 d, e' g- y. E
- #include <NXOpen/Part.hxx>/ \/ \/ i. s) J5 |) t
- #include <NXOpen/ParTCollection.hxx>2 k1 ~* w& Q6 K* @7 q9 f$ U& t
- #include <NXOpen/MeasureManager.hxx>
; b/ }8 j) f8 ~2 t- ` - #include <NXOpen/MeasureFaces.hxx>
% T) p6 \( `! r- v - #include <NXOpen/NXObject.hxx>
# l2 Z" ^0 Z1 r) P0 J$ h - #include <NXOpen/NXObjectManager.hxx>. S. j+ |3 T+ P# Z- X
- #include <NXOpen/Body.hxx>' ~( d9 L( I: |1 V
- #include <NXOpen/Face.hxx>
( W, T6 k k+ W - #include <NXOpen/Unit.hxx>
. p) D5 H- R/ ] ]) C - #include <NXOpen/UnitCollection.hxx>1 f7 [2 z" a5 n# v" b& a+ F2 ~: S. \
- using namespace NXOpen;2 l+ r# z# t! Z4 n% r
( \8 K. g% t3 r; u- static tag_t ask_largest_face_interop(tag_t body_tag)+ U' X- n# t2 l G
- {7 f N# y9 T/ S G( O1 Q
- Session *theSession = Session::GetSession();* } a `: K* V8 @2 E# \# T5 z
# t8 _; Q3 D3 O* B3 H- Part *workPart(theSession->Parts()->Work());( e0 J# ]5 n5 |/ A! [3 _2 b9 n
- & {6 m) ~: i8 b' b. ^4 X( A0 b- ~9 ^
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
1 d. v1 R @) M g% |0 I - Unit *length_units = workPart->UnitCollection()->GetBase("Length");
9 o3 l4 c# g D s
& _& D4 |9 C! {2 g. L- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
) ~- V$ @( _) @9 a$ M - std::vector<Face *> theFaces = theBody->GetFaces();
2 m2 E( G$ m: X( ^6 f$ D" D4 S8 a - # ]9 L/ ?8 A/ ]: A3 [. i( b( k
- double bigArea = 0;' o+ R+ A9 {& n; v1 b1 N- k/ j6 V
- Face *bigFace;, Q6 s6 }4 \ N* J0 [6 [- R
- std::vector<IParameterizedSurface *> theFace(1);9 u3 H& J- ~! Z$ ^9 |
- for (int ii = 0; ii < theFaces.size(); ii++)
7 i( O- e4 K1 x) d, d2 @% P$ M - {
. q9 b2 C! n! x$ n1 q: u - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);. T1 \- A' r+ W! e
- ; `' u9 T5 C/ b/ B* x
- MeasureFaces *theMeasure = workPart->MeasureManager()->' c8 y0 h P2 p) A- v
- NewFaceProperties(area_units, length_units, 0.999, theFace);
N- y% P" S. V, F9 F3 ` - % r& L" Z6 @$ J# z. i8 ~5 B4 ~) `4 O
- if (theMeasure->Area() > bigArea)
- z8 C# J5 w# U. y - {$ W6 E7 A, \5 B; ^% {9 L
- bigArea = theMeasure->Area();' Q3 `$ Z( @8 y1 E* I+ f" E* Y1 }1 ?
- bigFace = theFaces[ii];
. k# G; b) q6 M: i% [7 S5 R+ ? - }
4 t" q" Y1 L$ a X7 M: L' G$ s5 k) X2 ~ - }6 ~ v" W! ?* V, c- R ]! x
- 1 \2 u% _1 N4 @6 S6 Q
- return bigFace->Tag();
2 S' t5 f; c& d' t7 Q' _ - }/ W1 y$ j' }& \' l8 U7 h2 I" }6 o
复制代码 ! t; c- t: h! D% `7 @2 V1 }, j
6 c' W) n& E$ Y; f: U% n
- r6 D* W5 W T j5 @) k |
|