|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。% ^7 v/ b6 b C2 w
0 n4 y; @- I! A+ U紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。1 W$ W$ W2 B3 q
' C" e6 W8 v' | if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())+ y P8 O4 `$ D- ]; W! p
{
6 |, N8 T/ }2 ]6 {; T // we need add more check for the edge selection- S/ {7 o( B' Q/ \4 n6 A
for (int i = 0; i < selectCurveGroup.size();i++)! u' Z7 D$ u5 N+ G# ^
{1 `2 ~: i/ q. _" k5 ]
//////////////////////////////////////////////////////////////
0 q" m i1 R% x6 Y; o1 b Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
" X8 d+ a, n4 T2 s if (selectEdge->IsOccurrence() == false)6 ~) ? q" x+ n" |; v
{( U8 P$ Q! v. O4 @0 ?7 K9 K' |
selectedEdges.push_back(selectEdge);' X0 i( ^9 e/ u
}6 ^, j- ~0 b& k0 C3 m. B9 _0 f
else
* X Y$ v0 _1 Y# p% r' a {
4 \7 D- K8 Q2 r7 f Q3 N if (selectEdge->Prototype()->OwningPart() == workPart)$ Q% C4 a7 i' ~- h6 |1 m
{
' \+ L- y+ G& t; @; S! l. D selectedEdges.push_back(selectEdge);- q5 @$ ^ }" d* p/ y$ ]' L- F- v0 Y
}
- i9 M* N+ C( u/ l* J5 k else. Y1 R% V5 x' Q" B
{1 N5 k# E! l6 l+ |- H* J
selectedEdgesOcc.push_back(selectEdge);
- z5 U5 E4 X1 B q+ M }9 L6 ` l% i' N. o1 C
}
, ^& D, G5 S$ k K, V9 L: }$ V }& D7 V, |' h; Y9 P
) @! a; D) R. t8 X3 t9 o 9 \. [" T2 N; d: n
//2 get composite curves
2 J3 {% A# x4 m/ o' A% g/ X' S if(!selectedEdgesOcc.empty())- E0 x) y7 d5 L$ K2 [9 x; G
{# P" |0 c5 _3 h+ _3 v
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);& W# Q3 i" H1 s% i9 {( ? y4 `8 a
if (errorCode || compositeWaveCurves == NULL)2 a- {& v1 T5 T4 S
{
/ p+ b5 c, r o C7 M, D0 F/ ?; B7 h' v CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
7 [* w8 Q, x5 f4 V+ J$ v) I return 1;5 l1 P( ?7 E* T2 k; S' ?
}
8 a7 n) Z/ u( w( _7 f6 _$ g vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
" R& y2 }/ f- v, m% x* z) l, |2 o0 j6 n5 r
for (int i = 0; i < allCurves.size();i++)# j/ w" V. V8 |& K y
{
! o6 n1 w' W+ `+ j F3 s& P, J0 J sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
/ i' H r2 x2 l. u }
$ o \: t1 L2 i3 } }
0 e' D# i$ w2 J- Z; d y2 g if (!selectedEdges.empty())3 e/ y) w; b$ i& m3 e* l! p4 @
{
. g# m5 H2 j0 L9 f! ^ errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);# P1 Y2 h% Z1 Y: g; ?" D( I2 @$ c
if (errorCode || compositeCurves == NULL)$ E$ D. D9 j* e+ ~" G: b
{* m; r9 R" O) X6 a; ]; ~: S
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");6 `* K% r5 e$ l' T" w& L& X
return 1;
: L/ t; ?4 L, \$ G. p& i1 H& i }
7 U2 d; Y1 Z$ G, `7 Z' O* Q vector<NXObject *> allCurves = compositeCurves->GetEntities();+ y" U( {4 S8 C) L# c, w
for (int i = 0; i < allCurves.size();i++)
/ c2 P: Q) k! P) L: Q& F {" [. O( I" l; Y/ m& i: F4 ^
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));% t; \ J! j7 V) Y& F) } g
} 1 R1 Q4 g0 [- u; ~8 {2 ]
}
4 x4 j$ m$ [' O- K* u" }
, k8 Z1 W3 }* l3 x% B |
|