|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
2 c* F$ i2 A+ ]' C9 N) g1 x
1 N1 _- o" k+ c2 Q5 NNX二次开发源码分享: NXOpen C++获取面的面积和周长
; O6 O- B. T/ b3 x, Q3 |5 y* u) q8 ?
* D5 H" m$ Q+ S( X/ g; S8 M a, t7 s" r/ U( D3 L8 Z- a
6 ^0 g6 X% ~& Z" ], f
, L) {# t/ D% o
& C, G/ F {# U. g[mw_shl_code=cpp,true]double MyClass::MeasureFaceArea(TaggedObject* face_tag)
# l+ r8 r' t/ c+ Y$ Q{
* i) z% B1 F7 ]: m5 Z) i7 F char str[256];
& T& w* o% x! }& A+ @4 j7 d' u
, U# q, s% e& {0 z& k& ? Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("SquareMilliMeter")));
) R$ p5 j5 |9 N) f( O$ X g. }$ Z Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
: q' q* x" }# `; ~
( I! |; D# T) \9 B. J5 |- B2 O //FaceCollector issue is fixed in NX9
+ K* O$ f' H' I4 c. m* G NXObject *nullNXObject(NULL);* a2 Y2 Z5 B1 W2 J x3 ~
MeasureFaceBuilder *measureFaceBuilder1;" b8 T2 G( @& n& K: H/ S
measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);
, r0 Q$ Z# N1 E) y
5 u6 ]" ^% z7 D( Q3 @ Face *face1 = dynamic_cast<Face *>(face_tag);- z7 J' P# Q7 v3 ]
vector<Face *> faces1(1);
9 `: X4 w* m6 g5 z8 |& ?( t& B faces1[0] = face1;
3 [$ E2 `2 Y, P. J FaceDumbRule *faceDumbRule1;( T, ~( z7 u& y# H! d
faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);) p7 [3 _( X4 P2 |/ W& d' \% G
8 Z8 S3 t5 V" h' h/ s std::vector<SelectionIntentRule *> rules1(1);3 }2 V; u1 Y0 e) s$ d3 o1 y
rules1[0] = faceDumbRule1;: G6 l( y, r) m# `: f0 ~6 ~6 H
measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);! M1 \+ z' z/ p: t( h. M
NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();. k- F% H, o2 W6 W- R2 f/ T# T7 ^& _
; H+ _# ^& I8 p, {0 `8 S
NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();
- ?: T2 m& r. L! Z( c5 C7 s: e+ m5 z2 s+ p
MeasureFaces *measureFaces1;
6 U" k8 f G+ A* w measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);
* A6 R9 `7 P5 F7 v
& A+ F2 h |- c: `! {8 A. g double face_area = measureFaces1->Area();; D/ p" p. T; e0 X( y0 i9 m, ~
sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);; l8 o: O) B; z
print(str);- H8 T- W7 e4 e, W
/ ~* ~- [5 a2 g" d double face_perimeter = measureFaces1->Perimeter();' X: v+ h, R4 v# d9 Z2 C: T
sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);4 Y, @9 z! e" A6 A# h0 O) u8 w
print(str);8 I! O- A* Z6 u$ I. a$ {
: Y0 @' h3 T- [( u
delete measureFaces1; , e9 e4 e) u4 y$ n8 a- h! s
delete faceDumbRule1;6 D; M6 G1 f" i, Q! m! i
measureFaceBuilder1->Destroy();
0 U# D6 ]7 N! [1 { return face_area;& W" V, b( k1 @4 [ V4 O6 ]0 H
}& B* B" d+ G' _- W- q: M
[/mw_shl_code]; W) G5 [" q) L
|
|