|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
1 T: j) |3 t) ^
$ L, ?& z. S2 B0 B紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。9 O* a3 l( V4 ~- v% T2 ^8 ^. ~& k
& W' n B- f0 e/ x) J! i
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())4 T5 r7 d3 e: i' e
{+ t. `6 I2 D# \/ q, F
// we need add more check for the edge selection! N+ ^7 `6 T( w. C2 a
for (int i = 0; i < selectCurveGroup.size();i++)* I) ~! m( T- c- A+ Z
{2 P; |0 J0 P3 ^* N+ |+ ]
//////////////////////////////////////////////////////////////( E% { z; c9 h6 ?0 J+ d
Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
; O1 [4 ]1 r9 E' s5 F7 G1 x if (selectEdge->IsOccurrence() == false)* `. x) z+ e+ a* V
{
, x/ V5 u9 M2 @ selectedEdges.push_back(selectEdge);5 h' m) l; c/ U/ o) C5 L
}$ e( \3 _4 ^% b8 G) V( _1 L
else
: m2 m) {1 H; r {* H8 G9 `6 h7 |6 M
if (selectEdge->Prototype()->OwningPart() == workPart)$ ~7 g6 y: q) X0 `# E( Y( |" {3 O
{, R! P; M0 C% y c1 T
selectedEdges.push_back(selectEdge);0 m' d6 t' B* }# G1 N* c" |' t
}! T) G3 ~& ^' P$ _
else
( G' Z8 M/ z: q0 n4 Z# { {
4 ]# }' Y+ d& B/ T selectedEdgesOcc.push_back(selectEdge);% E g6 |1 ^' D
}
5 _7 B7 I& }/ I% t! S/ F }3 f' w$ i9 j- i; v" Y
}
( z' A! ]' K+ Q+ o3 ~' J
) u6 m5 C [: A
" M+ A4 c0 s$ A1 f' U4 l1 z; C //2 get composite curves
3 |4 Q6 }2 V5 s* F2 R if(!selectedEdgesOcc.empty())8 o( Y1 e2 n& e- l$ [4 N8 d
{
- p; U3 t1 Q" Q5 Y errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);! Y$ E1 S4 y6 N; W% \$ k5 s
if (errorCode || compositeWaveCurves == NULL)$ A# J+ l( {$ R9 d
{
. ]( X3 n4 u; s9 n1 t' w CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");7 I6 C; S- r% T4 R0 [
return 1;
Q* o# g' ^8 \2 \ }7 M' ~" s' h" t/ Q& s0 k v$ U/ {# p; x
vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
$ j4 O9 r+ |$ q/ s4 T3 a3 w
% n* l/ B. o$ a! n: q/ z for (int i = 0; i < allCurves.size();i++)4 K& I/ b* }9 Z2 v
{
; b6 o9 o& K; {# a% a sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
- U# `0 e7 F+ k9 Q3 V) F' ?! S }- r3 H: @! `2 o
}7 P3 X7 J9 b8 X3 g1 u9 J0 }
if (!selectedEdges.empty())( ]% Z; T$ }3 P5 F
{
8 h$ l" w0 u% a. l; f: k6 u" N9 B& C errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);9 ~8 R: m- R; J- t" o+ x' T
if (errorCode || compositeCurves == NULL): E" F5 N2 s9 q
{
* D/ _. k D& l, N6 }. s8 e; @ CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
0 G- N& T3 ^1 X3 C" ` return 1;2 m: K& M9 P) `# h2 r6 w# V
}$ P) B. V2 C4 Q
vector<NXObject *> allCurves = compositeCurves->GetEntities();* ^& l) v" f" W, `7 r
for (int i = 0; i < allCurves.size();i++)$ w) f" E# l7 @! e3 C4 u# v& h
{
9 R2 n1 c& q9 V$ f% U sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));: r0 n* c: A. n9 L! m) b
} " F7 q( K; ~- R2 \% Z; q
}. [$ L0 C1 O9 e3 q
( S( Z6 X' X+ c% b1 t |
|