|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
% A7 P* v# r9 d8 k* H* N: d3 g7 h+ Z( a! a1 w9 v
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。, X% d; j* _+ _
3 q- w9 t3 L9 C: ^7 r2 Y# t if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())8 E# o. |/ Z7 v0 \3 w# L- |
{
# N6 }1 D# A# @ y) I // we need add more check for the edge selection
0 n F8 y( y, h; F, Q' N, Z8 _& h for (int i = 0; i < selectCurveGroup.size();i++)
! z# o5 H+ s; K. h+ |1 ^ a {
$ z) T4 V6 n) {; e3 w; N ////////////////////////////////////////////////////////////// U& |$ T* E6 c. P6 j. v8 b; z; ^
Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
2 M9 O; N& ~) Y: M: Y if (selectEdge->IsOccurrence() == false)
2 ?% U2 P* s' N. p7 v5 x {
. ?3 E& L- u3 L3 q5 H1 ~9 I7 Z selectedEdges.push_back(selectEdge);
2 W/ @) p* f% x4 ` }
1 u7 R4 ~' f J `% p else
- x) `5 ^1 m2 A5 K, G" e {! }7 ]# b$ K1 ^7 R* J$ J. u, Z
if (selectEdge->Prototype()->OwningPart() == workPart)
: F& u5 U7 n) d/ v$ | {
5 u9 W/ |% ?7 y9 S selectedEdges.push_back(selectEdge);8 l" M1 o" C+ W. ^5 }0 g: W: n8 t
}' D0 I6 c j1 c5 U ]9 J
else0 d1 \/ R7 D, }4 L+ W4 a
{
8 V2 N& |) h C selectedEdgesOcc.push_back(selectEdge);. x. d1 Y8 l, C7 T
} \1 S9 x; x8 s0 {
}
3 d0 U5 b5 l& C( o4 e0 k& F8 T+ | }
) A! M* y$ l' B2 {' e( H- B$ T$ L
9 o& J5 J8 e( m6 Q8 X: ^2 L ' }2 i( V6 @; `- X- z
//2 get composite curves
8 r+ b: _# {( w; K/ q if(!selectedEdgesOcc.empty())
# k3 i/ ~, ~5 @8 m [6 U, h {
5 P" Z% E, d" W& i) E4 Q& C errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);. L! _' v; W1 g/ R W7 Y( W
if (errorCode || compositeWaveCurves == NULL)
& s4 w( i% S# S( m# @" D" j! ` {
. b1 X0 u8 p# L5 ] e7 c CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");
4 Z/ |( E B: U7 l; f' ] return 1;
3 [/ W* E; }! T( D( g8 f7 ^ }2 f5 O' D& Q" D2 o
vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
5 l: t7 c# w/ Z9 x4 W
. ^' W( b& p5 E& x for (int i = 0; i < allCurves.size();i++)& p& h6 g/ V6 d/ {1 ?
{
4 s6 F/ q0 {7 [: Y1 k* D. A sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));9 z. p& @# T- k U
}
+ C3 {( e3 I+ E% Z1 f }
$ h0 f; P7 Y5 @* Z, g) \! a7 [ if (!selectedEdges.empty())2 ]7 Y" j3 Z5 m f! ^% a$ V9 G0 E
{
( |; u! U9 s5 L8 e1 f errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
4 V% ~+ `% D0 V; n0 ~5 m# I9 [ if (errorCode || compositeCurves == NULL)" T; L& s" w3 v
{
s1 ?+ X$ m& X/ ]1 N& k# E CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");! x9 @& I: {/ D! k! \# ^
return 1;; z8 q) ]* ? E+ e7 J
}
/ V) g+ `% \3 ?8 \2 n& f- | vector<NXObject *> allCurves = compositeCurves->GetEntities();! G$ b5 B& M7 B j( \/ a
for (int i = 0; i < allCurves.size();i++)/ ]# b; a$ b" X! v/ v
{
- _- ?; X t, T4 I+ E* i sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
1 D) i( \ E8 R! a# X6 c O1 O } ; D1 a+ z3 _8 W- j! R
}0 Z+ U0 d6 O) o# O/ w; |8 N( U
; W) y* K+ j1 i$ \# ]' z& M' Z
|
|