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

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

[复制链接]

2019-7-5 21:20:37 1689 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,两个方法场景不同,这就需要进行分别判断。
1 w% T/ w8 K& r. r' K/ A5 |9 q6 w& _! O/ O4 D; x9 `3 _6 @
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
: I% `9 [3 e# B! A( N! r# Y1 N, D! Y2 Z1 V2 h  ~  m
                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
$ G8 l! y* n' A$ e                        {4 s# R  e# h8 r8 L! s' n
                                // we need add more check for the edge selection5 u& ~+ p. h% q) V' R% ~2 D
                                for (int i = 0; i < selectCurveGroup.size();i++)! u1 R) b6 M6 `5 ?: G
                                {$ c: D- C- E7 H4 y1 n5 K7 Y
                                        //////////////////////////////////////////////////////////////
, ~) `& N9 ]0 U7 G% _0 h$ u                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));$ a  D% a3 ]8 v( N# A
                                        if (selectEdge->IsOccurrence() == false)
0 e6 w# r/ w0 R7 Q# @                                        {( A( @' l3 w8 B) W
                                                selectedEdges.push_back(selectEdge);
% t% E( n( X% l4 \' Q& g7 L                                        }% f% z$ ^8 R9 ~$ h* L+ W. W2 D
                                        else
; H' e' ?( E" t: C2 x; }                                        {# Z  F- J5 ?! z6 _1 e: E5 E; ?
                                                if (selectEdge->Prototype()->OwningPart() == workPart)
' F  |5 s6 x3 \# M. r7 r                                                {
* r3 b* b' D/ ]) i/ z: v( O                                                        selectedEdges.push_back(selectEdge);
  R$ _' {0 H. ~% l                                                }
2 m  X" R  P; N. h1 A                                                else$ ?5 J: X+ @% O4 ?! D
                                                {1 V- X& E: n4 u8 s' k5 D+ _
                                                        selectedEdgesOcc.push_back(selectEdge);
9 a' j- l' u1 n  R. r                                                }
4 X7 W$ S7 {+ H7 L2 o9 C" k                                        }
% k4 l. G) L6 \$ E                                }
$ o9 ^7 r% E" B/ N5 h4 X* y- l9 G7 s4 x
                                
8 Q/ B  X: P% c! J" B# R                                //2 get composite curves : e0 i0 n8 N. q. b8 A
                                if(!selectedEdgesOcc.empty())
& B4 o3 c# R& q' w4 A- p4 N6 h                                {
9 q8 m- F  l* l! T' ~6 Q: Q                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);  B' J" r. O" ]5 s( M0 P9 n
                                        if (errorCode || compositeWaveCurves == NULL)4 m  R+ P& d, g' i( l
                                        {  t5 k$ W5 O# h5 N* i+ f
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
. O1 C3 J. Q( r; S0 `8 m: |* A                                                return 1;4 z+ o0 s% j9 y
                                        }
5 k3 }% N8 f0 O' I- p* p                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
9 @5 P  d( }$ |6 o% x6 s* _& y9 P# X# Y$ b* v
                                        for (int i = 0; i < allCurves.size();i++)
, `: H+ ~/ T" ~* u7 D1 ]                                        {
0 D6 [) d3 r5 P$ d, C! s" B  Y7 ^                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
9 K. L. N& h8 f; i                                        }
1 d* C& t6 Q- K5 W2 @9 G                                }
' I6 H0 I8 G. r; r& R                                if (!selectedEdges.empty())1 s3 y' O# x2 k. m5 x8 _
                                {6 u- c$ M7 R1 C6 b3 F8 O, t* K
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
+ [( {' x- i& P% J  W7 S5 C6 i                                        if (errorCode || compositeCurves == NULL)
$ x2 m0 i, l: x! J/ o                                        {. d( ]5 L& M- U+ D, E) Q* l+ I
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
9 m4 F8 A! v+ X. U+ u                                                return 1;
$ e- c9 \' W( U5 u& H4 W                                        }3 g2 z1 S) k( v$ m# `+ S
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();2 Q* u0 J" F$ c8 x; [9 A: d
                                        for (int i = 0; i < allCurves.size();i++)
# V  y% t+ D2 R6 H0 u                                        {
! j* L$ A% M: K5 S$ l2 O                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
0 |* u& P3 M$ D# e& J5 |7 `6 B  @4 s                                        }                                       
- ~/ t) l5 }! l2 m) B                                }8 X; R1 Z8 W+ v4 x) {4 b
2 u! h) n4 J& j% ~2 Y1 Y
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了