PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

2019-7-5 21:20:37 1891 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,两个方法场景不同,这就需要进行分别判断。
& K# e* n! f+ Y, B
- [4 M4 _: y2 G- z紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
# O2 c# B' s2 r3 g! a
( ~& r5 U  H) \                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty()); m# S8 A( Y' e" C
                        {
" s/ ~8 d/ `' ]# F0 C( _& u                                // we need add more check for the edge selection
8 r) F( @8 s. f  Q                                for (int i = 0; i < selectCurveGroup.size();i++)
; {# c3 J3 r, O9 d6 C7 V! V                                {
, G  S/ O0 O. i4 O% s                                        //////////////////////////////////////////////////////////////# c9 e# S: \& @( U' x
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));/ f9 ]  X+ }- s4 _3 ]3 T
                                        if (selectEdge->IsOccurrence() == false)  @. t+ Q9 G: q/ i8 z
                                        {
$ P. m2 H% f; R7 ?2 ?% h                                                selectedEdges.push_back(selectEdge);
$ J" o* `7 y  Y7 s! C) }                                        }0 \# O3 j0 e- I6 @& b
                                        else
. J+ |: x9 P8 w" U3 r6 N% d                                        {: A' R+ x2 a2 f4 {0 @
                                                if (selectEdge->Prototype()->OwningPart() == workPart). E. T. G$ |$ _1 x
                                                {& A+ n& |, a6 ~/ r1 w1 |
                                                        selectedEdges.push_back(selectEdge);2 }+ w7 m0 [% |; T
                                                }3 K3 I8 S, T6 p8 ]* j& \' N9 q0 g
                                                else3 l6 l4 X4 y' ?; a3 D( e
                                                {
9 l7 o$ j7 W  T' @1 w0 R                                                        selectedEdgesOcc.push_back(selectEdge);5 c8 c5 _- Z5 v! k
                                                }% X3 v( F5 I* b" T2 `; A9 m' h
                                        }6 _7 p& }. K  s
                                }
6 r5 m% l9 P$ w' c
& p4 l! \. w5 @. L5 y1 p# _                                
7 S7 ~& x& q" i+ h/ P9 S. e% p                                //2 get composite curves ; d4 p' p" s- ]9 Q/ y
                                if(!selectedEdgesOcc.empty())
3 I% [/ k& N4 V" Q9 h+ U2 K9 Y) V                                {
+ B/ Y- G: B. s8 H                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);% h& V3 r! N3 R2 A$ K
                                        if (errorCode || compositeWaveCurves == NULL)
! P3 S$ R9 r0 P( _! \                                        {
) Q9 y( u/ X& M                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
9 G1 B, ^. Y/ L/ \8 n; B  T+ j                                                return 1;
6 D" E4 |# e6 B3 b                                        }
8 q4 j% C8 b- e! ]7 v) G+ h9 Q. {                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();0 e5 a  @! U& k

' R+ K, L/ l! c0 o9 L7 b! G& P$ L                                        for (int i = 0; i < allCurves.size();i++)4 z) q- r2 F. }; C8 f: R4 C
                                        {. z, {( n" G6 H1 ?3 ^% x& [  i
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));) {; }+ C: J. `. V% Z+ t' h
                                        }" u) Q0 _7 g7 v% v0 L$ ?- {
                                }
- f: `. z2 P8 e5 r  I& m                                if (!selectedEdges.empty())' ?3 d5 u# r' a- E0 i! E2 V
                                {8 e; n: Q6 [) z- \: b
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
! @# {: V6 Z9 M" q, s                                        if (errorCode || compositeCurves == NULL)
) q' |: p  s( p+ j9 Q  o# q                                        {4 H( e, m( R7 Q- ?, P
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
1 Q4 z# b7 Q9 P0 L% S) s9 U. u                                                return 1;. [  u$ H  M1 F; {2 |
                                        }  v' ~5 P; H+ l0 j& U
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();+ i; v& S& U% m
                                        for (int i = 0; i < allCurves.size();i++)
* H5 P  a7 e( J$ f                                        {
) K1 P5 }6 |! n: ]! M7 K                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));6 N! Y. B# _! J$ r$ e5 }2 F
                                        }                                        5 V- C3 M4 g) C1 R6 W9 c
                                }: M- s  ?/ M6 E0 S& Z

9 h4 G, u1 K- h* ?% P+ s# K- q. q4 L( }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了