|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
1 w% T/ w8 K& r. r' K/ A5 |9 q6 w& _! O/ O4 D; x9 `3 _6 @
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
: I% `9 [3 e# B! A( N! r# Y1 N, D! Y2 Z1 V2 h ~ m
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
$ G8 l! y* n' A$ e {4 s# R e# h8 r8 L! s' n
// we need add more check for the edge selection5 u& ~+ p. h% q) V' R% ~2 D
for (int i = 0; i < selectCurveGroup.size();i++)! u1 R) b6 M6 `5 ?: G
{$ c: D- C- E7 H4 y1 n5 K7 Y
//////////////////////////////////////////////////////////////
, ~) `& N9 ]0 U7 G% _0 h$ u Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));$ a D% a3 ]8 v( N# A
if (selectEdge->IsOccurrence() == false)
0 e6 w# r/ w0 R7 Q# @ {( A( @' l3 w8 B) W
selectedEdges.push_back(selectEdge);
% t% E( n( X% l4 \' Q& g7 L }% f% z$ ^8 R9 ~$ h* L+ W. W2 D
else
; H' e' ?( E" t: C2 x; } {# Z F- J5 ?! z6 _1 e: E5 E; ?
if (selectEdge->Prototype()->OwningPart() == workPart)
' F |5 s6 x3 \# M. r7 r {
* r3 b* b' D/ ]) i/ z: v( O selectedEdges.push_back(selectEdge);
R$ _' {0 H. ~% l }
2 m X" R P; N. h1 A else$ ?5 J: X+ @% O4 ?! D
{1 V- X& E: n4 u8 s' k5 D+ _
selectedEdgesOcc.push_back(selectEdge);
9 a' j- l' u1 n R. r }
4 X7 W$ S7 {+ H7 L2 o9 C" k }
% k4 l. G) L6 \$ E }
$ o9 ^7 r% E" B/ N5 h4 X* y- l9 G7 s4 x
8 Q/ B X: P% c! J" B# R //2 get composite curves : e0 i0 n8 N. q. b8 A
if(!selectedEdgesOcc.empty())
& B4 o3 c# R& q' w4 A- p4 N6 h {
9 q8 m- F l* l! T' ~6 Q: Q errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves); B' J" r. O" ]5 s( M0 P9 n
if (errorCode || compositeWaveCurves == NULL)4 m R+ P& d, g' i( l
{ t5 k$ W5 O# h5 N* i+ f
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
. O1 C3 J. Q( r; S0 `8 m: |* A return 1;4 z+ o0 s% j9 y
}
5 k3 }% N8 f0 O' I- p* p vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
9 @5 P d( }$ |6 o% x6 s* _& y9 P# X# Y$ b* v
for (int i = 0; i < allCurves.size();i++)
, `: H+ ~/ T" ~* u7 D1 ] {
0 D6 [) d3 r5 P$ d, C! s" B Y7 ^ sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
9 K. L. N& h8 f; i }
1 d* C& t6 Q- K5 W2 @9 G }
' I6 H0 I8 G. r; r& R if (!selectedEdges.empty())1 s3 y' O# x2 k. m5 x8 _
{6 u- c$ M7 R1 C6 b3 F8 O, t* K
errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
+ [( {' x- i& P% J W7 S5 C6 i if (errorCode || compositeCurves == NULL)
$ x2 m0 i, l: x! J/ o {. d( ]5 L& M- U+ D, E) Q* l+ I
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
9 m4 F8 A! v+ X. U+ u return 1;
$ e- c9 \' W( U5 u& H4 W }3 g2 z1 S) k( v$ m# `+ S
vector<NXObject *> allCurves = compositeCurves->GetEntities();2 Q* u0 J" F$ c8 x; [9 A: d
for (int i = 0; i < allCurves.size();i++)
# V y% t+ D2 R6 H0 u {
! j* L$ A% M: K5 S$ l2 O sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
0 |* u& P3 M$ D# e& J5 |7 `6 B @4 s }
- ~/ t) l5 }! l2 m) B }8 X; R1 Z8 W+ v4 x) {4 b
2 u! h) n4 J& j% ~2 Y1 Y
|
|