|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。# C* I; G- p* }+ i2 H0 p7 J0 n
% |" |6 T# K+ Y+ \紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。" U$ F6 p& O! K0 }, V
5 J( U$ o2 v2 |
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())% b5 F5 C* u& R. L
{( ^, J2 c2 f+ r) \( k
// we need add more check for the edge selection( Y. b9 h: H6 b; H
for (int i = 0; i < selectCurveGroup.size();i++)2 U* b. s9 p$ K: N: ?' i5 Q( x
{
& t. ~- e& N8 X" z //////////////////////////////////////////////////////////////
$ N8 D% b% u ~! i' \; d Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
5 U* `* o2 }) P! x1 i/ h% X if (selectEdge->IsOccurrence() == false)
) P" q' U& T( D, J6 g- g! V+ ~' J {! t: w' a" V3 i
selectedEdges.push_back(selectEdge);5 F- R* i0 _; X6 L
}1 }, }+ q e. v* [. h/ v
else
9 g3 F& z/ e9 R' J( b! B { f2 R: O4 I2 u* o6 V5 T4 U# O
if (selectEdge->Prototype()->OwningPart() == workPart)9 x! F7 u6 t0 E! ~4 U$ t# c8 c
{
, r( u0 C) n: f5 I3 }. E selectedEdges.push_back(selectEdge);# k8 k/ L0 H: L
}0 J2 \% N ~, P9 r2 ]
else7 k& w5 U0 O: ]4 H4 K% m! o6 {
{. V8 o5 h% x! W9 ?, I
selectedEdgesOcc.push_back(selectEdge);$ d- k, h7 C% r( E0 N
}
; B. A: z5 y3 q5 n& m }
' }+ F0 J# @4 O }
3 }0 Z7 H/ v) x/ z7 l9 w
: Y, n' i- H" [2 N
% A6 H, G8 a7 R7 \2 }0 Y //2 get composite curves
( j3 j7 h( K" H: P9 A3 Z6 E# N if(!selectedEdgesOcc.empty())
% ]/ `2 a9 ?. x" W/ C4 u( ^ {
0 f/ l) l/ h1 Z1 b+ {& l$ o1 A errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
6 R# N6 \% C- V; O2 U if (errorCode || compositeWaveCurves == NULL): N( q' I, Y5 a+ T" ~( W
{4 z8 a( ?6 u- b/ |1 u0 {4 d) O
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");$ M/ @& |& Y8 i* C& K; y
return 1;/ S0 d' Q5 F! i( i
}
! I0 } c) X$ ~$ m2 | vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();' T2 s- L5 j% s" n
+ ?' v6 t: _1 H6 l- Y5 T. }% [2 K
for (int i = 0; i < allCurves.size();i++)
3 o8 ?1 `$ o5 J {
/ S6 W: j: e) n, @) B1 q sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
$ q2 A2 x4 S0 `$ @. j# {5 e }/ d9 f& z6 Z/ Q' |
}) u' l: H2 B4 B( J
if (!selectedEdges.empty())+ |' R, @' |* a
{9 U/ J6 _/ B& z+ f+ n' z' P. x) `) H
errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
$ B3 B/ [# @/ F6 B4 @ if (errorCode || compositeCurves == NULL)
/ W0 w6 z) {. g7 L- n! z {
2 e* n* n7 w5 S7 V ] CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
8 j9 ~- H5 j0 G. F$ K return 1;
9 n% \& C+ Q, O- g! b6 y6 ~+ \ }- _1 @6 D, q% a; k e" D2 P$ d6 W$ z
vector<NXObject *> allCurves = compositeCurves->GetEntities();' V$ R( k' x4 d8 `& F( a
for (int i = 0; i < allCurves.size();i++)
% v$ ]- v4 l9 ~9 N+ X {
' l: S% [! B- D3 _: Q0 k sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));; ]0 e% B. w4 n. f6 C0 X% d
} $ m, T. j3 J; C* ]9 v3 A+ \
}- c. q' r" G2 }5 I- k
) G. I3 d8 {7 T
|
|