查看: 2141|回复: 0

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

[复制链接]

6

主题

4

回帖

60

积分

管理员

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

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

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

×
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。
* `& ]: X0 I+ |6 V
. z! b. H* f! Y  ~$ `, g9 j' W紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
0 z+ R! I8 A) m6 D: U% ^& a' q5 J( Y5 p+ v: ^
                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
! b, X( d' @- ^* g9 K8 c" v                        {
" G. i  s6 e- {# i0 i2 z) ^) O                                // we need add more check for the edge selection
: o' o$ d- X' R9 v) m8 c                                for (int i = 0; i < selectCurveGroup.size();i++)
9 P* I5 a! V% p6 \+ }' R                                {
* z$ u+ q. y  s, U: Y                                        //////////////////////////////////////////////////////////////
9 V$ D9 x4 G9 d6 a4 f) ]$ c                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
& N0 G0 n, m: [                                        if (selectEdge->IsOccurrence() == false)& ^; _  Z; @& j% s  c
                                        {$ @7 Y' C, }5 `1 ^! H5 }, v7 i
                                                selectedEdges.push_back(selectEdge);* Z. w6 X* K. L8 h
                                        }
' ?) M4 T& V4 Z# }                                        else
) ?5 z# [* d. m9 W9 b: \3 M2 ~: w                                        {
& D0 v9 E. z- Y: ]  A) J0 V                                                if (selectEdge->Prototype()->OwningPart() == workPart)
6 _' S/ J8 w' [                                                {0 N, {- G; g3 U) r4 {* j7 z
                                                        selectedEdges.push_back(selectEdge);
5 e$ Y; T# G$ E/ A; K5 }) g5 O- Y# \                                                }, L0 T3 O" C- \' p$ ~
                                                else
+ B3 o1 P3 y( ^! y( d                                                {8 N8 t$ N+ Y- w
                                                        selectedEdgesOcc.push_back(selectEdge);
4 u( V% ^4 b3 `: u/ b                                                }6 J8 `3 }. c' }* K: G0 J* v
                                        }6 V  f1 C+ o& W' W8 k
                                }" l- Y2 N. [% N( ?8 M1 `
7 g* C  A) M  ?! z
                                
  V* y0 Q0 h) [* \; m$ a/ `                                //2 get composite curves
+ x- q( c8 N: Q                                if(!selectedEdgesOcc.empty())
: r- _8 F( g! s% I6 m, m+ e                                {* C5 x1 |0 k# j1 m' }+ ?
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);- @4 c- ]1 V3 n- J
                                        if (errorCode || compositeWaveCurves == NULL)& `" k  D% _8 g6 u) L% Q
                                        {8 \3 w0 N& @+ R% `" Z& H
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
! m8 m5 J! C0 P4 R                                                return 1;6 i1 A+ e2 ?) i4 L4 q& f: I: P
                                        }% X; u9 f' A4 U/ b
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();% Y- e* F+ W- U, E
, N; H0 u; U  l1 e; v; j8 z
                                        for (int i = 0; i < allCurves.size();i++)& N' x. }0 N8 V# C% z6 N1 R
                                        {
: G# v. q1 g% c( B( `                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
3 G$ g& |7 W3 f, a$ E                                        }
$ ?+ p" ^$ M$ j& z1 ^# A& g6 E                                }
/ N8 @4 X7 p/ L+ P: h                                if (!selectedEdges.empty())
& H, C" k& G! M: c                                {: _0 F0 F) [8 O( L7 t. t: Q' u2 R
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
! P% z% G. D6 q# w  d2 n# D2 E5 z                                        if (errorCode || compositeCurves == NULL)( b8 T* M4 x1 |  C& X
                                        {7 _" f' I9 b. C2 [* Z9 j) Q
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");6 N+ x0 E* i8 c# U. ?
                                                return 1;
, ^; u! @& E, T                                        }2 p0 ~6 P3 u( a$ M2 \
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();
3 O$ ^; F9 N+ d, b' a                                        for (int i = 0; i < allCurves.size();i++)
/ o( I: C9 J- r6 D6 r" M9 ?/ y5 u                                        {4 h  z! x+ }/ G# d
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
) w0 i6 G9 U: K) F/ U                                        }                                       
! O' m- \" r3 H" i, b( A  ]5 v                                }
3 P2 h' F) `* \. r' l
# e+ [, R) c* z' s! q
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

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

本版积分规则

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