PLM之家PLMHome-工业软件践行者

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

[复制链接]

2019-7-5 21:20:37 1821 0

admin 发表于 2019-7-5 21:20:37 |阅读模式

admin 楼主

2019-7-5 21:20:37

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

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

x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。% ^7 v/ b6 b  C2 w

0 n4 y; @- I! A+ U紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。1 W$ W$ W2 B3 q

' C" e6 W8 v' |                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())+ y  P8 O4 `$ D- ]; W! p
                        {
6 |, N8 T/ }2 ]6 {; T                                // we need add more check for the edge selection- S/ {7 o( B' Q/ \4 n6 A
                                for (int i = 0; i < selectCurveGroup.size();i++)! u' Z7 D$ u5 N+ G# ^
                                {1 `2 ~: i/ q. _" k5 ]
                                        //////////////////////////////////////////////////////////////
0 q" m  i1 R% x6 Y; o1 b                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
" X8 d+ a, n4 T2 s                                        if (selectEdge->IsOccurrence() == false)6 ~) ?  q" x+ n" |; v
                                        {( U8 P$ Q! v. O4 @0 ?7 K9 K' |
                                                selectedEdges.push_back(selectEdge);' X0 i( ^9 e/ u
                                        }6 ^, j- ~0 b& k0 C3 m. B9 _0 f
                                        else
* X  Y$ v0 _1 Y# p% r' a                                        {
4 \7 D- K8 Q2 r7 f  Q3 N                                                if (selectEdge->Prototype()->OwningPart() == workPart)$ Q% C4 a7 i' ~- h6 |1 m
                                                {
' \+ L- y+ G& t; @; S! l. D                                                        selectedEdges.push_back(selectEdge);- q5 @$ ^  }" d* p/ y$ ]' L- F- v0 Y
                                                }
- i9 M* N+ C( u/ l* J5 k                                                else. Y1 R% V5 x' Q" B
                                                {1 N5 k# E! l6 l+ |- H* J
                                                        selectedEdgesOcc.push_back(selectEdge);
- z5 U5 E4 X1 B  q+ M                                                }9 L6 `  l% i' N. o1 C
                                        }
, ^& D, G5 S$ k  K, V9 L: }$ V                                }& D7 V, |' h; Y9 P

) @! a; D) R. t8 X3 t9 o                                9 \. [" T2 N; d: n
                                //2 get composite curves
2 J3 {% A# x4 m/ o' A% g/ X' S                                if(!selectedEdgesOcc.empty())- E0 x) y7 d5 L$ K2 [9 x; G
                                {# P" |0 c5 _3 h+ _3 v
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);& W# Q3 i" H1 s% i9 {( ?  y4 `8 a
                                        if (errorCode || compositeWaveCurves == NULL)2 a- {& v1 T5 T4 S
                                        {
/ p+ b5 c, r  o  C7 M, D0 F/ ?; B7 h' v                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
7 [* w8 Q, x5 f4 V+ J$ v) I                                                return 1;5 l1 P( ?7 E* T2 k; S' ?
                                        }
8 a7 n) Z/ u( w( _7 f6 _$ g                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
" R& y2 }/ f- v, m% x* z) l, |2 o0 j6 n5 r
                                        for (int i = 0; i < allCurves.size();i++)# j/ w" V. V8 |& K  y
                                        {
! o6 n1 w' W+ `+ j  F3 s& P, J0 J                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
/ i' H  r2 x2 l. u                                        }
$ o  \: t1 L2 i3 }                                }
0 e' D# i$ w2 J- Z; d  y2 g                                if (!selectedEdges.empty())3 e/ y) w; b$ i& m3 e* l! p4 @
                                {
. g# m5 H2 j0 L9 f! ^                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);# P1 Y2 h% Z1 Y: g; ?" D( I2 @$ c
                                        if (errorCode || compositeCurves == NULL)$ E$ D. D9 j* e+ ~" G: b
                                        {* m; r9 R" O) X6 a; ]; ~: S
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");6 `* K% r5 e$ l' T" w& L& X
                                                return 1;
: L/ t; ?4 L, \$ G. p& i1 H& i                                        }
7 U2 d; Y1 Z$ G, `7 Z' O* Q                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();+ y" U( {4 S8 C) L# c, w
                                        for (int i = 0; i < allCurves.size();i++)
/ c2 P: Q) k! P) L: Q& F                                        {" [. O( I" l; Y/ m& i: F4 ^
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));% t; \  J! j7 V) Y& F) }  g
                                        }                                        1 R1 Q4 g0 [- u; ~8 {2 ]
                                }
4 x4 j$ m$ [' O- K* u" }
, k8 Z1 W3 }* l3 x% B
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了