|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
1 x) `$ {2 A5 Y" L9 R) q; J2 U. z4 t% T7 L2 C
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
6 O' Q/ Q& t. l& V8 Y$ i4 W5 \2 a+ W" B, h5 m9 x/ z p
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
3 b- n Y% {8 {2 `' r { [# l x0 @% R- p0 \
// we need add more check for the edge selection! W5 A1 U& b) K( |5 Y$ p
for (int i = 0; i < selectCurveGroup.size();i++)
' d! D; Q7 p9 k) C {3 R4 g9 U& ]7 I/ ~- ?0 z
//////////////////////////////////////////////////////////////$ e' {2 T: `( @% j1 F% h* l! O
Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));2 I! x; \( u: d1 i% {5 R& I
if (selectEdge->IsOccurrence() == false)
2 W1 i- h% v P& m5 P4 x {' E4 U, j. h3 m& A6 I% c1 ~% C+ C
selectedEdges.push_back(selectEdge);8 i! U2 A. C, V( T% J# @
}8 [$ A5 j& y1 n. |" f. ^7 F* ~
else
5 e' _+ R' h( R {% n7 L7 A( _) K; v+ u
if (selectEdge->Prototype()->OwningPart() == workPart)- J X2 J6 `8 K. K3 N" d9 P
{4 I: Z$ T* W% e2 d( Z3 e
selectedEdges.push_back(selectEdge);& W9 X7 I! f" M
}
( d0 B0 [0 i F5 ~ else
1 P, r5 z+ `6 P5 [; Z {
& w4 i4 U" N) w0 K7 k6 F selectedEdgesOcc.push_back(selectEdge);7 N; o) t- r6 J5 u4 N
}' E$ ?, _0 Z& t5 W% N
}
* ], {( S+ B9 D; V }
! U% W0 w: m L
( [" g6 s8 V! Z/ q4 k - F/ O1 P- s7 ]6 K$ ?, ~/ c
//2 get composite curves
% [) F9 N4 z. |+ _+ f% C# m if(!selectedEdgesOcc.empty())6 @) d, v* D4 H" J; _! O2 ]
{* _ n; `; a" _
errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);1 e8 ~# r, N" K) E2 m n
if (errorCode || compositeWaveCurves == NULL)7 y) U, Y( J( R
{
) F4 h5 r+ ]; H3 t CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
$ p+ n$ G; c, f: ? return 1;/ l) U5 C2 H' I/ Q @ z1 g# x" P
}
! s: ^- o: S3 _8 ^ vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
; H/ t) `: Y2 a9 A4 m- A6 Z6 d2 n7 _0 c
for (int i = 0; i < allCurves.size();i++)
4 g' \$ L6 U# A" r2 o2 r9 F {* B5 W3 Q( _5 B/ Y; P) u7 I
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
' C d" z1 m' A1 z E" S }
8 V1 I2 _- b5 c% Q V9 Z- h }1 o+ C) C$ p3 N* s' g+ N* c# r
if (!selectedEdges.empty())
, W4 M& S) o$ @. q& p( J) t2 s {
6 `& B ~: A. S9 Y- B u1 A7 m errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
1 h& T; g7 w, j7 V6 T if (errorCode || compositeCurves == NULL)
. _5 Y4 F5 }$ u! R3 `# t# d% T {
9 s# l Z6 d9 [7 G CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
6 b+ M& ^0 W5 p( I; K( h return 1;8 O& L. [$ a" L* j3 W) _- M8 G, s
}8 n7 A f4 O1 ?$ \6 W! H+ Q# O
vector<NXObject *> allCurves = compositeCurves->GetEntities();) S6 P5 r9 b4 N
for (int i = 0; i < allCurves.size();i++)
. K& x6 o$ F ]0 X3 ~. O {5 [; y3 r7 U/ p$ S
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));! B1 n+ Z5 y* d$ G
}
0 @3 {3 ]! O1 z' W+ r% n! c }" b; u/ s0 f! o, u1 `8 W
6 u* N5 k/ \5 G; o |
|