|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
+ J3 q2 N, q9 B, |& Y7 k4 e; HNX二次开发源码分享:查找体中最大的面积
7 S( ]2 X8 t& ?3 e$ O通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询0 b) I A1 \! c6 l
; s7 r* d8 T; g& D+ z$ N& R" M
0 E3 r- H1 D! u/ o# o- _3 G$ P& d
- #include <NXOpen/Session.hxx>
9 W# H: [$ u' v4 B7 }: m - #include <NXOpen/Part.hxx>* Z$ Q7 i* ?/ J8 U6 \0 K
- #include <NXOpen/ParTCollection.hxx>
- ~. Y# {% p- C& u' s [ - #include <NXOpen/MeasureManager.hxx>
- x* l& m; s# O8 L( d/ Q - #include <NXOpen/MeasureFaces.hxx>4 Y5 j* {# @6 G0 e( y
- #include <NXOpen/NXObject.hxx>2 w) W/ R) ^: a3 n% k7 e+ V
- #include <NXOpen/NXObjectManager.hxx>
) D" D5 {0 S6 b d# T b - #include <NXOpen/Body.hxx>& m1 k8 \0 G) g7 [9 Y8 u% y0 F! p* R
- #include <NXOpen/Face.hxx>" Z: \# k7 Y, i' u8 I9 Q1 ~9 h
- #include <NXOpen/Unit.hxx> _1 K: m I8 ]# A# x, K
- #include <NXOpen/UnitCollection.hxx>6 q! ]' j3 f1 W+ U; g1 ?4 W! ^& S
- using namespace NXOpen;
* o" F0 [6 P( J# o
, y* X% l% l+ L3 W: O* d- static tag_t ask_largest_face_interop(tag_t body_tag)
; N& ?: K" n& S# }7 g - {/ \* l3 ]; S/ R. ^* D+ r6 i
- Session *theSession = Session::GetSession();
6 ?9 i# c' H. o0 o6 E - . ]/ j6 P7 t& x( P* ^
- Part *workPart(theSession->Parts()->Work());
$ I- B+ y" L! Z9 O& e - # ~) l3 j3 l6 v( g& N8 B2 O0 A5 G( s
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");+ l" d8 t0 ]7 P/ p
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");8 N; q1 W/ C+ o5 f! }0 p
- 6 v0 N, r! b. {
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));$ k4 N& Y& H/ P8 g3 M9 T5 y4 s# h
- std::vector<Face *> theFaces = theBody->GetFaces();: o& ^: L4 Y+ n1 M; U( K
% c9 m) T5 o, B. ]/ d& L" F2 Z- double bigArea = 0;
# [+ g A' V3 ~/ F4 z& D - Face *bigFace;& y# s X5 Q4 p0 V, e% s% f5 {
- std::vector<IParameterizedSurface *> theFace(1);
0 Z+ _: a3 \* ~5 } - for (int ii = 0; ii < theFaces.size(); ii++)8 A6 Y9 |0 P n
- {, ^" M3 y2 [1 |% U' W8 n; k
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);5 Q2 V$ s, _& U, ?5 T6 e% A
5 e2 o0 N- R# _9 B7 M) n& w- MeasureFaces *theMeasure = workPart->MeasureManager()->
. y* G. T* t6 ?5 k - NewFaceProperties(area_units, length_units, 0.999, theFace);
1 N1 K/ \0 ] H/ e5 ` - \4 Q3 d, } _# J0 ]+ h. L
- if (theMeasure->Area() > bigArea)
! E6 h3 d1 h- X - {
( t/ H' t" }: W - bigArea = theMeasure->Area();8 D% g: H& z! h% S
- bigFace = theFaces[ii];
& o& Z9 O8 _, ]+ H - }! C$ |, H1 R2 M" v4 J
- }
8 m$ N% {# ]' g# j8 m& \! `, |
3 o- C& h0 Q( q8 F+ T8 z/ C8 `- return bigFace->Tag();
) ~: U7 b# n; N9 [* C - }
, R+ W6 a5 Q* t% e- X+ j
复制代码 $ s/ Y' M) T: Z' n9 I
) w" U: M" d$ W! \
* ?1 R8 y' S5 X! L) C# {( a' F/ [
|
|