|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
6 i: S6 W* r+ \8 g) k" cNX二次开发源码分享:查找体中最大的面积4 p4 W" p0 `) _" x* e3 z
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询! r) ?* S0 R6 N! K9 G1 g. d# k+ G
$ C2 \) V) b: ~7 g- n) H# |( V% v% N: v
% l; F) q: D7 J" S0 M- #include <NXOpen/Session.hxx>
9 W8 E8 y6 e6 [- a! C - #include <NXOpen/Part.hxx>
9 F B1 c& {: \3 H, d ^ - #include <NXOpen/ParTCollection.hxx>
& d3 D2 G4 e6 X' m - #include <NXOpen/MeasureManager.hxx>
( t$ B) w4 L! M5 \$ I* u* M7 t# w( | - #include <NXOpen/MeasureFaces.hxx>5 I1 G. m; h6 f* \! V) Z- o
- #include <NXOpen/NXObject.hxx>
1 Q) \5 `# { J% k - #include <NXOpen/NXObjectManager.hxx>
S: R; s% @. | Q3 s9 @ - #include <NXOpen/Body.hxx>
: W! N5 ]8 {& M1 A0 | - #include <NXOpen/Face.hxx>
) [; `. C9 y- c6 D: H0 s8 N1 F - #include <NXOpen/Unit.hxx>
: P8 T1 c. n" t7 E* z+ i/ C. P - #include <NXOpen/UnitCollection.hxx>3 j) D. [* q) f% @
- using namespace NXOpen;
/ {1 t3 X% @, V$ J# ]4 w - 9 a6 Z. B$ \8 M, Y/ y
- static tag_t ask_largest_face_interop(tag_t body_tag)
, e: G/ S3 K7 J - {, w0 K! o- N/ m2 n
- Session *theSession = Session::GetSession();
$ O4 B4 E9 k3 M" b0 q
3 k# Z6 r! t; u7 |- Part *workPart(theSession->Parts()->Work());
/ _9 H3 k: C' P$ @$ C ?% d
! B$ I- C* ~2 X- P( ]3 d4 d j- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
8 y4 E$ V" L, \5 c6 T - Unit *length_units = workPart->UnitCollection()->GetBase("Length");
; s# w# j. G1 [9 H1 o: m* ~ - / _4 T* P3 H5 Z1 T Y- n# d2 M4 w
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));: m; i# {/ a; E5 C
- std::vector<Face *> theFaces = theBody->GetFaces();8 X7 a7 T& q4 e& d) z' X
p, G, c; l2 n3 K$ g- double bigArea = 0;
6 e/ ?8 P' v0 k* @1 Y - Face *bigFace;
9 _" `1 _* j3 E4 V# ` - std::vector<IParameterizedSurface *> theFace(1);. c: ?, o$ I1 v6 x
- for (int ii = 0; ii < theFaces.size(); ii++)
( G1 r" t0 |5 f0 b/ p - {5 w( ^( h( ?. O: ~& }
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);, K. m( D, t% d C1 H+ E/ \
4 l( [2 Y# ^, d8 D! T0 I8 d- MeasureFaces *theMeasure = workPart->MeasureManager()->" [* m" Q1 F$ c+ \1 d3 ~7 k( J
- NewFaceProperties(area_units, length_units, 0.999, theFace); u. z* @- }7 ^" ?# |
- / a; g: v+ }1 ?( g0 v
- if (theMeasure->Area() > bigArea)
5 x, W" x+ d6 d8 T7 B - {+ k# Y. |' }3 N) j
- bigArea = theMeasure->Area();
0 T) w- K4 x! |) j5 x) q/ n- L; U( b% ]4 i - bigFace = theFaces[ii];
% k1 W/ D) M. F C - }
( p' C6 ^9 K" M" d5 s7 ] - }5 h, P: \5 c: J+ _" }+ Y0 B
- K$ t" n7 U% F. Q% G- return bigFace->Tag();
6 A! \+ G0 h- L; c - }" _ C5 J8 C" A0 \/ q- B6 h
复制代码
# i0 T* C! k5 Q- d: K
4 j) @4 G" \! i% G3 J' x# p. l* O& L' x6 m
|
|