|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
2 [( p, H, _: [; o; W
NX二次开发源码分享:查找体中最大的面积
v+ a1 o, p0 T# T) T通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询( t+ K3 e% |# R+ ?4 _! a& k6 z
7 j3 P& P' ]6 M d' k. r4 B* J
, O6 Z/ q3 T8 ~3 L4 \! F0 T8 u- #include <NXOpen/Session.hxx>! ~' P% h$ F0 @; i
- #include <NXOpen/Part.hxx>
3 V* m- Q: ~. h# q - #include <NXOpen/ParTCollection.hxx>
5 O( n- `) \* @- W1 Y$ ~+ b: U - #include <NXOpen/MeasureManager.hxx>
+ y! I2 t$ B. Y% I - #include <NXOpen/MeasureFaces.hxx>
1 E1 C M1 ~& P8 w6 V - #include <NXOpen/NXObject.hxx>
I' U( A" R6 F. T. P8 } - #include <NXOpen/NXObjectManager.hxx>" n: u% y, d& X8 M! E6 K+ `. R" U% Y
- #include <NXOpen/Body.hxx>$ o4 a( ? I# T6 [ L; ^1 \
- #include <NXOpen/Face.hxx>
: [* y1 M+ E& D4 P+ S - #include <NXOpen/Unit.hxx>0 k7 H' F |3 W2 T' p( x- ~
- #include <NXOpen/UnitCollection.hxx>
! O" w; i( s; }8 E" ? i - using namespace NXOpen;
* u9 G2 _1 e" k9 ~ - * j* p) S! O' U8 z
- static tag_t ask_largest_face_interop(tag_t body_tag)
% w: R+ E' y& ]) Y - {
8 ]/ I# r, m6 p, R - Session *theSession = Session::GetSession();! \/ g) Q1 y' K) D- c
- + Q* K3 q. b7 Q% d/ j
- Part *workPart(theSession->Parts()->Work());* I" A6 ]/ e! O
* N# k1 z# r: g9 J- x9 o1 z) H- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
6 q; w6 s% O a2 x# O! ~* n6 G - Unit *length_units = workPart->UnitCollection()->GetBase("Length");1 x# p6 V1 N6 n
5 s8 u& _8 R. M9 R! W8 m- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
/ c$ U0 V! V8 Z; z: I! F: P5 M, ? - std::vector<Face *> theFaces = theBody->GetFaces();7 b1 w' I1 ~" E) w T1 S+ T8 V# e
- 1 Y4 y# N4 J( |6 E8 A
- double bigArea = 0;! o$ g1 p3 k/ Z9 z/ M7 h
- Face *bigFace;
; o2 M, |0 Y) T% |5 [ - std::vector<IParameterizedSurface *> theFace(1);
! F* t7 N1 E! u- r8 T. a - for (int ii = 0; ii < theFaces.size(); ii++)
2 T8 k2 ]1 L! ?* c - {
+ X5 H( c1 J5 D - theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
. k2 v: m! o1 B: T7 G; \( V% p - 6 ?7 {5 x' {- T3 w9 P+ G7 j0 C1 I% Y
- MeasureFaces *theMeasure = workPart->MeasureManager()->1 X6 c. a7 o6 E' P# a& l/ l
- NewFaceProperties(area_units, length_units, 0.999, theFace);# K7 m1 H, p/ |9 p# s" B
- h' }+ i6 ]) n3 C8 k4 `+ i- u
- if (theMeasure->Area() > bigArea)
6 [9 a, w0 W# |" w2 V# M) u - {$ c2 |1 Z: J. F+ X
- bigArea = theMeasure->Area();+ Z$ V! M. o1 _) |: j
- bigFace = theFaces[ii];
. {8 h2 c$ S" Q# S - }
! t8 V+ o( H8 P- a - }
, [# H4 ]2 @" n- d2 x8 A
/ p9 z3 ~* |% ^- return bigFace->Tag();
0 v [& w" P- I2 H$ W5 {# C" { - }
! y7 k/ P: S" |5 s v, z N
复制代码 5 a6 c+ f+ o2 q$ s9 W/ ?
8 }- h; _# T& a" e o Z8 Z' N5 {' U/ m; D. p A' ~; ?: W
|
|