|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
# b- I! ]: C* v: j8 Q- }. E, H; l* {2 t' Q
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。2 C, z" g. d5 d, G- {8 a
- i1 x8 Z' ]7 ^) Z' T% p: { if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty()), U1 U9 t2 u1 V0 D0 L
{1 X: Z& l! r9 {" J- h, g& b8 k
// we need add more check for the edge selection9 O z2 v# S6 n3 M
for (int i = 0; i < selectCurveGroup.size();i++)
0 y4 P. b. V: R- p {
% D7 w. |& x" K8 d //////////////////////////////////////////////////////////////
. {) F) [+ L8 u \( I+ x2 _, [ Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
( j* W M U2 ] if (selectEdge->IsOccurrence() == false)# b8 n. b4 A+ V+ F& q1 F
{
0 d/ B% i0 E8 O6 z selectedEdges.push_back(selectEdge);# [" a* h2 B( [# j
}
3 E/ _8 u' R+ A6 U else
8 x% e# @8 P& M6 ` {
' Z6 [) f: _$ g& u( d if (selectEdge->Prototype()->OwningPart() == workPart)
3 T3 d1 z3 e0 s. B! r6 x* u6 C. L {
( z e; X) ]; [ selectedEdges.push_back(selectEdge);- y& ^6 ]( P) K r3 [7 H9 K
}
5 R* A+ o+ p) z else
$ G4 z9 L& e6 d {) s/ A6 U) B1 E- R$ R4 u; { p* f
selectedEdgesOcc.push_back(selectEdge);
; H1 A; m7 ]% h0 K& H }
2 T1 `" |6 F: } }
# a, d4 N4 b; G6 h+ G# n }
: B6 H \4 [4 ^
- Z! B2 T$ F B8 q \ 8 Y: v$ O/ I/ v" _5 U, G8 h
//2 get composite curves 2 ~1 I8 z+ W8 L$ E0 z; D
if(!selectedEdgesOcc.empty())3 i W5 J0 W9 s" x! Y1 S
{5 \: N5 ^$ W9 F. R* x
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);& W8 S1 K# x, }- o; Q
if (errorCode || compositeWaveCurves == NULL)& Q) L: H" f3 i: d. D! B
{" e$ G( n$ k8 _8 r
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
! \! c1 A: n- q7 L- j5 l6 ] return 1;; p1 u/ y- s' w, J p9 j, v
}
" i5 `, i+ C0 b8 g vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();$ ~ h; ` e4 e7 T5 }
+ h7 K$ v$ H5 a
for (int i = 0; i < allCurves.size();i++)9 b- o7 k7 ?6 t; l0 u* `
{
% N; s; v, k3 |- R% A sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));2 c7 Y) v+ a# r9 c* @
}5 A# b( M U: F- y' u
}$ l7 g/ k; U# t$ }5 z
if (!selectedEdges.empty())/ Y5 p% R/ Q5 `9 i, q
{
6 c/ T& Q/ H [- ]: l0 m; T/ a errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);9 O: k$ [7 d4 ^5 S' T
if (errorCode || compositeCurves == NULL)+ s. Q8 A0 Y; J- |& T. p
{4 M. R# R6 b r# d- R
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
9 C R! b7 }$ O) y1 M return 1;% M5 W3 h( W4 B& f) ]$ d
}8 @: C5 F2 L$ N0 f( s
vector<NXObject *> allCurves = compositeCurves->GetEntities();" o7 H& @/ ]& r' }8 N2 P" ?" y
for (int i = 0; i < allCurves.size();i++): o% ?2 E$ X# k4 z4 K' c4 G6 o
{4 q7 @, N* ?: K8 ~
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
' H+ B1 c1 b- R* n& I4 ^ }
, p7 B2 p% ]7 B7 ~6 B4 M }0 _# L( F$ W: g. G) n/ G8 Z! D, [
' B. K4 w3 v7 b$ M7 V* l% G5 ~, k
|
|