|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。1 x6 \# C; Q( u. d
0 o' n8 V5 u9 l& q6 [7 c紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。$ U8 h1 t7 Q; P, \8 e8 I; Z* h
0 M; O& @: C' o5 } if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
; t' `4 r! s( M4 _- [9 X {
+ o6 ~1 L( i& @" D' E // we need add more check for the edge selection
: |" Q( v8 W& w. p0 o for (int i = 0; i < selectCurveGroup.size();i++)
$ L$ }% K' x4 c9 X! S" C8 P {8 A- I0 n: D7 o8 V. [
//////////////////////////////////////////////////////////////6 i* p( {% V4 p) ^6 n/ S) O3 ~
Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));( U1 w& _! {6 A1 C" L6 I: S
if (selectEdge->IsOccurrence() == false)
- D+ t- c1 c; L+ g! r6 F: q { c* M. a! v1 j
selectedEdges.push_back(selectEdge);
: Q: j& Y0 G5 j }7 J& y! y& J& u6 q( p+ d9 T( H
else
0 v' y1 X* @+ L. j9 K {
" o: r3 A0 j* l0 V0 G. I$ @ if (selectEdge->Prototype()->OwningPart() == workPart)
: k y2 Z; \8 `8 C$ v4 g" t- ]6 b. N {4 v( O1 `* p+ p4 `! \& ?# d
selectedEdges.push_back(selectEdge);0 T3 ]/ k' W" ^# O7 W6 S- I
}
9 e! [" I0 E6 R Q else! o# S% P' ^, L3 i4 c6 {/ M3 r
{6 S9 K7 T c ]7 q5 K5 d0 j
selectedEdgesOcc.push_back(selectEdge);
$ @' i( X. v j. X/ l( T' r; n4 l }
1 s) Q0 n3 }( L9 E+ q8 @( m9 V }
0 O$ o/ v1 g5 |7 c" n/ `; m }
3 C; P! k+ q' @$ K8 y! P: m9 l5 r* E# U' i8 V- C
9 N3 k7 [! d! F3 g4 P4 {( g& `5 p& K //2 get composite curves ' t' L+ Y; g G! @
if(!selectedEdgesOcc.empty())$ t. f( f0 S4 D
{$ V3 C- S5 A4 G |# T% q5 ^
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
. K$ j& @2 x) I) p9 n( C if (errorCode || compositeWaveCurves == NULL)
$ Y) c/ T% `3 T0 q$ n# q {
C6 K# F/ r1 _ CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");9 j7 S5 d3 Q0 S g% R! b
return 1;+ t) Q4 C4 e" F6 E) r* e
}5 u# Z/ u0 y5 l
vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();. A! {; h# i& s4 |3 @
' X8 i% x* @4 [$ Z+ T3 V' ]; [ for (int i = 0; i < allCurves.size();i++)" W, n/ F% z8 ]) C
{& T" n" i2 W; W# l, ~* Z2 v
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));/ _+ |$ ]; G6 j; z$ D! i# D
}; f: p" `5 O2 o/ M: Y% N" d
}* M$ `+ y5 M4 t5 |/ b0 V% q( j+ W/ @3 g
if (!selectedEdges.empty())& ~( E1 \4 p7 i7 `
{
+ w" S A: v- w$ u' A l3 ^ errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);' w% m3 i9 A0 Y& C7 Q
if (errorCode || compositeCurves == NULL)
5 F9 N9 s3 j& U( _ {
- W. |2 W' z. Q V CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");% G! p! O+ v+ e+ c+ ]
return 1;8 [# P; J' {2 K* w7 e9 [
}
6 p2 q" C$ q& W" m0 [: _, ] vector<NXObject *> allCurves = compositeCurves->GetEntities();
* k, ^7 m; D! d/ Q. ?) g for (int i = 0; i < allCurves.size();i++)
5 P" [3 r; }. x0 b/ \, s. A {
: _3 M/ {" R& p1 Z5 x: A$ d, p sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));: C4 f, b3 v, K+ I$ F" C' B- @0 N
}
9 {" ~% q# c: z' B6 t }0 E0 |7 D7 \( z
: R2 O' l# }4 P6 G+ d |
|