|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
! M2 x. R1 e" w. d& O& b) h1 c4 Q6 p. K3 y- j3 ^: Z
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。$ z6 j2 V2 }" d0 V" p1 o4 ?
# W. w) w6 q# ^# \5 G5 b6 i
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty()); l2 a$ Z1 i( L* A) `0 u
{
6 r/ r" _4 A- H7 L# h // we need add more check for the edge selection! K6 z8 J4 ]) ]
for (int i = 0; i < selectCurveGroup.size();i++)
# ]# N( ^( @5 U' E$ m {
; |8 L1 s! _' Q! I1 g //////////////////////////////////////////////////////////////0 _8 f. ], j2 [) F0 o2 ~$ k$ h4 h
Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
5 \, G& ^: t4 k: r. l2 w if (selectEdge->IsOccurrence() == false)
( @1 R2 y. ~$ J3 P9 g! l% \# X {9 g# M9 t& p: K8 {$ y5 Q
selectedEdges.push_back(selectEdge);$ S( W+ ?; v( m6 ]3 r. l
}
4 V6 R, m/ P6 M H7 K( `( h- b else, P6 i. _+ `7 d; J8 U6 n
{) S. A( g' |4 D9 T6 |' V4 X
if (selectEdge->Prototype()->OwningPart() == workPart)
' s9 B3 M1 e0 y- |( A6 e" h% G {
7 |, G* d) l+ b0 C selectedEdges.push_back(selectEdge);1 C* z" a3 S0 C% o7 }. j/ b
}
3 }: R: q! O1 D else
: h: r: S0 F0 i$ V {
: R& x, Y5 M8 Q ]/ m: }4 @ selectedEdgesOcc.push_back(selectEdge);
5 t; ^+ ^4 U( L& Z }- d2 G7 k1 r+ K
}! ~9 G/ U# w& L
}
/ Q# N4 B; R/ E( E$ K( L* M0 f( w' E( k: H8 H7 e6 B% j
! C* V( U$ P# C: ~' [' s //2 get composite curves
( s) F" X2 \9 o if(!selectedEdgesOcc.empty())
, @: Q6 A$ w$ X! z! S, H# w( J {/ ^+ x; {: G; f$ ~
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);0 |! _2 S, h+ j7 w
if (errorCode || compositeWaveCurves == NULL), L8 W3 w( j7 q+ o7 s) o
{
. c! B$ y% b- f CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
! f, N9 ^9 t, o& V1 p7 e return 1;7 n' S! M$ Z3 |* Y; J
}
, J5 k8 m# x3 z( I$ ~$ a; N vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
' F& R0 {7 K- \0 c% o2 A* B) Z9 _; Y6 x" g7 O" I h8 ^* g
for (int i = 0; i < allCurves.size();i++)
* S0 c* t9 ~# E3 n {2 m1 Q, s4 O; L4 _7 \
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));0 Y1 d% C+ b8 { Y
}" ^* ] S [- O- u0 x2 T; K
}
; C5 q$ S" |2 i* I- x0 a if (!selectedEdges.empty())1 s2 F R) p5 F; z
{) O+ M* X' S- c# O5 s
errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
- p2 \# ]1 b; z if (errorCode || compositeCurves == NULL)
9 ]+ N' c5 L5 X! {0 w {) D% _( Z2 g. _4 o8 P8 Y
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");0 U9 n4 i6 B e5 Z n
return 1;8 k+ T0 ~7 ~$ x4 c
}
, o! [* y) ^; e4 F' T* o( p vector<NXObject *> allCurves = compositeCurves->GetEntities();
' H/ G/ O, w4 ?" c1 | for (int i = 0; i < allCurves.size();i++), n5 Q! c0 B! W( `+ S: s2 ]
{
% C$ _3 e# r- N6 ` sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
' h1 S& U5 |* ]) `5 x% g: }" Z D }
@5 J4 c# u% | }7 [6 h9 H6 G7 _& j( a* k
' M0 u+ i7 f& n ]
|
|