|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
5 F+ p: [3 |$ x$ H/ ~! J4 {; L' \NX二次开发源码分享:查找体中最大的面积
! K# o* C! }; N# H7 p( G. P. Z, v9 P& ~通过MeasureFaces 下的area方法可以得到面的面积进行遍历查询 |( c7 _. g- C S+ P
: T% }, _, S: C8 g4 n& L5 r. c
# C& ]5 X& E; W) \- #include <NXOpen/Session.hxx>5 T% C0 O' S+ W) X7 K: k [
- #include <NXOpen/Part.hxx>" ?) t0 R& R. N' \. D
- #include <NXOpen/ParTCollection.hxx>( z# o0 I6 r! N: u
- #include <NXOpen/MeasureManager.hxx># G( N6 K9 r5 o4 y% o" X
- #include <NXOpen/MeasureFaces.hxx>! s* b7 h* o9 Q- u2 K5 \, g" L
- #include <NXOpen/NXObject.hxx># w, S& w" p; C
- #include <NXOpen/NXObjectManager.hxx>
* g% M, Q" E% s, _7 O& B1 f3 M - #include <NXOpen/Body.hxx>3 A' }7 C, ^) j r+ Z3 d
- #include <NXOpen/Face.hxx>0 X7 n" T3 h9 U" [. X. [1 L: s
- #include <NXOpen/Unit.hxx>
- N( k# \. ]/ c" O' c; R - #include <NXOpen/UnitCollection.hxx>- s! f4 R9 [# T# |7 ~" e
- using namespace NXOpen;, ] ^! K" M$ U( P5 n
. i8 y4 U+ i9 k: V0 A1 u4 N2 m- static tag_t ask_largest_face_interop(tag_t body_tag)4 i$ M" C" I$ u. w6 N% `7 H
- {
& l! e: X8 U: ^7 `/ Y - Session *theSession = Session::GetSession();( j; S1 }, p! v! B' T
! E A6 {. r/ z. Z) ^) G- Part *workPart(theSession->Parts()->Work());( O3 P: f' g9 C* x4 c: z9 M4 z
- ' F2 b' r* W7 U' n( _$ G |) L
- Unit *area_units = workPart->UnitCollection()->GetBase("Area");
2 w0 [1 F/ u( a1 n f- [2 z - Unit *length_units = workPart->UnitCollection()->GetBase("Length");
# Z. D* ^& l& \
p) \% y" e) V3 B# m0 G7 H- Body *theBody = dynamic_cast<Body *>(NXObjectManager::Get(body_tag));" n# Y% R1 _6 u P* e# Q8 j
- std::vector<Face *> theFaces = theBody->GetFaces();
) c* X9 F1 H" i: A6 n f; h4 [
) `% I& w" j8 x$ [/ K- double bigArea = 0;
, p8 G; c# w! d' H - Face *bigFace;
) J9 U1 i: r% E5 \) b - std::vector<IParameterizedSurface *> theFace(1);% b! X' x. g' X) ?+ ?$ j; \
- for (int ii = 0; ii < theFaces.size(); ii++); @. ^. c" w/ t8 B& D
- {0 G+ K6 v$ @0 ]( A( R7 I6 s
- theFace[0] = dynamic_cast<IParameterizedSurface *>(theFaces[ii]);( k! k' G4 x9 x* v& o
f5 `. d& i& X8 b# W' {6 j. g! m$ L- MeasureFaces *theMeasure = workPart->MeasureManager()->. k! Y! k! ^. d2 `' i: D- @$ n
- NewFaceProperties(area_units, length_units, 0.999, theFace);
9 |6 O1 w$ [ j9 s - 7 f; C# S6 W1 \$ `8 B
- if (theMeasure->Area() > bigArea); K* l5 i8 F/ U; h
- {- N3 y' V* @, C$ y% |$ e
- bigArea = theMeasure->Area();
1 @5 Y) _5 ]+ t! ^' L8 U1 h - bigFace = theFaces[ii];2 L, G q9 g7 N4 f7 h
- }0 f$ f1 \$ k( q; g. N
- }+ ?. Z3 u# f1 r, K3 r N
- + H- ?) v* a0 `/ \. Y0 P
- return bigFace->Tag();. g! v h1 p1 L! I: C( ~4 o
- } t, c& A+ m: x- E% [
复制代码
( ]; A' |/ l2 p4 m4 v t% U9 Z3 [$ O$ H! }
3 g2 M& r. i: } y, B |
|