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

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

[复制链接]

2019-7-5 21:20:37 1930 0

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
发表于 2019-7-5 21:20:37 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。' q- F9 {  F6 U& u0 g. _

, C6 g$ L9 W' g( q" ^, m+ D紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
6 H  `: i* n8 K8 k* u4 ^9 v8 o1 p$ O$ N6 u& L7 _  j+ S# m  ?
                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty()); b% H9 ^9 L$ N* M' X9 c
                        {
0 n" K) I# Q! _# B3 [                                // we need add more check for the edge selection
* x% S' O7 b2 U, @& {                                for (int i = 0; i < selectCurveGroup.size();i++)6 T# D- M* C3 |+ L: ?. [8 p
                                {* f) h- [& {: j7 Y7 b6 V
                                        //////////////////////////////////////////////////////////////
! x5 Q2 h9 B( Q9 W5 Z                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
1 T4 W- L; Z, Z. A                                        if (selectEdge->IsOccurrence() == false)
- U2 @8 ]; K0 h2 ?' l, K                                        {8 g+ \1 m; n7 R8 T* `+ ^
                                                selectedEdges.push_back(selectEdge);
: M; X( g' r3 v                                        }
" ~+ s! P9 }, j, [7 M                                        else0 S6 a7 i" x9 V/ ^0 i" y% B# U
                                        {5 h+ j# C# I9 B3 A3 S% S7 G& k
                                                if (selectEdge->Prototype()->OwningPart() == workPart)1 v. H' l- F4 i) P
                                                {, V6 ?3 Z" k3 ~" S( u. S
                                                        selectedEdges.push_back(selectEdge);
8 N% Q1 M+ u- b0 y2 T  D+ V                                                }
- ^# `5 G' Z# s5 E% I                                                else2 B  h( Y6 I- P0 w" E$ l5 d
                                                {( h  k) t8 N2 L+ O6 e1 i( Q
                                                        selectedEdgesOcc.push_back(selectEdge);
% D% K" s+ M  A, @& ?                                                }
" P/ p( B. a! g                                        }
5 B, ~2 ^' [' y, K- x8 J                                }
) \+ `5 t- _+ ^+ b
+ E& U- M: L7 g# k                                
) V# x: A% E8 u" j' J                                //2 get composite curves 9 r9 _5 j6 U/ N- q
                                if(!selectedEdgesOcc.empty()): p; d, z6 f% z  r
                                {
! B7 e2 q2 `/ X% h7 @/ Z                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
7 I& |, ?8 M! U                                        if (errorCode || compositeWaveCurves == NULL)
1 P5 }* l# j! w. J9 j8 S: l% z9 P                                        {
: M% v% s  M; [8 d# I                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");. b4 U1 p5 t' `& i# g
                                                return 1;( f! j" L( D& i# B$ x
                                        }8 c( O7 ^5 p2 O6 z
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();4 g3 G! U1 Y+ [6 n5 s5 x7 T

# ?: V/ A7 d4 U' m! ]3 L, ^                                        for (int i = 0; i < allCurves.size();i++)
* `3 Z6 i; N9 y# S                                        {% F( ?0 |" ^1 [
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
+ X2 l, A! y  D1 i1 U. ?                                        }
2 `, R+ K2 p2 J/ `7 N- _                                }  i9 U) N& u6 E2 N
                                if (!selectedEdges.empty())
  q5 S/ ~" U% D7 O8 p7 ]                                {& s% D) p- J& T& F1 \- _, ]
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);+ R& S$ u6 }/ {- }
                                        if (errorCode || compositeCurves == NULL): g% ^7 a; [  \; d' j% ]
                                        {% n# N3 `, d2 T7 ]0 Q9 c4 b& ?
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
$ y2 X* Y6 L% x5 g                                                return 1;
1 B7 ]) K4 G" ~8 H% B. p0 G7 a                                        }$ h* _6 R9 f" p! U1 N9 f5 Q
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();- C6 m0 m# ~* G3 T8 }" t; A
                                        for (int i = 0; i < allCurves.size();i++)! }  c' z$ ]  d: V" n) q# i
                                        {8 a' \: {5 p  Q( h
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));, M- D7 S- v2 H! ^/ t$ y
                                        }                                        # w! g. _$ J" I1 [6 v" L( Z+ d
                                }9 Q* H, ~; e4 \6 G$ g6 y
: _5 H, K2 J3 l* w; U$ Q+ S: h
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了