|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。' q- F9 { F6 U& u0 g. _
, C6 g$ L9 W' g( q" ^, m+ D紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
6 H `: i* n8 K8 k* u4 ^9 v8 o1 p$ O$ N6 u& L7 _ j+ S# m ?
if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty()); b% H9 ^9 L$ N* M' X9 c
{
0 n" K) I# Q! _# B3 [ // we need add more check for the edge selection
* x% S' O7 b2 U, @& { for (int i = 0; i < selectCurveGroup.size();i++)6 T# D- M* C3 |+ L: ?. [8 p
{* f) h- [& {: j7 Y7 b6 V
//////////////////////////////////////////////////////////////
! x5 Q2 h9 B( Q9 W5 Z Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
1 T4 W- L; Z, Z. A if (selectEdge->IsOccurrence() == false)
- U2 @8 ]; K0 h2 ?' l, K {8 g+ \1 m; n7 R8 T* `+ ^
selectedEdges.push_back(selectEdge);
: M; X( g' r3 v }
" ~+ s! P9 }, j, [7 M else0 S6 a7 i" x9 V/ ^0 i" y% B# U
{5 h+ j# C# I9 B3 A3 S% S7 G& k
if (selectEdge->Prototype()->OwningPart() == workPart)1 v. H' l- F4 i) P
{, V6 ?3 Z" k3 ~" S( u. S
selectedEdges.push_back(selectEdge);
8 N% Q1 M+ u- b0 y2 T D+ V }
- ^# `5 G' Z# s5 E% I else2 B h( Y6 I- P0 w" E$ l5 d
{( h k) t8 N2 L+ O6 e1 i( Q
selectedEdgesOcc.push_back(selectEdge);
% D% K" s+ M A, @& ? }
" P/ p( B. a! g }
5 B, ~2 ^' [' y, K- x8 J }
) \+ `5 t- _+ ^+ b
+ E& U- M: L7 g# k
) V# x: A% E8 u" j' J //2 get composite curves 9 r9 _5 j6 U/ N- q
if(!selectedEdgesOcc.empty()): p; d, z6 f% z r
{
! B7 e2 q2 `/ X% h7 @/ Z errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
7 I& |, ?8 M! U if (errorCode || compositeWaveCurves == NULL)
1 P5 }* l# j! w. J9 j8 S: l% z9 P {
: M% v% s M; [8 d# I CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves failed!");. b4 U1 p5 t' `& i# g
return 1;( f! j" L( D& i# B$ x
}8 c( O7 ^5 p2 O6 z
vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();4 g3 G! U1 Y+ [6 n5 s5 x7 T
# ?: V/ A7 d4 U' m! ]3 L, ^ for (int i = 0; i < allCurves.size();i++)
* `3 Z6 i; N9 y# S {% F( ?0 |" ^1 [
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
+ X2 l, A! y D1 i1 U. ? }
2 `, R+ K2 p2 J/ `7 N- _ } i9 U) N& u6 E2 N
if (!selectedEdges.empty())
q5 S/ ~" U% D7 O8 p7 ] {& s% D) p- J& T& F1 \- _, ]
errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);+ R& S$ u6 }/ {- }
if (errorCode || compositeCurves == NULL): g% ^7 a; [ \; d' j% ]
{% n# N3 `, d2 T7 ]0 Q9 c4 b& ?
CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves failed!");
$ y2 X* Y6 L% x5 g return 1;
1 B7 ]) K4 G" ~8 H% B. p0 G7 a }$ h* _6 R9 f" p! U1 N9 f5 Q
vector<NXObject *> allCurves = compositeCurves->GetEntities();- C6 m0 m# ~* G3 T8 }" t; A
for (int i = 0; i < allCurves.size();i++)! } c' z$ ] d: V" n) q# i
{8 a' \: {5 p Q( h
sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));, M- D7 S- v2 H! ^/ t$ y
} # w! g. _$ J" I1 [6 v" L( Z+ d
}9 Q* H, ~; e4 \6 G$ g6 y
: _5 H, K2 J3 l* w; U$ Q+ S: h
|
|