|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。. ~' C: Y+ y% V
' [" z! s- D/ Z2 F* A X8 U$ T紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。0 a J% o- e. @; P9 |
" r, h5 @, }9 y( m) \' ^
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
7 Z9 M. z1 }! |6 n' j; x {1 h4 U+ A" @7 v" a2 F
// we need add more check for the edge selection
$ F& _9 m1 y% a for (int i = 0; i < selectCurveGroup.size();i++)
. B; t. x J+ f$ ]9 E0 [ {8 f+ O! L0 u. H& y8 @ s& p
//////////////////////////////////////////////////////////////: y) }8 c, L1 t1 V
Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
+ O% X( U8 p$ w8 ~% Q1 U7 J" g if (selectEdge->IsOccurrence() == false)
1 y( n4 k6 b2 P2 z" q {
+ Q. G- c1 R3 B3 u6 K; b% O selectedEdges.push_back(selectEdge);
% Q) L. K0 F1 J5 E& e }
5 J' b* F9 m4 r9 a; ` else
* c) K8 J3 ~! Z) F {8 A4 c# K6 p2 g' B2 t
if (selectEdge->Prototype()->OwningPart() == workPart)
7 t6 b# L" ^& P7 d- T {) C3 y) B9 W( ~) X& F
selectedEdges.push_back(selectEdge);/ C0 y. B0 U% w1 r
}
1 y! `2 e) t# ]! e* ?0 Z else
0 Y0 W% \4 D/ `/ u, c {0 h9 \% O6 z" \( \5 J$ L
selectedEdgesOcc.push_back(selectEdge);4 I, l. i( q; ]) P# N/ P" Z
}% i/ E: t" n! N, \! e
}% Z1 d& K% C' X G+ \+ { f8 \ H8 w
}
% _3 d( i3 m! _1 `/ L% ~' x0 d2 X0 S& E; n( {6 X8 P1 k% ]+ e: Q
- r. U# V( Y& {8 n
//2 get composite curves
$ R7 f- q- \+ a5 Z$ b if(!selectedEdgesOcc.empty())3 s D2 b* E) m
{' |" o7 C/ m, z( r' ]0 R
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);& m: D/ [1 C5 X% ]: ]
if (errorCode || compositeWaveCurves == NULL)
5 C9 L( [1 U* _& m2 x/ Q {
7 w2 E; j0 f) {* E7 [, U- C CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
* k& n* u# W9 y( w8 L8 q( K return 1;1 G/ f% E) L; C8 M, z( {- {
}" z6 u/ w2 E* k; G1 b0 S: g
vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();7 z, {' T, v6 i( d
3 G! G$ l, @* _) x0 | for (int i = 0; i < allCurves.size();i++)6 r. o$ \. p$ A, g
{
+ `: x0 A1 K9 y sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));% O! v0 o9 E$ E6 |* N
}
9 l6 B& C, j* d# ]- J }' \) z. B* i/ l( m9 R* i7 e* c+ e. ^
if (!selectedEdges.empty())
9 w( ]% h1 l( g1 h( ]/ N, e5 b {
8 W; G L& u* q8 Z( f+ m errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
* p0 r( A; J/ V, M i" m if (errorCode || compositeCurves == NULL)
3 F2 i$ M0 c3 R7 n: y; C6 F {
" M* f' k& J( B. T CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
+ h8 g7 s' Q* k! T1 u6 B return 1;
" s1 m* [; t5 m7 g. ` }: N; e2 ~# G" d
vector<NXObject *> allCurves = compositeCurves->GetEntities();; V, c& O# U; ^ ~4 c& b( ?; D) N
for (int i = 0; i < allCurves.size();i++)
+ Z* N3 y, g/ [8 I3 F; y {3 g) |! g% w( Y3 {# a
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));2 O# P1 T7 Y+ ]6 d. }- s5 |. d
}
h1 g" l5 I. A }8 ^3 i4 ]) `: T/ X
8 a, w" C5 g/ ~" i( u4 p, u
|
|