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

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

[复制链接]

2019-7-5 21:20:37 1752 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,两个方法场景不同,这就需要进行分别判断。4 N  J1 {* `$ B  w
: i8 [. a2 T+ a) m0 E0 y
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。1 \6 D) |: F' B4 F" h. L
9 N- a, s0 f) b) f  d; }1 D3 P8 }1 s
                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
" W+ `0 T9 R5 {) J' `7 R6 o* T                        {
+ f/ i0 S: b/ K                                // we need add more check for the edge selection
# j+ m3 M7 A1 J+ X                                for (int i = 0; i < selectCurveGroup.size();i++). Y& Q2 ^- t$ R- l# n, L  Z
                                {) q. z. ~6 ^' H  K. x5 i
                                        //////////////////////////////////////////////////////////////# x# a9 a7 R  @( A; Q% D
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));' d) R5 ^7 \  S) ^/ U9 [' r, s7 G
                                        if (selectEdge->IsOccurrence() == false)
1 T5 |8 e6 i! n+ j                                        {" d+ N8 A7 R; N2 c8 _
                                                selectedEdges.push_back(selectEdge);% _7 \/ G) v7 }  o4 ~' N
                                        }; E( k+ ~& H- T; ]* E
                                        else& j- S& u0 F$ O2 q' p
                                        {4 d: F5 r9 {6 x) d. X
                                                if (selectEdge->Prototype()->OwningPart() == workPart)
  S7 Y% U! a- g9 S+ g                                                {! y8 C' c, E) P) J9 t; ?7 H
                                                        selectedEdges.push_back(selectEdge);% S, o; s2 s. x
                                                }
- t- f, W1 S+ W9 d$ c                                                else. O2 h( `% G1 s2 g4 c5 H# G
                                                {
& T+ f. W/ p; p4 K3 \& o3 c                                                        selectedEdgesOcc.push_back(selectEdge);
, Z" @2 ]9 z/ k! H                                                }# C% z: C. ?: K0 J8 j8 O# ^
                                        }
( O1 b7 S6 N6 _* D* W) R                                }; [" y0 [7 S4 f. N3 }/ J7 }
. c: @# _* A! _6 j+ f
                                
0 S. y& Q2 R! C% P. I7 h) j                                //2 get composite curves 0 E* z( F# d, ?3 x2 J4 K, Z1 L. _( }
                                if(!selectedEdgesOcc.empty())# f  \7 o7 a* V1 E9 X# X" a7 K
                                {
: D7 X! ^. W& {* O5 L, |6 @/ K- w                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
& ~: {; c7 @$ X5 m                                        if (errorCode || compositeWaveCurves == NULL)5 B# R+ n: x+ O9 h& u
                                        {
% R+ t, N) g* g8 @' c2 Y3 d! J                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");/ n$ |8 p# g. {# g+ O4 {) O8 G
                                                return 1;
0 U9 t! i. n' f+ E, R                                        }0 K0 j/ \  L+ ]' A+ q
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
/ ^2 F8 `# _" y4 |. ]
; l$ V/ _4 F' g% m# @7 J% T( o                                        for (int i = 0; i < allCurves.size();i++)' r7 |) d& @. Y
                                        {
8 t6 Z* @5 N8 X4 u) i                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));, b' Y3 ?& r$ I' G: g
                                        }, L9 c" h& `( T/ E- i7 U
                                }
  s7 d2 \  k+ a# K1 B; E                                if (!selectedEdges.empty())! n: {4 m: ]& T7 e
                                {, z. I( v9 \! j) j1 q) Q  @
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
! P% C& f% E: k; [                                        if (errorCode || compositeCurves == NULL)
: b3 h$ S+ G; N6 \                                        {, T7 R* ?9 I' w5 T+ ~3 _
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
; ]& ~$ n0 d5 b5 W4 j                                                return 1;
& K  D9 w: d( O/ N' f. h3 S8 o                                        }
" }- ]- ?+ P( L6 q6 G                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();4 T- g2 H3 h, c; B4 P# n
                                        for (int i = 0; i < allCurves.size();i++)5 y! ^7 F* o" K! j8 y
                                        {- A2 A) T- f5 b% \3 _5 ]
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));; W. E( O- P+ i$ c' \1 }' j% F
                                        }                                        0 X' x% e- K0 N7 F  J& J8 H
                                }
- [- u* |" S1 C0 |2 \: m* m7 E0 D
* j% k- @4 o4 c+ r: K3 A
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了