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

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

[复制链接]

2019-7-5 21:20:37 1751 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,两个方法场景不同,这就需要进行分别判断。/ D( J8 @9 ^) G- g+ d9 s  q& r
+ X  ]) k! ^7 p2 T; A. B0 K9 z$ [
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。# E- o4 L6 Z# E

& J: R3 M9 g1 E0 S( w# [                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
( h1 b# z2 e7 T0 D# _2 y; k$ }                        {  l# m0 I: r7 W" \1 \& G2 Q0 P) \1 V* P
                                // we need add more check for the edge selection0 Q- s9 |/ @: g( a# [
                                for (int i = 0; i < selectCurveGroup.size();i++)
; a# w5 A9 J+ D7 \$ [, M                                {4 C- A( ~- b* G
                                        //////////////////////////////////////////////////////////////
3 y: Y; ]$ K- M) L) T3 k4 R                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));! L& }+ p( g* a) V9 F; |$ I/ z
                                        if (selectEdge->IsOccurrence() == false)$ o5 h6 H  Y; j3 e$ f; j7 Q* f
                                        {. x. X! H" |8 ~- P0 d/ Y- V. K
                                                selectedEdges.push_back(selectEdge);9 u2 a  S3 z3 I+ ~4 t
                                        }
& H% J/ ?; I- J  O                                        else
: e) r/ w) i9 V* x+ h9 q& a                                        {
, l! G3 o5 E5 b/ z" r                                                if (selectEdge->Prototype()->OwningPart() == workPart)
1 e& Y9 w3 |1 J( M4 ?                                                {
) Z0 }( w$ X7 ?0 s( j( @6 ^                                                        selectedEdges.push_back(selectEdge);
$ u4 H  Y0 G: d) y                                                }3 A! M' k! i4 ]* _9 S$ ~
                                                else9 q! a- m  s5 {
                                                {
9 R, {6 O2 x. ?                                                        selectedEdgesOcc.push_back(selectEdge);& M9 U# x! j" ?8 q1 [1 P
                                                }
: B" p  @2 P7 K$ g8 Q( n8 o+ P                                        }
- B$ s3 e% `6 u1 P                                }
% v  S! z1 \" j1 `3 ~; z2 G
1 \) Y( C% P( f& U: E' K: k8 s, g                                $ X, \4 G5 f$ _( d/ e; }% j6 x8 ~
                                //2 get composite curves
9 I4 d+ S: q6 J3 Q+ G                                if(!selectedEdgesOcc.empty())% w* ?- u* _0 z# V' f/ d4 f7 ^( e7 R
                                {) w( L  X9 g, t, j
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
$ w5 W( l& b2 b) H                                        if (errorCode || compositeWaveCurves == NULL)
! x  ~2 c$ O: J7 p( b+ w                                        {
+ u) A, S0 a, m4 C# t, ?4 r9 _% t                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");4 h. v; ]" S- N
                                                return 1;/ c3 I# m' y" Q# \
                                        }
9 {- C& R+ c6 \! L8 Y                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
( [; C0 R+ @1 i7 I3 Z4 v- q3 p' o8 D8 u" \+ B
                                        for (int i = 0; i < allCurves.size();i++)7 G, ]. [1 j3 A
                                        {7 E+ _% R5 F* u1 s! a( K$ m9 Q
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));% B( `- D$ R3 ]/ g0 b; T
                                        }
0 }; U, u# Q) y- u/ M                                }" F( W4 Z; {8 n
                                if (!selectedEdges.empty())9 q* I' e$ H2 N. {8 I
                                {3 T- v$ d- x; C" E
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
5 C5 D( F9 v8 |2 r! N- I( ^                                        if (errorCode || compositeCurves == NULL)& H% y$ F0 F7 c3 k8 ?) c
                                        {: O3 l+ e7 B3 n# u, \( x
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");; R7 Y( B9 S. p; }9 ^9 c# T
                                                return 1;
7 K6 {' g( O  E7 u! @                                        }: }5 N2 x; X- }2 p+ t  \. @
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();( Q$ d3 F8 g/ p
                                        for (int i = 0; i < allCurves.size();i++), N4 A/ p; n* M: k2 ^6 z
                                        {% z1 P" ]& B9 b, a5 [$ _
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));2 T) P' n# \' B7 t/ P- ~
                                        }                                        7 J5 f2 e$ ]8 x4 t2 S. `  b
                                }
3 D3 p; E# [$ B. ~! L
& \1 A+ f0 s6 t6 Z+ |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了