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

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

[复制链接]

2019-7-5 21:20:37 1845 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,两个方法场景不同,这就需要进行分别判断。
1 x) `$ {2 A5 Y" L9 R) q; J2 U. z4 t% T7 L2 C
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
6 O' Q/ Q& t. l& V8 Y$ i4 W5 \2 a+ W" B, h5 m9 x/ z  p
                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
3 b- n  Y% {8 {2 `' r                        {  [# l  x0 @% R- p0 \
                                // we need add more check for the edge selection! W5 A1 U& b) K( |5 Y$ p
                                for (int i = 0; i < selectCurveGroup.size();i++)
' d! D; Q7 p9 k) C                                {3 R4 g9 U& ]7 I/ ~- ?0 z
                                        //////////////////////////////////////////////////////////////$ e' {2 T: `( @% j1 F% h* l! O
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));2 I! x; \( u: d1 i% {5 R& I
                                        if (selectEdge->IsOccurrence() == false)
2 W1 i- h% v  P& m5 P4 x                                        {' E4 U, j. h3 m& A6 I% c1 ~% C+ C
                                                selectedEdges.push_back(selectEdge);8 i! U2 A. C, V( T% J# @
                                        }8 [$ A5 j& y1 n. |" f. ^7 F* ~
                                        else
5 e' _+ R' h( R                                        {% n7 L7 A( _) K; v+ u
                                                if (selectEdge->Prototype()->OwningPart() == workPart)- J  X2 J6 `8 K. K3 N" d9 P
                                                {4 I: Z$ T* W% e2 d( Z3 e
                                                        selectedEdges.push_back(selectEdge);& W9 X7 I! f" M
                                                }
( d0 B0 [0 i  F5 ~                                                else
1 P, r5 z+ `6 P5 [; Z                                                {
& w4 i4 U" N) w0 K7 k6 F                                                        selectedEdgesOcc.push_back(selectEdge);7 N; o) t- r6 J5 u4 N
                                                }' E$ ?, _0 Z& t5 W% N
                                        }
* ], {( S+ B9 D; V                                }
! U% W0 w: m  L
( [" g6 s8 V! Z/ q4 k                                - F/ O1 P- s7 ]6 K$ ?, ~/ c
                                //2 get composite curves
% [) F9 N4 z. |+ _+ f% C# m                                if(!selectedEdgesOcc.empty())6 @) d, v* D4 H" J; _! O2 ]
                                {* _  n; `; a" _
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);1 e8 ~# r, N" K) E2 m  n
                                        if (errorCode || compositeWaveCurves == NULL)7 y) U, Y( J( R
                                        {
) F4 h5 r+ ]; H3 t                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
$ p+ n$ G; c, f: ?                                                return 1;/ l) U5 C2 H' I/ Q  @  z1 g# x" P
                                        }
! s: ^- o: S3 _8 ^                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
; H/ t) `: Y2 a9 A4 m- A6 Z6 d2 n7 _0 c
                                        for (int i = 0; i < allCurves.size();i++)
4 g' \$ L6 U# A" r2 o2 r9 F                                        {* B5 W3 Q( _5 B/ Y; P) u7 I
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
' C  d" z1 m' A1 z  E" S                                        }
8 V1 I2 _- b5 c% Q  V9 Z- h                                }1 o+ C) C$ p3 N* s' g+ N* c# r
                                if (!selectedEdges.empty())
, W4 M& S) o$ @. q& p( J) t2 s                                {
6 `& B  ~: A. S9 Y- B  u1 A7 m                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
1 h& T; g7 w, j7 V6 T                                        if (errorCode || compositeCurves == NULL)
. _5 Y4 F5 }$ u! R3 `# t# d% T                                        {
9 s# l  Z6 d9 [7 G                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
6 b+ M& ^0 W5 p( I; K( h                                                return 1;8 O& L. [$ a" L* j3 W) _- M8 G, s
                                        }8 n7 A  f4 O1 ?$ \6 W! H+ Q# O
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();) S6 P5 r9 b4 N
                                        for (int i = 0; i < allCurves.size();i++)
. K& x6 o$ F  ]0 X3 ~. O                                        {5 [; y3 r7 U/ p$ S
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));! B1 n+ Z5 y* d$ G
                                        }                                       
0 @3 {3 ]! O1 z' W+ r% n! c                                }" b; u/ s0 f! o, u1 `8 W

6 u* N5 k/ \5 G; o
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了