|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
8 c8 F* R# g; S' y# n p
6 k' H) f0 R$ `% @$ {
NX二次开发源码分享: NXOpen C++获取面的面积和周长# M- T) B2 T# G0 h* Q( D$ j/ `. {
6 ~& B- {/ x; d9 X# z. Q4 [" v
( W, Q+ ]8 U: J
; k2 |: O9 g, L" E# @+ t
$ p9 T( V! R3 I1 P, x$ `3 v; f
- }7 r% z8 I. h- _: X[mw_shl_code=cpp,true]double MyClass::MeasureFaceArea(TaggedObject* face_tag)
1 j: T: Q6 h) s/ b{
& H$ ~6 s, Q8 Z7 F) m- x' T char str[256];5 q) f: {0 s1 f5 z b \
1 y U6 R9 o, @. G) { Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("SquareMilliMeter")));
0 S' H6 z/ w( Y, ? Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
9 ~( x" y& u% |
' s0 J2 \' P: ?4 S- _: t //FaceCollector issue is fixed in NX90 z- L) y$ z0 t% P3 R0 s$ F
NXObject *nullNXObject(NULL);& H$ `* E' i6 A# G
MeasureFaceBuilder *measureFaceBuilder1;
' p) m4 X p% N7 O4 }1 ] Y' s. H measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);6 l* o9 \6 M( ^
! k" }* q5 x" _+ @6 a Face *face1 = dynamic_cast<Face *>(face_tag);5 G t/ a9 M) W( U
vector<Face *> faces1(1);
" Q: _: A3 g& |4 [; I) X- P faces1[0] = face1;5 `: v. l, V, D0 S* T5 z, G
FaceDumbRule *faceDumbRule1;
) P- V) W P. |/ ?! u- j; z$ W faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);1 v% y3 P' G9 k3 i2 }3 ]2 u7 h1 m
4 H/ w7 J% s6 o t7 t6 S: p
std::vector<SelectionIntentRule *> rules1(1);
/ y+ A& ~9 B% K4 g2 W: y& ` rules1[0] = faceDumbRule1;; ^9 z1 ]4 v4 V1 P: G/ ~4 V, h4 N
measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);3 R6 V% F/ s6 X
NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();
- @$ w4 d3 I8 K% ~( _! Z9 O" @1 A2 R) s
NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();
) M2 E4 Q7 b/ }, f$ X/ J+ g, E/ V0 ]7 T4 @/ i; F" f0 M0 v* E
MeasureFaces *measureFaces1;
5 O; v- \" Y' k4 L& p6 S measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);; G6 T% w8 O8 O+ U
+ {* _# w( k! l; j
double face_area = measureFaces1->Area();3 ~2 H' ?4 o! _, p5 d
sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);
9 P {- y! t' s+ w u# m( _ print(str);
( A5 A% p5 j; h9 v7 u, D- @
/ ~* u0 B5 Z9 A2 h/ ]* J, f7 H4 v double face_perimeter = measureFaces1->Perimeter();- H1 t6 ^! z5 e/ E# H; \# c
sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);
$ g7 V$ f& D2 U- b8 d% l print(str);( m8 p, ~7 E1 X
- {0 P/ X# |5 T, R3 V) @8 B delete measureFaces1; v4 b9 K" B/ m2 r# p9 A
delete faceDumbRule1;6 ^2 s0 a; a9 e8 Y) [
measureFaceBuilder1->Destroy();
/ r6 q Y& `+ u return face_area;
3 c& `0 |$ V2 W: `% }" R1 [4 r}% S% P! s- ]7 _- R* b+ q
[/mw_shl_code]* c: T8 k$ | V! A' ~$ p
|
|