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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。2 C( F1 w  t" k) N
* a7 z4 w3 M; Z% l9 _
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。6 x* K$ P. Z8 g5 c- o$ ]

% t, I) Z1 u$ E5 V, E6 ~0 d- K8 V9 k                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
9 R( S# w' ?2 e; {( Z) J                        {) {2 h( Z: z4 V; p) @
                                // we need add more check for the edge selection$ c. q$ o7 Y* ?. ^* n
                                for (int i = 0; i < selectCurveGroup.size();i++)
0 z$ n4 [! J1 j- T                                {7 @& \( `. F  K6 K  e+ U# E( [
                                        //////////////////////////////////////////////////////////////, d" r* W- T. F% B" ]' ^* Q
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
! s) x& C) X! Z! e  ?( ~$ V                                        if (selectEdge->IsOccurrence() == false)
0 w2 G/ ~; R5 I- ~- _                                        {: J% O9 ?" f9 G  Z: d/ k1 }
                                                selectedEdges.push_back(selectEdge);& W- W5 U- ]/ W4 G! x9 L
                                        }
) [7 x+ }1 n# \4 ?* J                                        else5 u  `; x0 {$ s; }' D$ K
                                        {) \9 I7 k8 _  Q. Z
                                                if (selectEdge->Prototype()->OwningPart() == workPart)
) Y" A+ ~. |. I  A% D8 j                                                {
* _" Q) T: Z3 o2 D& q                                                        selectedEdges.push_back(selectEdge);
- R& h0 X, z& c+ w9 ^+ G3 z3 _( p9 w5 n                                                }
, C1 Y0 A4 o' o                                                else( u$ ~0 {# X4 v8 z" k3 ^: Z
                                                {
( Q" V8 c8 r' Z                                                        selectedEdgesOcc.push_back(selectEdge);# @% a5 @+ \: B, ~- T
                                                }
5 B2 C2 ?7 w' J: z% K$ G                                        }
: i- ~; _+ E4 i2 S- a$ K( f                                }$ _! s$ B/ _$ }0 V
' N; U0 j( z9 ~7 W( ^
                                ) F. h. O: G; W5 a/ F- v: c: F
                                //2 get composite curves 7 @( c( t8 \3 e9 B9 M
                                if(!selectedEdgesOcc.empty())
4 J1 O2 C/ u2 g4 R1 i0 [                                {
& |2 ]" r7 G- i8 q: B                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);; X% }: g/ q1 e0 e6 i5 ^1 W
                                        if (errorCode || compositeWaveCurves == NULL)
/ Q6 f+ V. D) e7 h( L                                        {
% X) k7 e5 L: B. h6 |; E1 Q2 n                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
( j  a# q& B5 G: E$ d' Q; C! q                                                return 1;8 v# E  Z9 g) y/ f9 F% Y, k
                                        }
0 ^3 _, _6 K6 ~. U1 Z) {8 j                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();* T( i6 O  c% c, H

0 {' d( L, j7 t4 Z# Q) F6 [                                        for (int i = 0; i < allCurves.size();i++)
& I% ?; J1 [3 i) ?/ h                                        {
& @& P; }* {" e* w4 `+ Y6 b                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
, Q7 l4 b  p) v& y! s8 Z                                        }# V! L1 H, N" F2 P6 U/ L
                                }& _# W& D1 ]' ?2 w* t
                                if (!selectedEdges.empty())) h; ]0 W( @1 m* {+ s4 Q# ?, X4 z8 P/ J# ?
                                {$ P8 ?' {0 y$ B* N( i
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);! I( A: ^# p  s5 t3 d/ k* N
                                        if (errorCode || compositeCurves == NULL)1 v- q/ K: a; J$ o9 \! L; J) ~
                                        {
) _: g+ d/ G9 x6 h5 O9 S; P" h( A                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
9 ]2 G( b% s1 T/ f" M# E* f2 X0 i                                                return 1;
7 S) f# ?2 b- h: G                                        }
, Z9 i; ?- D! q- M                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();6 t6 V$ o$ H" n+ d/ [8 \5 @
                                        for (int i = 0; i < allCurves.size();i++)0 I" p0 `& S7 Q+ L# a5 \
                                        {
! w$ F+ L; m$ p/ a! E  m                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));) O6 N* w: G6 s4 b+ Y. s; H  S. W
                                        }                                        * \+ [4 M+ J& o5 i1 x( L" K
                                }$ [5 D! b5 i$ Z

3 k: [+ l- v! E2 ?8 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二次开发专题模块培训报名开始啦

    我知道了