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

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

[复制链接]

2019-7-5 21:20:37 1688 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,两个方法场景不同,这就需要进行分别判断。2 Q' j5 |1 t7 J

# j0 ^4 A, H+ H* t# X紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。# t: D; `+ ]$ N9 T

- d8 m( g3 L; S+ S0 c                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())6 D8 y+ }# n1 i, z
                        {
  x8 l% j! v( i" X                                // we need add more check for the edge selection
8 Q' z  g4 j$ J# c& h0 w                                for (int i = 0; i < selectCurveGroup.size();i++)
+ \4 j/ [* P% p% W                                {. W4 v2 F6 n6 v8 r
                                        //////////////////////////////////////////////////////////////
, K. A: @# z# k% D- I) F- c                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));# M( B# o3 y# j4 L: r6 J
                                        if (selectEdge->IsOccurrence() == false)
$ e8 _8 F5 B+ q  B                                        {
1 D1 J  b- t& v1 b' ?                                                selectedEdges.push_back(selectEdge);
! j+ m' L, X4 ?- i                                        }
3 v' s- Q9 }. y, ]0 X1 g: l                                        else
! B2 \7 [( h& K# }1 s: i- u1 A                                        {
2 N8 X- `- ?+ Z( _9 D- d! q                                                if (selectEdge->Prototype()->OwningPart() == workPart)
1 F- f8 q5 X1 ~7 B# p                                                {
7 v1 Z) E- x6 T7 i  O% f5 n                                                        selectedEdges.push_back(selectEdge);1 f0 l9 P3 k. r, I
                                                }6 @- I  n0 e9 n: c
                                                else8 g: P8 A8 n6 I9 i
                                                {
/ a' y0 {1 c( H# r                                                        selectedEdgesOcc.push_back(selectEdge);
: h3 e* U  F9 V, r! W5 K                                                }
3 O0 F8 z! W; h& @' Z  T1 m; r                                        }
- x" J. v- ~1 N: b$ R                                }
9 ^& J+ \4 p# M+ ~  K( Z4 X6 @% g" Q
                                
; Y6 W* H1 G1 b0 _: i" g                                //2 get composite curves - K6 Q1 I' i/ w5 a- W
                                if(!selectedEdgesOcc.empty())
% D) P/ t4 {; M# H                                {
1 e# h% y# Y7 Q9 K0 }( O                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
" v) y  U9 E  T                                        if (errorCode || compositeWaveCurves == NULL)$ u- @8 x  c! d& z( m
                                        {8 N7 @, B. [3 Q. X# K. p% Q( M' z
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
, h6 X! r1 q; e1 B                                                return 1;
5 ~( A3 m0 ]$ [  d- C                                        }9 B. G& O! B) @, Z: p
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
+ }, x& k' n1 {
+ o" l0 s* a7 T" g2 p6 a. ~                                        for (int i = 0; i < allCurves.size();i++)( H" D' A0 z6 u, f
                                        {
) O  `& ]- ]8 \9 K8 y8 @0 o3 B) n                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
7 S/ O( c6 M7 ]# N" y1 N' [% S                                        }
2 q) \& O. c% _5 k6 t. Y  V; z/ ?                                }/ c( L( o+ V" F' ~2 Z) C$ d; L
                                if (!selectedEdges.empty())
+ \9 C& J; w  l+ \                                {( _6 T+ I, ?5 n
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);  ~( V2 u5 ^+ T( v
                                        if (errorCode || compositeCurves == NULL)' ^/ }9 {% o" S
                                        {
7 g) f; @( v2 c' o& w1 X8 l4 J, p                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
3 {' N# `$ }+ e                                                return 1;
8 v4 s; g% }# u                                        }
6 G1 _- M! t+ m# L. O3 L* ?                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();
6 V4 p" |# n9 M$ {" I9 ?  g                                        for (int i = 0; i < allCurves.size();i++)
  m* _* A6 E3 q1 x. U% Y                                        {
# [7 o% x2 V0 q* O) t" ~6 j) _                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
9 g) G) n6 n( X; m4 g0 F$ v1 I                                        }                                        5 X' a, e2 X6 g' E  v
                                }( F5 Z4 u2 ~  e0 P( j& Y3 o
1 @4 ?- C; ]$ `( x+ x
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了