|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。- D1 c( N' \/ c) |, T/ i
; W7 }7 f& w5 r6 ?$ G. _4 t" | q
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。4 @$ _ P, k( G/ N, b. C
: b( _: K9 [: k$ ?
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
7 q7 ?! w! [7 \) V. t0 m& F {! L. r, F& K) ?( J
// we need add more check for the edge selection
3 q9 [* z7 [' F. `0 v for (int i = 0; i < selectCurveGroup.size();i++)# Z3 x; I' Z( ]& [6 S; c
{7 J8 l0 K0 M# t# Z1 N q( W
//////////////////////////////////////////////////////////////
" ?3 z; {4 G2 M g8 K: p Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));1 K) L) m1 N2 v# x$ J
if (selectEdge->IsOccurrence() == false)' E9 ~! U4 d% d4 n: }$ G
{9 c* u, ^: V' Y
selectedEdges.push_back(selectEdge);7 s- }! i6 o5 l% \4 b# W2 @
}; }/ E* c$ Q8 G- R, A
else: }& w7 x3 F1 M) A
{
. c% H' M. @+ \! d9 h if (selectEdge->Prototype()->OwningPart() == workPart)
. Q+ h& r4 M( U. a4 Z {
- @& a6 z3 b/ D! H selectedEdges.push_back(selectEdge);
! i- l5 S& [5 a1 p2 C1 j4 {* L }
2 U( P- v; ^7 e else
6 ?7 m3 t- j% j {5 }9 Z+ j, v; m9 Q* u" X% f8 I
selectedEdgesOcc.push_back(selectEdge);
6 i/ F% E8 i( j) k& u6 i4 @ ? }
& k& W6 J8 N# h( t4 v2 S$ W }
: _! i r! F9 }- |, j6 s }
' A4 ?7 E0 r: K- n
! w7 i6 h* }- C) r2 ?/ { 2 k1 F* ]' h. q; g: C
//2 get composite curves $ c( x7 l+ p! F, M' b/ z5 ^
if(!selectedEdgesOcc.empty()) m! i O) ~, m s* u5 h
{! b" u/ J9 H8 _0 H7 h$ W7 s
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);8 M! J! T; m7 V# q2 z4 L
if (errorCode || compositeWaveCurves == NULL)& C; ]7 y& t% W
{% J1 F# f6 w' F2 V) |1 z& C: e
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");7 ~. ^% j }& m5 m/ y
return 1;: f, H, K" p) z0 ~: H
}6 u2 t6 ~& d- }7 g0 F- Z/ R0 R
vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
1 [7 R1 v9 C! H5 r8 b8 K# r
' O7 z, V- X @/ \; h: y8 P4 F for (int i = 0; i < allCurves.size();i++) e* f5 C+ |( o% d6 U
{5 X+ V& ~4 q+ e
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));# ^) p* Z$ g9 t. n9 D9 z6 N
}
! b$ Q3 Z4 T4 A, ^" ^& B' b }
, \, X4 z& T8 P- J6 _ if (!selectedEdges.empty())- h9 w N6 K3 q- B7 t
{
( L5 w! J+ ]- ?8 v$ ` errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
+ l* e |8 X7 G% g0 X/ W `5 A if (errorCode || compositeCurves == NULL)
, m" Y; V1 e( f9 X8 D! B) U* z1 M {& h. K& Q" H' r2 [. ]. P; F
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
; N7 p* M6 A" F r8 Y+ D) E return 1;
9 R9 B z, h4 y: u* V9 [8 ~5 j) e: K }
, @" F6 v& c7 E! g+ K3 ]4 U vector<NXObject *> allCurves = compositeCurves->GetEntities();# c. D& L) W4 s0 H2 o) O- H
for (int i = 0; i < allCurves.size();i++)
% P8 F& V( A6 t2 H4 {/ a+ S {
" B& J# j" `$ w8 z3 ? sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
6 g& b' K B. v! I# G }
/ b! N: z0 Z' r* |: P& M( @5 C }
+ ~" ]% R& [; j+ d6 K2 c1 {# Y& a( A6 u
|
|