|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
7 s8 l1 G0 @) t& r/ K( ^! o' _! D
NX二次开发源码分享:查找体中最大的面积9 x- M, `( _' E$ g1 j
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询; [5 R7 {) _ U$ M, J
6 {: ]# [/ @7 b( n% j8 [7 @
3 }, y, E: L3 F i
- #include <NXOpen/Session.hxx>5 e+ ]' A! {" J4 C
- #include <NXOpen/Part.hxx> m; z, n8 f% V2 V4 }5 R
- #include <NXOpen/ParTCollection.hxx>( R5 A9 s2 r4 M" J$ P3 D0 K
- #include <NXOpen/MeasureManager.hxx>
* V, ~ h1 s5 S( v - #include <NXOpen/MeasureFaces.hxx>* b2 e; t/ e$ |
- #include <NXOpen/NXObject.hxx>3 a" k, K& \8 w) y/ m
- #include <NXOpen/NXObjectManager.hxx>
% V4 K, B* d; U8 r/ C - #include <NXOpen/Body.hxx>
6 q1 u4 Y/ q1 r+ `% t; H+ ?# r - #include <NXOpen/Face.hxx>
0 C6 W: v. w- W: h! `8 i - #include <NXOpen/Unit.hxx>& r8 S& u9 [" _/ z- p/ i! A: B
- #include <NXOpen/UnitCollection.hxx>$ u4 B1 Y: \: z( R b5 y% ?
- using namespace NXOpen;
4 n v- ?' w0 n! {9 ` - ! ~/ ]0 k5 x: U
- static tag_t ask_largest_face_interop(tag_t body_tag)# \6 J) ~7 Y8 k9 {
- {
6 U- D& | e# o6 b* V" [$ W - Session *theSession = Session::GetSession();4 u: y4 B7 E9 S7 r8 m0 [
3 v/ N2 ]0 L! `- Part *workPart(theSession->Parts()->Work());" D& M* e/ l8 H/ M% B. R2 C; ]
- ! {! o' K3 s- A8 [+ w" p
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");3 l6 X m$ V5 ?' g
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");0 u7 C7 {5 U* f7 J1 [ c
3 G: [. m# _( Z( z- y- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));# Y+ d6 D1 t5 b+ _3 p* r( k9 h
- std::vector<Face *> theFaces = theBody->GetFaces();
9 I# Q/ r z+ D& o+ R - 6 K2 T" O3 k8 b& H" F
- double bigArea = 0;
( J0 M- J/ L! w- ? - Face *bigFace;5 m" m4 v3 u% T7 P- ^* M1 F
- std::vector<IParameterizedSurface *> theFace(1);% J l* q2 N/ c. V3 J$ A
- for (int ii = 0; ii < theFaces.size(); ii++)
$ B# i; T. w t4 U+ P - {- R! s. S9 j8 z0 i
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);3 ]1 ]6 {. a1 {5 F
" x6 e7 `4 W6 o! x* o# G- MeasureFaces *theMeasure = workPart->MeasureManager()->0 I1 g2 K. D3 C
- NewFaceProperties(area_units, length_units, 0.999, theFace);5 @) E }9 X& ^& x' N
* ~1 d+ m: z# ?/ z: A0 R2 B- if (theMeasure->Area() > bigArea)1 ^, `, c3 e, ?3 T3 a
- {' h0 x' W' J/ q/ u5 W6 a
- bigArea = theMeasure->Area();6 Y9 E" j6 s1 K& j# H
- bigFace = theFaces[ii]; E, q4 \* W+ Y2 g" o4 V7 {
- }6 R% _$ D B& J
- } e0 b+ q+ E# T8 `; c
1 d: `, P! N4 H/ A f- return bigFace->Tag();
% H& m6 n6 a# F- W/ k7 ?4 ` - }+ y- m" O% {0 C8 ~ W( J6 j% v
复制代码
& q4 x0 b, u( Q2 m9 W7 j. V
0 S. Z9 Y+ t- O! q O i4 F( b' e6 j
|
|