PLM之家PLMHome-国产软件践行者

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

[复制链接]

2019-7-5 21:20:37 1749 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,两个方法场景不同,这就需要进行分别判断。. ~' C: Y+ y% V

' [" z! s- D/ Z2 F* A  X8 U$ T紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。0 a  J% o- e. @; P9 |
" r, h5 @, }9 y( m) \' ^
                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
7 Z9 M. z1 }! |6 n' j; x                        {1 h4 U+ A" @7 v" a2 F
                                // we need add more check for the edge selection
$ F& _9 m1 y% a                                for (int i = 0; i < selectCurveGroup.size();i++)
. B; t. x  J+ f$ ]9 E0 [                                {8 f+ O! L0 u. H& y8 @  s& p
                                        //////////////////////////////////////////////////////////////: y) }8 c, L1 t1 V
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
+ O% X( U8 p$ w8 ~% Q1 U7 J" g                                        if (selectEdge->IsOccurrence() == false)
1 y( n4 k6 b2 P2 z" q                                        {
+ Q. G- c1 R3 B3 u6 K; b% O                                                selectedEdges.push_back(selectEdge);
% Q) L. K0 F1 J5 E& e                                        }
5 J' b* F9 m4 r9 a; `                                        else
* c) K8 J3 ~! Z) F                                        {8 A4 c# K6 p2 g' B2 t
                                                if (selectEdge->Prototype()->OwningPart() == workPart)
7 t6 b# L" ^& P7 d- T                                                {) C3 y) B9 W( ~) X& F
                                                        selectedEdges.push_back(selectEdge);/ C0 y. B0 U% w1 r
                                                }
1 y! `2 e) t# ]! e* ?0 Z                                                else
0 Y0 W% \4 D/ `/ u, c                                                {0 h9 \% O6 z" \( \5 J$ L
                                                        selectedEdgesOcc.push_back(selectEdge);4 I, l. i( q; ]) P# N/ P" Z
                                                }% i/ E: t" n! N, \! e
                                        }% Z1 d& K% C' X  G+ \+ {  f8 \  H8 w
                                }
% _3 d( i3 m! _1 `/ L% ~' x0 d2 X0 S& E; n( {6 X8 P1 k% ]+ e: Q
                                - r. U# V( Y& {8 n
                                //2 get composite curves
$ R7 f- q- \+ a5 Z$ b                                if(!selectedEdgesOcc.empty())3 s  D2 b* E) m
                                {' |" o7 C/ m, z( r' ]0 R
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);& m: D/ [1 C5 X% ]: ]
                                        if (errorCode || compositeWaveCurves == NULL)
5 C9 L( [1 U* _& m2 x/ Q                                        {
7 w2 E; j0 f) {* E7 [, U- C                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
* k& n* u# W9 y( w8 L8 q( K                                                return 1;1 G/ f% E) L; C8 M, z( {- {
                                        }" z6 u/ w2 E* k; G1 b0 S: g
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();7 z, {' T, v6 i( d

3 G! G$ l, @* _) x0 |                                        for (int i = 0; i < allCurves.size();i++)6 r. o$ \. p$ A, g
                                        {
+ `: x0 A1 K9 y                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));% O! v0 o9 E$ E6 |* N
                                        }
9 l6 B& C, j* d# ]- J                                }' \) z. B* i/ l( m9 R* i7 e* c+ e. ^
                                if (!selectedEdges.empty())
9 w( ]% h1 l( g1 h( ]/ N, e5 b                                {
8 W; G  L& u* q8 Z( f+ m                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
* p0 r( A; J/ V, M  i" m                                        if (errorCode || compositeCurves == NULL)
3 F2 i$ M0 c3 R7 n: y; C6 F                                        {
" M* f' k& J( B. T                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
+ h8 g7 s' Q* k! T1 u6 B                                                return 1;
" s1 m* [; t5 m7 g. `                                        }: N; e2 ~# G" d
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();; V, c& O# U; ^  ~4 c& b( ?; D) N
                                        for (int i = 0; i < allCurves.size();i++)
+ Z* N3 y, g/ [8 I3 F; y                                        {3 g) |! g% w( Y3 {# a
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));2 O# P1 T7 Y+ ]6 d. }- s5 |. d
                                        }                                       
  h1 g" l5 I. A                                }8 ^3 i4 ]) `: T/ X
8 a, w" C5 g/ ~" i( u4 p, u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了