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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2019-7-5 21:20:37 | 显示全部楼层 |阅读模式

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

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

x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。( c4 p) Z. P$ G. R0 p4 U2 s; V: y( L

* r* x6 U& a0 Z5 O! v紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
/ @/ o( v8 N6 E
* w. g0 f0 G9 ?' w3 n- u                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())1 M* W9 i+ n, i  Q# {' q" Q& Q, T9 i
                        {# J: w4 W. ^3 F% d  R. ^- ?6 Z! k
                                // we need add more check for the edge selection
2 |+ A1 s7 V+ n2 V9 S; `% z: ?                                for (int i = 0; i < selectCurveGroup.size();i++)* @* C8 i2 s0 B' V# A
                                {& k$ C* |9 `- g9 R
                                        //////////////////////////////////////////////////////////////4 @+ {/ d% K  A- _. K
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));- |! a+ p4 t5 y: c
                                        if (selectEdge->IsOccurrence() == false)3 v" Q; R' z9 e0 O
                                        {
: ^% `; r: {7 Y6 P                                                selectedEdges.push_back(selectEdge);( H3 }3 ]0 l: U7 W5 I
                                        }3 o) w( M, V2 H4 z3 k4 U, o
                                        else; H  o6 l! s2 c4 S; ~
                                        {* C4 L3 U3 }' T9 h4 X
                                                if (selectEdge->Prototype()->OwningPart() == workPart)
" Y4 g9 }: Y5 [3 f                                                {
" |8 U5 x) m4 g3 F                                                        selectedEdges.push_back(selectEdge);9 G4 \3 s% B$ `) X
                                                }
& g- X- C1 e& F! h3 p$ W% B6 X                                                else
% E3 S8 w- Z$ s$ `; z7 q                                                {' B3 ^9 _* Z6 P/ ~+ E' O4 ~
                                                        selectedEdgesOcc.push_back(selectEdge);
) k7 W  p+ {5 ~! l' y* x                                                }
! @5 m0 x* ^  M' U                                        }* d- I2 e, [  P9 j$ e. c
                                }
% l% g4 Q' i2 H2 u: R" v! E6 `$ D& \
                                + \3 k3 @, v% O& R. |- q, ?$ K
                                //2 get composite curves
' U# Y& {  u- J' e3 u7 U1 B                                if(!selectedEdgesOcc.empty())' ?, w- K! {0 E" b- `7 U9 }
                                {
- J/ x( h& O& V, }: m                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
- z6 V% g% }  u. o9 g# F                                        if (errorCode || compositeWaveCurves == NULL)
6 m  u$ f% F2 n5 o; g  m, g/ O: {* Y$ p                                        {
" V$ p+ ]/ ?+ |; v- b                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");3 t, `# e8 Y7 p, G& |
                                                return 1;) c) Q$ d4 z9 a: |% f& _- T* g
                                        }, G+ V" _; E* Q) q" J( h& }5 w
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();5 ^6 d! B  C/ U) u) R0 p

% C3 b& L* F4 Q6 X% d4 w                                        for (int i = 0; i < allCurves.size();i++)
8 F, \  J. x; Q7 d5 o                                        {- V0 s2 \8 k- h( |- A% C" }
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));) |9 E$ b! _, W" ]& [& Q, N
                                        }3 V6 _) t, t2 ?9 B( l+ x
                                }# a# \' C8 A" J  |4 ~- P( v6 z
                                if (!selectedEdges.empty())
& h: s9 ^& y! T- A/ V                                {5 r; C! Z0 a% L4 D
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
% e. n& W4 I+ z2 q/ r6 o' d                                        if (errorCode || compositeCurves == NULL)
7 I$ \2 s6 i# u# y! R4 z: A                                        {) @# k, ^2 L' U* U1 Z
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");; O: T3 b3 Y6 ]: x
                                                return 1;# _- N) U% ?5 d8 n. d) \
                                        }
* {4 b/ U5 F3 G- y                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();- k; ^/ z+ B0 r, j8 v& e1 M
                                        for (int i = 0; i < allCurves.size();i++)
8 B8 S! X5 T8 O" ^! q( l                                        {# J/ p# f0 `. ?4 }; t+ F
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
" ~( ^. T# ]$ u, j$ g5 Y                                        }                                       
* d( i  g3 @- c6 w/ X                                }9 ?& ^! @+ f" d- @) c* ^' T% w6 _
$ |5 ?" C9 O# \6 T  E- `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了