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

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

[复制链接]

2019-7-5 21:20:37 1795 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,两个方法场景不同,这就需要进行分别判断。
" T/ v8 B5 Z) C% I. m3 V& F' z# T6 L$ \1 p3 o5 h
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
# G8 Z6 D  z+ D$ f: Z
3 ~) N% H2 I3 }+ G2 x                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
! Z# F6 M1 r9 u                        {, \" Z5 \; t  Q
                                // we need add more check for the edge selection
' S# j  I, |" k2 t' J0 h' |4 T                                for (int i = 0; i < selectCurveGroup.size();i++)
! S. k0 D6 P& E) y- H7 D                                {' D) _3 [, ~% t! j6 x" i
                                        //////////////////////////////////////////////////////////////# N6 w# Y  a( c4 Q) P" M0 i$ H
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));( L4 P* V* k/ c. E
                                        if (selectEdge->IsOccurrence() == false)
1 G- X) e2 U1 a( d9 q                                        {
$ |; M& I4 Z' x8 }# E% }2 z/ J8 j                                                selectedEdges.push_back(selectEdge);: ^  v' y8 s2 I1 F7 w
                                        }5 x2 Y- c3 {0 s* ?
                                        else+ V+ S% X; |) [7 J9 G1 w
                                        {
1 r$ y  V0 h% ~; [1 T2 g                                                if (selectEdge->Prototype()->OwningPart() == workPart)6 g/ c1 U: T6 {7 z! P
                                                {8 P, c7 _0 p) t- `- g9 T
                                                        selectedEdges.push_back(selectEdge);
6 \! S% Q( u6 o                                                }5 N9 p* J. ?& f! d" O7 Y- T" @
                                                else% \1 l  k5 x! Z" B2 k0 T
                                                {
, C9 u+ N0 n! g2 M                                                        selectedEdgesOcc.push_back(selectEdge);3 d8 S* f; U- V. f: A# R
                                                }
& v9 ]  {. d1 e8 n                                        }
( M* r# j! q+ B                                }
3 n) C& _$ U9 l2 {6 D' U. G) j- N' u8 g, j  O( \& W
                                
: U' S9 ]* D4 d                                //2 get composite curves
1 L, q& ^5 I' z3 C6 U                                if(!selectedEdgesOcc.empty())' `3 p8 k, ~8 J) Y; k/ R
                                {5 i  J+ X# R  }  ~, J
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
% K* H% {3 Z/ A8 C+ K2 W$ W                                        if (errorCode || compositeWaveCurves == NULL)
$ B, D9 A  b3 m) E/ R                                        {- K9 S" g+ T/ I( b' n# |/ u
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
2 k9 U' F; ~. C( t) Q5 k  n                                                return 1;& n" I: i+ W. z$ q2 i% R& q
                                        }
* p. M/ h) n9 [( P                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();6 N# c4 @& c+ w9 K5 r0 W
; \; L+ Q2 h7 T7 y( i% W
                                        for (int i = 0; i < allCurves.size();i++)
8 j+ z3 R$ g# L; b% ]+ d                                        {9 K2 H. e0 D; ?8 |- c& ^9 z
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
+ \$ m' z# s) S9 m+ c                                        }6 S. |6 Q: u) p! e1 |# F% ?& x
                                }7 _% B- v, j4 P, u1 [
                                if (!selectedEdges.empty())% [8 e5 m. r6 t8 c9 F4 U
                                {0 f6 v- |# J* K; ^1 |
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);5 _9 F0 ~; f* g3 l
                                        if (errorCode || compositeCurves == NULL)! o, j: i0 i4 V/ f6 a" ~# n
                                        {# T+ {" M! G7 `3 [% \% u( F, r
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
3 |* U. ^6 ?6 p- o                                                return 1;
8 z9 A3 x) [* z" G5 I                                        }
$ C4 {; [  N# T4 a                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();
, f1 o! ^- n' e- @+ ?                                        for (int i = 0; i < allCurves.size();i++)9 x( M# U* k. Z+ L/ @! r: U
                                        {
: f3 b9 P! Q6 n! h2 ]                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
6 |' l+ i2 k( ~; W, ^/ v" o                                        }                                       
2 p" R  k' ~0 @; Y                                }
  m: y+ G8 I  E0 d; U
3 C) o% y/ c- i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了