|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
0 N6 M G+ _) [! k- x) `% ^+ kNX二次开发源码分享:查找体中最大的面积, G% {6 E6 l8 ^$ \1 S0 Q- J
通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询
, P- t* x/ o9 z5 Y3 e9 d( I6 G) M# y) L$ A8 Q; ?4 _5 t
* w! Z! M. a0 H1 w$ p# |
- #include <NXOpen/Session.hxx>6 f# t0 T) Q: e9 W
- #include <NXOpen/Part.hxx>
2 R" A$ y" D+ o3 S& V7 O* ] - #include <NXOpen/ParTCollection.hxx>
) u y8 @: j% g, c6 Y - #include <NXOpen/MeasureManager.hxx>
$ i. T2 U) f* t" D) H$ w" G* a$ x - #include <NXOpen/MeasureFaces.hxx>
4 o. g4 e' t" T1 K0 {2 l+ r - #include <NXOpen/NXObject.hxx>9 R! D1 S3 Y5 k6 D4 Z# ^4 V
- #include <NXOpen/NXObjectManager.hxx>
s# S4 S4 b& X7 E U, } - #include <NXOpen/Body.hxx>
- E6 b" G; i& ^, p5 {5 \. g - #include <NXOpen/Face.hxx>
) N5 j$ O/ t! E+ f$ R - #include <NXOpen/Unit.hxx>
. x, R8 T2 N% m4 p2 T( N* f8 w - #include <NXOpen/UnitCollection.hxx>0 M1 z; I4 N; d4 _) x
- using namespace NXOpen;
; z+ @9 T9 r. O% a$ p - % Y; l3 `' [* f/ ^
- static tag_t ask_largest_face_interop(tag_t body_tag)
9 {2 o; K+ W3 L3 H/ k - {
; x) c% f% a! Z6 w" ] - Session *theSession = Session::GetSession();
9 K( t, W) {6 G& h/ M6 ]7 K- P) S - # I, P3 ^% c2 d8 n5 H
- Part *workPart(theSession->Parts()->Work());
5 O8 ` e2 M# ~7 B! `% L - 2 w3 ~7 }' p3 e
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");/ u& L/ s% v( |4 y/ [
- Unit *length_units = workPart->UnitCollection()->GetBase("Length");3 `0 k4 Z2 @( r" S
- / t# w& |5 z! ~+ Q( t: _# j M8 F
- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));
; P& d8 C" H! i3 I* U6 d' R6 c - std::vector<Face *> theFaces = theBody->GetFaces();1 q/ j! G& z1 g Y" [
- / `1 U; _! _" s: t; c
- double bigArea = 0;
, _/ E7 K R; p) l) c8 e; s: f - Face *bigFace;& \! F: d% D# b2 C3 D+ B [: N. h
- std::vector<IParameterizedSurface *> theFace(1);% V _* F# i% q6 |3 `) O9 v
- for (int ii = 0; ii < theFaces.size(); ii++)
( `) S5 ^& [ i& |3 w - {8 m- n( a5 C3 I9 _0 E! C6 C7 Z9 ?
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);
" {9 ~( G2 j+ k2 n' `$ c
+ Z. V3 n- B* z1 Y- u! r! T- MeasureFaces *theMeasure = workPart->MeasureManager()-># c$ E. {: v/ O2 q- [8 Y* f
- NewFaceProperties(area_units, length_units, 0.999, theFace);* p( y2 \0 ]1 q% x
- ( \8 A# C, m% Q1 s5 j( }% n! \9 p4 g
- if (theMeasure->Area() > bigArea) |; M3 P! m K; N- a4 s8 m
- {5 S- a0 Y% ~( g0 A# i }
- bigArea = theMeasure->Area();; R" v0 ?8 G/ H5 H0 |- |4 \! {6 F
- bigFace = theFaces[ii];
1 X2 O$ M: r/ h1 s! i7 R! O/ g+ R - }
7 x7 s- F4 h6 T - }
0 n0 N3 `9 V& W9 H - v, n% |- |. ^! G! G0 Z2 U% w
- return bigFace->Tag();7 ~) i0 I- ^5 s" b p
- }
5 j7 o" J5 S) x" H1 l0 m
复制代码
; h% X/ @5 ~7 r8 n7 u+ Z9 r/ d* d6 V, j' T( k5 n
6 G+ Q5 b1 \4 X% V( I/ {! z8 g |
|