|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。/ D( J8 @9 ^) G- g+ d9 s q& r
+ X ]) k! ^7 p2 T; A. B0 K9 z$ [
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。# E- o4 L6 Z# E
& J: R3 M9 g1 E0 S( w# [ if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
( h1 b# z2 e7 T0 D# _2 y; k$ } { l# m0 I: r7 W" \1 \& G2 Q0 P) \1 V* P
// we need add more check for the edge selection0 Q- s9 |/ @: g( a# [
for (int i = 0; i < selectCurveGroup.size();i++)
; a# w5 A9 J+ D7 \$ [, M {4 C- A( ~- b* G
//////////////////////////////////////////////////////////////
3 y: Y; ]$ K- M) L) T3 k4 R Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));! L& }+ p( g* a) V9 F; |$ I/ z
if (selectEdge->IsOccurrence() == false)$ o5 h6 H Y; j3 e$ f; j7 Q* f
{. x. X! H" |8 ~- P0 d/ Y- V. K
selectedEdges.push_back(selectEdge);9 u2 a S3 z3 I+ ~4 t
}
& H% J/ ?; I- J O else
: e) r/ w) i9 V* x+ h9 q& a {
, l! G3 o5 E5 b/ z" r if (selectEdge->Prototype()->OwningPart() == workPart)
1 e& Y9 w3 |1 J( M4 ? {
) Z0 }( w$ X7 ?0 s( j( @6 ^ selectedEdges.push_back(selectEdge);
$ u4 H Y0 G: d) y }3 A! M' k! i4 ]* _9 S$ ~
else9 q! a- m s5 {
{
9 R, {6 O2 x. ? selectedEdgesOcc.push_back(selectEdge);& M9 U# x! j" ?8 q1 [1 P
}
: B" p @2 P7 K$ g8 Q( n8 o+ P }
- B$ s3 e% `6 u1 P }
% v S! z1 \" j1 `3 ~; z2 G
1 \) Y( C% P( f& U: E' K: k8 s, g $ X, \4 G5 f$ _( d/ e; }% j6 x8 ~
//2 get composite curves
9 I4 d+ S: q6 J3 Q+ G if(!selectedEdgesOcc.empty())% w* ?- u* _0 z# V' f/ d4 f7 ^( e7 R
{) w( L X9 g, t, j
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
$ w5 W( l& b2 b) H if (errorCode || compositeWaveCurves == NULL)
! x ~2 c$ O: J7 p( b+ w {
+ u) A, S0 a, m4 C# t, ?4 r9 _% t CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");4 h. v; ]" S- N
return 1;/ c3 I# m' y" Q# \
}
9 {- C& R+ c6 \! L8 Y vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
( [; C0 R+ @1 i7 I3 Z4 v- q3 p' o8 D8 u" \+ B
for (int i = 0; i < allCurves.size();i++)7 G, ]. [1 j3 A
{7 E+ _% R5 F* u1 s! a( K$ m9 Q
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));% B( `- D$ R3 ]/ g0 b; T
}
0 }; U, u# Q) y- u/ M }" F( W4 Z; {8 n
if (!selectedEdges.empty())9 q* I' e$ H2 N. {8 I
{3 T- v$ d- x; C" E
errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
5 C5 D( F9 v8 |2 r! N- I( ^ if (errorCode || compositeCurves == NULL)& H% y$ F0 F7 c3 k8 ?) c
{: O3 l+ e7 B3 n# u, \( x
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");; R7 Y( B9 S. p; }9 ^9 c# T
return 1;
7 K6 {' g( O E7 u! @ }: }5 N2 x; X- }2 p+ t \. @
vector<NXObject *> allCurves = compositeCurves->GetEntities();( Q$ d3 F8 g/ p
for (int i = 0; i < allCurves.size();i++), N4 A/ p; n* M: k2 ^6 z
{% z1 P" ]& B9 b, a5 [$ _
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));2 T) P' n# \' B7 t/ P- ~
} 7 J5 f2 e$ ]8 x4 t2 S. ` b
}
3 D3 p; E# [$ B. ~! L
& \1 A+ f0 s6 t6 Z+ | |
|