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

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

[复制链接]

2019-7-5 21:20:37 1813 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,两个方法场景不同,这就需要进行分别判断。- D1 c( N' \/ c) |, T/ i
; W7 }7 f& w5 r6 ?$ G. _4 t" |  q
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。4 @$ _  P, k( G/ N, b. C
: b( _: K9 [: k$ ?
                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
7 q7 ?! w! [7 \) V. t0 m& F                        {! L. r, F& K) ?( J
                                // we need add more check for the edge selection
3 q9 [* z7 [' F. `0 v                                for (int i = 0; i < selectCurveGroup.size();i++)# Z3 x; I' Z( ]& [6 S; c
                                {7 J8 l0 K0 M# t# Z1 N  q( W
                                        //////////////////////////////////////////////////////////////
" ?3 z; {4 G2 M  g8 K: p                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));1 K) L) m1 N2 v# x$ J
                                        if (selectEdge->IsOccurrence() == false)' E9 ~! U4 d% d4 n: }$ G
                                        {9 c* u, ^: V' Y
                                                selectedEdges.push_back(selectEdge);7 s- }! i6 o5 l% \4 b# W2 @
                                        }; }/ E* c$ Q8 G- R, A
                                        else: }& w7 x3 F1 M) A
                                        {
. c% H' M. @+ \! d9 h                                                if (selectEdge->Prototype()->OwningPart() == workPart)
. Q+ h& r4 M( U. a4 Z                                                {
- @& a6 z3 b/ D! H                                                        selectedEdges.push_back(selectEdge);
! i- l5 S& [5 a1 p2 C1 j4 {* L                                                }
2 U( P- v; ^7 e                                                else
6 ?7 m3 t- j% j                                                {5 }9 Z+ j, v; m9 Q* u" X% f8 I
                                                        selectedEdgesOcc.push_back(selectEdge);
6 i/ F% E8 i( j) k& u6 i4 @  ?                                                }
& k& W6 J8 N# h( t4 v2 S$ W                                        }
: _! i  r! F9 }- |, j6 s                                }
' A4 ?7 E0 r: K- n
! w7 i6 h* }- C) r2 ?/ {                                2 k1 F* ]' h. q; g: C
                                //2 get composite curves $ c( x7 l+ p! F, M' b/ z5 ^
                                if(!selectedEdgesOcc.empty())  m! i  O) ~, m  s* u5 h
                                {! b" u/ J9 H8 _0 H7 h$ W7 s
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);8 M! J! T; m7 V# q2 z4 L
                                        if (errorCode || compositeWaveCurves == NULL)& C; ]7 y& t% W
                                        {% J1 F# f6 w' F2 V) |1 z& C: e
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");7 ~. ^% j  }& m5 m/ y
                                                return 1;: f, H, K" p) z0 ~: H
                                        }6 u2 t6 ~& d- }7 g0 F- Z/ R0 R
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
1 [7 R1 v9 C! H5 r8 b8 K# r
' O7 z, V- X  @/ \; h: y8 P4 F                                        for (int i = 0; i < allCurves.size();i++)  e* f5 C+ |( o% d6 U
                                        {5 X+ V& ~4 q+ e
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));# ^) p* Z$ g9 t. n9 D9 z6 N
                                        }
! b$ Q3 Z4 T4 A, ^" ^& B' b                                }
, \, X4 z& T8 P- J6 _                                if (!selectedEdges.empty())- h9 w  N6 K3 q- B7 t
                                {
( L5 w! J+ ]- ?8 v$ `                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
+ l* e  |8 X7 G% g0 X/ W  `5 A                                        if (errorCode || compositeCurves == NULL)
, m" Y; V1 e( f9 X8 D! B) U* z1 M                                        {& h. K& Q" H' r2 [. ]. P; F
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
; N7 p* M6 A" F  r8 Y+ D) E                                                return 1;
9 R9 B  z, h4 y: u* V9 [8 ~5 j) e: K                                        }
, @" F6 v& c7 E! g+ K3 ]4 U                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();# c. D& L) W4 s0 H2 o) O- H
                                        for (int i = 0; i < allCurves.size();i++)
% P8 F& V( A6 t2 H4 {/ a+ S                                        {
" B& J# j" `$ w8 z3 ?                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
6 g& b' K  B. v! I# G                                        }                                       
/ b! N: z0 Z' r* |: P& M( @5 C                                }
+ ~" ]% R& [; j+ d6 K2 c1 {# Y& a( A6 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了