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

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

[复制链接]

2019-7-5 21:20:37 1826 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 x6 \# C; Q( u. d

0 o' n8 V5 u9 l& q6 [7 c紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。$ U8 h1 t7 Q; P, \8 e8 I; Z* h

0 M; O& @: C' o5 }                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
; t' `4 r! s( M4 _- [9 X                        {
+ o6 ~1 L( i& @" D' E                                // we need add more check for the edge selection
: |" Q( v8 W& w. p0 o                                for (int i = 0; i < selectCurveGroup.size();i++)
$ L$ }% K' x4 c9 X! S" C8 P                                {8 A- I0 n: D7 o8 V. [
                                        //////////////////////////////////////////////////////////////6 i* p( {% V4 p) ^6 n/ S) O3 ~
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));( U1 w& _! {6 A1 C" L6 I: S
                                        if (selectEdge->IsOccurrence() == false)
- D+ t- c1 c; L+ g! r6 F: q                                        {  c* M. a! v1 j
                                                selectedEdges.push_back(selectEdge);
: Q: j& Y0 G5 j                                        }7 J& y! y& J& u6 q( p+ d9 T( H
                                        else
0 v' y1 X* @+ L. j9 K                                        {
" o: r3 A0 j* l0 V0 G. I$ @                                                if (selectEdge->Prototype()->OwningPart() == workPart)
: k  y2 Z; \8 `8 C$ v4 g" t- ]6 b. N                                                {4 v( O1 `* p+ p4 `! \& ?# d
                                                        selectedEdges.push_back(selectEdge);0 T3 ]/ k' W" ^# O7 W6 S- I
                                                }
9 e! [" I0 E6 R  Q                                                else! o# S% P' ^, L3 i4 c6 {/ M3 r
                                                {6 S9 K7 T  c  ]7 q5 K5 d0 j
                                                        selectedEdgesOcc.push_back(selectEdge);
$ @' i( X. v  j. X/ l( T' r; n4 l                                                }
1 s) Q0 n3 }( L9 E+ q8 @( m9 V                                        }
0 O$ o/ v1 g5 |7 c" n/ `; m                                }
3 C; P! k+ q' @$ K8 y! P: m9 l5 r* E# U' i8 V- C
                                
9 N3 k7 [! d! F3 g4 P4 {( g& `5 p& K                                //2 get composite curves ' t' L+ Y; g  G! @
                                if(!selectedEdgesOcc.empty())$ t. f( f0 S4 D
                                {$ V3 C- S5 A4 G  |# T% q5 ^
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
. K$ j& @2 x) I) p9 n( C                                        if (errorCode || compositeWaveCurves == NULL)
$ Y) c/ T% `3 T0 q$ n# q                                        {
  C6 K# F/ r1 _                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");9 j7 S5 d3 Q0 S  g% R! b
                                                return 1;+ t) Q4 C4 e" F6 E) r* e
                                        }5 u# Z/ u0 y5 l
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();. A! {; h# i& s4 |3 @

' X8 i% x* @4 [$ Z+ T3 V' ]; [                                        for (int i = 0; i < allCurves.size();i++)" W, n/ F% z8 ]) C
                                        {& T" n" i2 W; W# l, ~* Z2 v
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));/ _+ |$ ]; G6 j; z$ D! i# D
                                        }; f: p" `5 O2 o/ M: Y% N" d
                                }* M$ `+ y5 M4 t5 |/ b0 V% q( j+ W/ @3 g
                                if (!selectedEdges.empty())& ~( E1 \4 p7 i7 `
                                {
+ w" S  A: v- w$ u' A  l3 ^                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);' w% m3 i9 A0 Y& C7 Q
                                        if (errorCode || compositeCurves == NULL)
5 F9 N9 s3 j& U( _                                        {
- W. |2 W' z. Q  V                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");% G! p! O+ v+ e+ c+ ]
                                                return 1;8 [# P; J' {2 K* w7 e9 [
                                        }
6 p2 q" C$ q& W" m0 [: _, ]                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();
* k, ^7 m; D! d/ Q. ?) g                                        for (int i = 0; i < allCurves.size();i++)
5 P" [3 r; }. x0 b/ \, s. A                                        {
: _3 M/ {" R& p1 Z5 x: A$ d, p                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));: C4 f, b3 v, K+ I$ F" C' B- @0 N
                                        }                                       
9 {" ~% q# c: z' B6 t                                }0 E0 |7 D7 \( z

: R2 O' l# }4 P6 G+ d
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了