查看: 2151|回复: 0

[资料] 装配和单个零件混合模式下Composite Curve曲线抽取实现方式

[复制链接]

6

主题

4

回帖

60

积分

管理员

积分
60
发表于 2019-7-5 21:20:37 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

×
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
# b- I! ]: C* v: j8 Q- }. E, H; l* {2 t' Q
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。2 C, z" g. d5 d, G- {8 a

- i1 x8 Z' ]7 ^) Z' T% p: {                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty()), U1 U9 t2 u1 V0 D0 L
                        {1 X: Z& l! r9 {" J- h, g& b8 k
                                // we need add more check for the edge selection9 O  z2 v# S6 n3 M
                                for (int i = 0; i < selectCurveGroup.size();i++)
0 y4 P. b. V: R- p                                {
% D7 w. |& x" K8 d                                        //////////////////////////////////////////////////////////////
. {) F) [+ L8 u  \( I+ x2 _, [                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
( j* W  M  U2 ]                                        if (selectEdge->IsOccurrence() == false)# b8 n. b4 A+ V+ F& q1 F
                                        {
0 d/ B% i0 E8 O6 z                                                selectedEdges.push_back(selectEdge);# [" a* h2 B( [# j
                                        }
3 E/ _8 u' R+ A6 U                                        else
8 x% e# @8 P& M6 `                                        {
' Z6 [) f: _$ g& u( d                                                if (selectEdge->Prototype()->OwningPart() == workPart)
3 T3 d1 z3 e0 s. B! r6 x* u6 C. L                                                {
( z  e; X) ]; [                                                        selectedEdges.push_back(selectEdge);- y& ^6 ]( P) K  r3 [7 H9 K
                                                }
5 R* A+ o+ p) z                                                else
$ G4 z9 L& e6 d                                                {) s/ A6 U) B1 E- R$ R4 u; {  p* f
                                                        selectedEdgesOcc.push_back(selectEdge);
; H1 A; m7 ]% h0 K& H                                                }
2 T1 `" |6 F: }                                        }
# a, d4 N4 b; G6 h+ G# n                                }
: B6 H  \4 [4 ^
- Z! B2 T$ F  B8 q  \                                8 Y: v$ O/ I/ v" _5 U, G8 h
                                //2 get composite curves 2 ~1 I8 z+ W8 L$ E0 z; D
                                if(!selectedEdgesOcc.empty())3 i  W5 J0 W9 s" x! Y1 S
                                {5 \: N5 ^$ W9 F. R* x
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);& W8 S1 K# x, }- o; Q
                                        if (errorCode || compositeWaveCurves == NULL)& Q) L: H" f3 i: d. D! B
                                        {" e$ G( n$ k8 _8 r
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
! \! c1 A: n- q7 L- j5 l6 ]                                                return 1;; p1 u/ y- s' w, J  p9 j, v
                                        }
" i5 `, i+ C0 b8 g                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();$ ~  h; `  e4 e7 T5 }
+ h7 K$ v$ H5 a
                                        for (int i = 0; i < allCurves.size();i++)9 b- o7 k7 ?6 t; l0 u* `
                                        {
% N; s; v, k3 |- R% A                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));2 c7 Y) v+ a# r9 c* @
                                        }5 A# b( M  U: F- y' u
                                }$ l7 g/ k; U# t$ }5 z
                                if (!selectedEdges.empty())/ Y5 p% R/ Q5 `9 i, q
                                {
6 c/ T& Q/ H  [- ]: l0 m; T/ a                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);9 O: k$ [7 d4 ^5 S' T
                                        if (errorCode || compositeCurves == NULL)+ s. Q8 A0 Y; J- |& T. p
                                        {4 M. R# R6 b  r# d- R
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
9 C  R! b7 }$ O) y1 M                                                return 1;% M5 W3 h( W4 B& f) ]$ d
                                        }8 @: C5 F2 L$ N0 f( s
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();" o7 H& @/ ]& r' }8 N2 P" ?" y
                                        for (int i = 0; i < allCurves.size();i++): o% ?2 E$ X# k4 z4 K' c4 G6 o
                                        {4 q7 @, N* ?: K8 ~
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
' H+ B1 c1 b- R* n& I4 ^                                        }                                       
, p7 B2 p% ]7 B7 ~6 B4 M                                }0 _# L( F$ W: g. G) n/ G8 Z! D, [
' B. K4 w3 v7 b$ M7 V* l% G5 ~, k
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部