|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
- c4 x4 W, f: j1 h* h5 m+ Q# b: ^) [* z; S$ r
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
7 X5 L N/ J" \! j* E9 z, u2 {% W! M/ v" [% x
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
0 |# L& r& P+ m `1 O ^5 z {6 [% ]+ T4 ? o& ^5 M3 w$ M) Y7 X
// we need add more check for the edge selection! P7 O; @- @* J- m/ F1 x
for (int i = 0; i < selectCurveGroup.size();i++)- t. W, c0 h* B1 A- |0 o
{( f' r' h# Y" q0 Q3 z1 e4 b
//////////////////////////////////////////////////////////////
. x" [" e# M! H1 W4 y Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));4 L/ F- l( |6 ^' v2 g i# J% d
if (selectEdge->IsOccurrence() == false)
) A1 K. F I; U0 O7 m$ H- J {! V7 m; j- M) x5 c T" a
selectedEdges.push_back(selectEdge);
, Y- [/ w' v& e5 @4 b- T) r- q/ V }
8 Z' {+ l$ U* N" i/ \ else! e# C* T. I0 ^; d4 X
{5 |- o, A m; o" ]3 Y# h9 s
if (selectEdge->Prototype()->OwningPart() == workPart)
% z. [" ?6 d# H' W/ {1 Q {7 s" D# K5 y, v) U' V6 t/ U
selectedEdges.push_back(selectEdge);
9 ]+ R$ [- L0 b0 O; h& k6 P3 _ }3 |* A$ e e; j
else
1 }7 P) K) {; J( f7 T { z& C5 P3 z' \ G9 ~
selectedEdgesOcc.push_back(selectEdge);/ F4 l. j% P4 P3 A
}
! G5 |: `, Y- Y1 X- T/ l }
- o3 a, e/ t$ T( B0 A3 P1 x9 X' H- l }0 B' z4 y6 E4 |+ C7 S; y( D. Z
" O B& x( |6 ?9 h3 ^
H7 D; n& V% U7 c0 w( q7 p
//2 get composite curves
: D* k' X, k$ Z2 e% ?4 D if(!selectedEdgesOcc.empty())+ X8 j. I2 i1 Q( E6 O
{
( X o; }0 m. V) R- a errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);- C% W) o* I" \, o/ c4 J8 K
if (errorCode || compositeWaveCurves == NULL)9 x7 S2 o5 p% H1 d
{
4 @, K. U+ D# k/ v* |( P1 O/ x CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");. L0 ~. c/ C2 V5 P1 N
return 1;
0 u8 o1 w+ J p+ @# ^ }7 Z* W& j( o) E- n# |% I1 R+ f
vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
4 P2 a' U2 h, _" Y( L) H' z; _+ t5 U2 P- @9 C
for (int i = 0; i < allCurves.size();i++)& C2 Z) l/ {9 s! ~( ^) D. v8 X
{8 h# b' A6 F0 O5 o( A
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
. H0 e- N4 Y/ c6 T, K }, S0 q+ C9 }- m
}/ P# j5 g! A, C1 P4 O5 _$ _' X
if (!selectedEdges.empty())3 y" @' x# D u$ I
{
6 ]% |: I7 F7 W8 Z* T errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);% o" F( F) v5 L
if (errorCode || compositeCurves == NULL) W: N: r T2 I) Q) t$ y( {
{
v! K9 ?# I q9 V9 b CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");& j! m2 g7 ^+ A8 t* G' M7 h
return 1;
* r) B0 j, u# ?9 S& f6 @. h% i' K }
: A. T: L6 \0 T) | J/ \. N0 m vector<NXObject *> allCurves = compositeCurves->GetEntities();
! f8 [4 q* o$ o* K* Y9 P6 J$ l for (int i = 0; i < allCurves.size();i++)
+ O6 G* s1 L5 f# l! R7 p' ]4 Z {
6 p' r/ {& Z+ O5 H# P sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));( P+ p$ l3 ?, G$ J8 H, k
} - V( L' z% X4 n, D, `
}: G+ q( }4 n9 b: V5 G
, C& a. Y2 F, T; V0 i5 Q |
|