|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
- b$ L5 V3 H. H: n) b0 n: h3 }) V! o8 o" q2 [6 |
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
& {0 @$ a) L5 \& c" [: _
2 P v& f9 @4 V1 f: l if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
% I6 P/ f4 Q/ C/ \7 _ {9 F) A/ Z$ `& S2 C/ T
// we need add more check for the edge selection
6 T% }& g& y; T8 ~' i5 G for (int i = 0; i < selectCurveGroup.size();i++)
) h) D7 F) ], Z7 \8 @ w {, t6 x' A; _$ `9 t D: z' s
//////////////////////////////////////////////////////////////
9 ]8 ^$ G2 u, b8 j1 P7 o# w4 @ Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
1 ?" g `5 M" T if (selectEdge->IsOccurrence() == false)( J3 [" w7 ]/ ^6 k
{- T; y J# v; R
selectedEdges.push_back(selectEdge);
3 a9 E( w0 ~& K& S! p% K! B" y% [ }
* `% Z- t/ w# \ else
4 r2 |% x# R1 @1 y; \: L9 y( o {
! t! i" d% i$ |( G6 a if (selectEdge->Prototype()->OwningPart() == workPart)3 W8 F3 P" t; C0 G! i' _
{
* z! n; n; N2 G/ \( v, H0 l selectedEdges.push_back(selectEdge);
- A9 |: M f/ \' o+ }9 M/ y* { }7 w% o$ ]* g6 Q7 _( p) a M* W! y
else
! @7 t2 Y: G7 e0 T: r+ J4 W {! {5 {7 M% `) @+ p2 V! r" O
selectedEdgesOcc.push_back(selectEdge);, s* W; m0 l! u8 K8 f' O- `$ r
}
9 g9 P0 R) V. m, _ }
; V/ Y& H1 j6 P5 a- P. \ }* D$ Z" o2 N' D, L9 @8 D9 V
% X# n5 J4 {: ]/ j" D8 `, O% K! Y
. P6 b% _! ]5 c0 Y
//2 get composite curves ( ^+ _) h& t* L& `& X" ?9 c
if(!selectedEdgesOcc.empty())
7 _0 b; ?3 L2 V1 S9 V& H! } {
( {- b' A8 \- f$ G* h8 J5 } errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);- d# @) W( j2 \ ~- \
if (errorCode || compositeWaveCurves == NULL)
& |9 i2 q4 K: j1 ] {0 F3 G$ }9 M' g# a/ d8 L8 G
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
! F; J( {, \! t5 b! _4 g; d7 i5 @ return 1;; C0 r1 R" Y4 A5 ^. G( a( l
}
& F0 y3 h0 M+ k# x vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();2 `0 g1 Q3 D. V8 ]7 E
. J# y, l# c, ~9 e u4 W# \ for (int i = 0; i < allCurves.size();i++)
$ p" C6 N( F* ?2 L7 y {
$ j+ `3 s/ c' x. ^ sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));7 j$ C5 }+ l" U# F
}8 X" k6 y& o7 l5 Y, `/ p
}5 [6 w' e8 r( m: O# W0 \5 H0 {
if (!selectedEdges.empty())/ Z. ?, e% v% K1 l+ k" a/ j
{
P( S9 e4 u, z7 k2 T, C errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
0 q& W0 w+ ~0 r- [ if (errorCode || compositeCurves == NULL)
) }% } h7 K# A! i9 |, L& l {8 r7 ~4 P5 |, b8 K
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
- y$ O. W4 v# w+ j: V return 1;
9 B9 K1 T$ }( M+ H1 ]8 I$ X }# T- l& ?% i+ w$ a: `
vector<NXObject *> allCurves = compositeCurves->GetEntities();3 C, `7 v* x I
for (int i = 0; i < allCurves.size();i++)" b- Z+ J; J/ R
{* y) w# Q& v/ R: ^% X7 I1 i
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
: E" ^* H+ w9 w+ d$ G d } ( w/ j1 Z6 L' r* {! L! l0 m
}
n3 |' Y( |4 o' i
+ Z2 ]* u/ S, _! j; B2 { |
|