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

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

[复制链接]

2019-7-5 21:20:37 1866 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,两个方法场景不同,这就需要进行分别判断。
- b$ L5 V3 H. H: n) b0 n: h3 }) V! o8 o" q2 [6 |
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
& {0 @$ a) L5 \& c" [: _
2 P  v& f9 @4 V1 f: l                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
% I6 P/ f4 Q/ C/ \7 _                        {9 F) A/ Z$ `& S2 C/ T
                                // we need add more check for the edge selection
6 T% }& g& y; T8 ~' i5 G                                for (int i = 0; i < selectCurveGroup.size();i++)
) h) D7 F) ], Z7 \8 @  w                                {, t6 x' A; _$ `9 t  D: z' s
                                        //////////////////////////////////////////////////////////////
9 ]8 ^$ G2 u, b8 j1 P7 o# w4 @                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
1 ?" g  `5 M" T                                        if (selectEdge->IsOccurrence() == false)( J3 [" w7 ]/ ^6 k
                                        {- T; y  J# v; R
                                                selectedEdges.push_back(selectEdge);
3 a9 E( w0 ~& K& S! p% K! B" y% [                                        }
* `% Z- t/ w# \                                        else
4 r2 |% x# R1 @1 y; \: L9 y( o                                        {
! t! i" d% i$ |( G6 a                                                if (selectEdge->Prototype()->OwningPart() == workPart)3 W8 F3 P" t; C0 G! i' _
                                                {
* z! n; n; N2 G/ \( v, H0 l                                                        selectedEdges.push_back(selectEdge);
- A9 |: M  f/ \' o+ }9 M/ y* {                                                }7 w% o$ ]* g6 Q7 _( p) a  M* W! y
                                                else
! @7 t2 Y: G7 e0 T: r+ J4 W                                                {! {5 {7 M% `) @+ p2 V! r" O
                                                        selectedEdgesOcc.push_back(selectEdge);, s* W; m0 l! u8 K8 f' O- `$ r
                                                }
9 g9 P0 R) V. m, _                                        }
; V/ Y& H1 j6 P5 a- P. \                                }* D$ Z" o2 N' D, L9 @8 D9 V
% X# n5 J4 {: ]/ j" D8 `, O% K! Y
                                . P6 b% _! ]5 c0 Y
                                //2 get composite curves ( ^+ _) h& t* L& `& X" ?9 c
                                if(!selectedEdgesOcc.empty())
7 _0 b; ?3 L2 V1 S9 V& H! }                                {
( {- b' A8 \- f$ G* h8 J5 }                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);- d# @) W( j2 \  ~- \
                                        if (errorCode || compositeWaveCurves == NULL)
& |9 i2 q4 K: j1 ]                                        {0 F3 G$ }9 M' g# a/ d8 L8 G
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
! F; J( {, \! t5 b! _4 g; d7 i5 @                                                return 1;; C0 r1 R" Y4 A5 ^. G( a( l
                                        }
& F0 y3 h0 M+ k# x                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();2 `0 g1 Q3 D. V8 ]7 E

. J# y, l# c, ~9 e  u4 W# \                                        for (int i = 0; i < allCurves.size();i++)
$ p" C6 N( F* ?2 L7 y                                        {
$ j+ `3 s/ c' x. ^                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));7 j$ C5 }+ l" U# F
                                        }8 X" k6 y& o7 l5 Y, `/ p
                                }5 [6 w' e8 r( m: O# W0 \5 H0 {
                                if (!selectedEdges.empty())/ Z. ?, e% v% K1 l+ k" a/ j
                                {
  P( S9 e4 u, z7 k2 T, C                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
0 q& W0 w+ ~0 r- [                                        if (errorCode || compositeCurves == NULL)
) }% }  h7 K# A! i9 |, L& l                                        {8 r7 ~4 P5 |, b8 K
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
- y$ O. W4 v# w+ j: V                                                return 1;
9 B9 K1 T$ }( M+ H1 ]8 I$ X                                        }# T- l& ?% i+ w$ a: `
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();3 C, `7 v* x  I
                                        for (int i = 0; i < allCurves.size();i++)" b- Z+ J; J/ R
                                        {* y) w# Q& v/ R: ^% X7 I1 i
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
: E" ^* H+ w9 w+ d$ G  d                                        }                                        ( w/ j1 Z6 L' r* {! L! l0 m
                                }
  n3 |' Y( |4 o' i
+ Z2 ]* u/ S, _! j; B2 {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了