|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
" T/ v8 B5 Z) C% I. m3 V& F' z# T6 L$ \1 p3 o5 h
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
# G8 Z6 D z+ D$ f: Z
3 ~) N% H2 I3 }+ G2 x if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
! Z# F6 M1 r9 u {, \" Z5 \; t Q
// we need add more check for the edge selection
' S# j I, |" k2 t' J0 h' |4 T for (int i = 0; i < selectCurveGroup.size();i++)
! S. k0 D6 P& E) y- H7 D {' D) _3 [, ~% t! j6 x" i
//////////////////////////////////////////////////////////////# N6 w# Y a( c4 Q) P" M0 i$ H
Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));( L4 P* V* k/ c. E
if (selectEdge->IsOccurrence() == false)
1 G- X) e2 U1 a( d9 q {
$ |; M& I4 Z' x8 }# E% }2 z/ J8 j selectedEdges.push_back(selectEdge);: ^ v' y8 s2 I1 F7 w
}5 x2 Y- c3 {0 s* ?
else+ V+ S% X; |) [7 J9 G1 w
{
1 r$ y V0 h% ~; [1 T2 g if (selectEdge->Prototype()->OwningPart() == workPart)6 g/ c1 U: T6 {7 z! P
{8 P, c7 _0 p) t- `- g9 T
selectedEdges.push_back(selectEdge);
6 \! S% Q( u6 o }5 N9 p* J. ?& f! d" O7 Y- T" @
else% \1 l k5 x! Z" B2 k0 T
{
, C9 u+ N0 n! g2 M selectedEdgesOcc.push_back(selectEdge);3 d8 S* f; U- V. f: A# R
}
& v9 ] {. d1 e8 n }
( M* r# j! q+ B }
3 n) C& _$ U9 l2 {6 D' U. G) j- N' u8 g, j O( \& W
: U' S9 ]* D4 d //2 get composite curves
1 L, q& ^5 I' z3 C6 U if(!selectedEdgesOcc.empty())' `3 p8 k, ~8 J) Y; k/ R
{5 i J+ X# R } ~, J
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
% K* H% {3 Z/ A8 C+ K2 W$ W if (errorCode || compositeWaveCurves == NULL)
$ B, D9 A b3 m) E/ R {- K9 S" g+ T/ I( b' n# |/ u
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
2 k9 U' F; ~. C( t) Q5 k n return 1;& n" I: i+ W. z$ q2 i% R& q
}
* p. M/ h) n9 [( P vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();6 N# c4 @& c+ w9 K5 r0 W
; \; L+ Q2 h7 T7 y( i% W
for (int i = 0; i < allCurves.size();i++)
8 j+ z3 R$ g# L; b% ]+ d {9 K2 H. e0 D; ?8 |- c& ^9 z
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
+ \$ m' z# s) S9 m+ c }6 S. |6 Q: u) p! e1 |# F% ?& x
}7 _% B- v, j4 P, u1 [
if (!selectedEdges.empty())% [8 e5 m. r6 t8 c9 F4 U
{0 f6 v- |# J* K; ^1 |
errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);5 _9 F0 ~; f* g3 l
if (errorCode || compositeCurves == NULL)! o, j: i0 i4 V/ f6 a" ~# n
{# T+ {" M! G7 `3 [% \% u( F, r
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
3 |* U. ^6 ?6 p- o return 1;
8 z9 A3 x) [* z" G5 I }
$ C4 {; [ N# T4 a vector<NXObject *> allCurves = compositeCurves->GetEntities();
, f1 o! ^- n' e- @+ ? for (int i = 0; i < allCurves.size();i++)9 x( M# U* k. Z+ L/ @! r: U
{
: f3 b9 P! Q6 n! h2 ] sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
6 |' l+ i2 k( ~; W, ^/ v" o }
2 p" R k' ~0 @; Y }
m: y+ G8 I E0 d; U
3 C) o% y/ c- i |
|