|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
/ j) b$ [$ S- ?% x' i% i V" ~3 N" `+ b: w
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。) z+ [! e( B# @6 `. O* R
, C- I4 R2 D& q" y* _; X if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())) u: W2 P# P) V" l2 K
{. k$ ~) v& p% t" x7 C- x3 e1 [
// we need add more check for the edge selection
0 q4 u/ {& a3 u- J8 _* d6 p' v9 e for (int i = 0; i < selectCurveGroup.size();i++)
% F6 G2 p2 |8 d* a. x {
4 U9 J, m( b8 F0 {2 B //////////////////////////////////////////////////////////////
4 J0 K \% T' t: W" D- A# s" z Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
4 Y+ d$ |. C) T% U E/ S; M if (selectEdge->IsOccurrence() == false)
: C" ?! y; S' e( R {6 O6 E5 A6 N: ^, S4 E: |+ \
selectedEdges.push_back(selectEdge);
' S2 y4 l8 E8 E$ ?; v3 [) N* o }
0 S* U* W, B5 F1 [ else. [( w: k/ |: x3 k
{
) L4 X) ^- [3 e: x( z% Y if (selectEdge->Prototype()->OwningPart() == workPart)
! l) p2 w5 }+ X: r" ~ {4 }: y, y2 ]0 I/ z/ r! w. |9 Z
selectedEdges.push_back(selectEdge);& p% L' L) }* J/ b6 t
}5 b8 t* r* y* x3 j, z8 P3 y/ K
else7 ?" K& Q: ?' N& F$ k. K' \
{
0 ?/ `* G' c: F4 U( n$ e selectedEdgesOcc.push_back(selectEdge);' k# {$ c d8 W, |6 y2 [( p- X
}
$ h, p; y/ E9 t1 G( G ? }
" b8 V! X9 r) B9 g2 T, ?, n }
3 V( a5 l8 d( V0 {8 }. W6 B/ d/ S
4 _3 _5 I v" B7 w
//2 get composite curves ( n$ o. o6 X: Q, H/ W% o
if(!selectedEdgesOcc.empty())
- N7 d. | V& O" G! M% Q3 X# e {
* M8 Z6 c4 o0 A- j. ~8 r" | errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
7 R4 O l. [8 |& j6 z/ i) D: v& } if (errorCode || compositeWaveCurves == NULL)4 p* D( o$ y. t% c& G) z; n
{
z- L2 s. c& b8 A CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");) ^/ D( q e' \1 X
return 1;
: u& @8 M |9 V& h4 x }
+ m' `' u) E% |$ T' m vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
' @$ I6 m) J2 n# b* Q" T+ j& @* r( C; w& V( j0 t' q) K/ b
for (int i = 0; i < allCurves.size();i++): ^! _+ k! f. x3 O
{
" z# i& `* h+ e sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));3 `# K! f, B0 c: i0 {
}
9 b0 ~; E6 e/ S4 f$ I4 D }0 y* c3 G) h, g ]; @- `
if (!selectedEdges.empty())9 p/ a8 i4 j- {
{+ J9 p, Y5 g- l* t R
errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);4 X! P% o- ^% g% |: E
if (errorCode || compositeCurves == NULL)) K4 J. V! B2 E9 ^6 y
{
" V- {7 l7 }! c* V* M CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
2 [, \, B/ Y, p* S: V return 1;
2 L( D" E! w1 ~1 o }
|/ ~7 P( E5 v" e, _4 e9 u vector<NXObject *> allCurves = compositeCurves->GetEntities();0 r0 g0 E% R$ j8 o3 f5 f
for (int i = 0; i < allCurves.size();i++)
/ Z& l" l5 s5 z* i& u( S+ ]: C* o {
7 J: o3 r2 L$ q0 r' C; k: o sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));: b/ N1 w' Y/ j2 H- O. q+ H0 C
}
: U- w5 P' W/ P# x* q$ c }
+ K X# ^' C* t3 K3 X6 E* _( p' F* F
# N. G/ z1 ~: j, `0 @+ } |
|