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

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

[复制链接]

2019-7-5 21:20:37 1758 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,两个方法场景不同,这就需要进行分别判断。# C* I; G- p* }+ i2 H0 p7 J0 n

% |" |6 T# K+ Y+ \紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。" U$ F6 p& O! K0 }, V
5 J( U$ o2 v2 |
                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())% b5 F5 C* u& R. L
                        {( ^, J2 c2 f+ r) \( k
                                // we need add more check for the edge selection( Y. b9 h: H6 b; H
                                for (int i = 0; i < selectCurveGroup.size();i++)2 U* b. s9 p$ K: N: ?' i5 Q( x
                                {
& t. ~- e& N8 X" z                                        //////////////////////////////////////////////////////////////
$ N8 D% b% u  ~! i' \; d                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
5 U* `* o2 }) P! x1 i/ h% X                                        if (selectEdge->IsOccurrence() == false)
) P" q' U& T( D, J6 g- g! V+ ~' J                                        {! t: w' a" V3 i
                                                selectedEdges.push_back(selectEdge);5 F- R* i0 _; X6 L
                                        }1 }, }+ q  e. v* [. h/ v
                                        else
9 g3 F& z/ e9 R' J( b! B                                        {  f2 R: O4 I2 u* o6 V5 T4 U# O
                                                if (selectEdge->Prototype()->OwningPart() == workPart)9 x! F7 u6 t0 E! ~4 U$ t# c8 c
                                                {
, r( u0 C) n: f5 I3 }. E                                                        selectedEdges.push_back(selectEdge);# k8 k/ L0 H: L
                                                }0 J2 \% N  ~, P9 r2 ]
                                                else7 k& w5 U0 O: ]4 H4 K% m! o6 {
                                                {. V8 o5 h% x! W9 ?, I
                                                        selectedEdgesOcc.push_back(selectEdge);$ d- k, h7 C% r( E0 N
                                                }
; B. A: z5 y3 q5 n& m                                        }
' }+ F0 J# @4 O                                }
3 }0 Z7 H/ v) x/ z7 l9 w
: Y, n' i- H" [2 N                                
% A6 H, G8 a7 R7 \2 }0 Y                                //2 get composite curves
( j3 j7 h( K" H: P9 A3 Z6 E# N                                if(!selectedEdgesOcc.empty())
% ]/ `2 a9 ?. x" W/ C4 u( ^                                {
0 f/ l) l/ h1 Z1 b+ {& l$ o1 A                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
6 R# N6 \% C- V; O2 U                                        if (errorCode || compositeWaveCurves == NULL): N( q' I, Y5 a+ T" ~( W
                                        {4 z8 a( ?6 u- b/ |1 u0 {4 d) O
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");$ M/ @& |& Y8 i* C& K; y
                                                return 1;/ S0 d' Q5 F! i( i
                                        }
! I0 }  c) X$ ~$ m2 |                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();' T2 s- L5 j% s" n
+ ?' v6 t: _1 H6 l- Y5 T. }% [2 K
                                        for (int i = 0; i < allCurves.size();i++)
3 o8 ?1 `$ o5 J                                        {
/ S6 W: j: e) n, @) B1 q                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
$ q2 A2 x4 S0 `$ @. j# {5 e                                        }/ d9 f& z6 Z/ Q' |
                                }) u' l: H2 B4 B( J
                                if (!selectedEdges.empty())+ |' R, @' |* a
                                {9 U/ J6 _/ B& z+ f+ n' z' P. x) `) H
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
$ B3 B/ [# @/ F6 B4 @                                        if (errorCode || compositeCurves == NULL)
/ W0 w6 z) {. g7 L- n! z                                        {
2 e* n* n7 w5 S7 V  ]                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
8 j9 ~- H5 j0 G. F$ K                                                return 1;
9 n% \& C+ Q, O- g! b6 y6 ~+ \                                        }- _1 @6 D, q% a; k  e" D2 P$ d6 W$ z
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();' V$ R( k' x4 d8 `& F( a
                                        for (int i = 0; i < allCurves.size();i++)
% v$ ]- v4 l9 ~9 N+ X                                        {
' l: S% [! B- D3 _: Q0 k                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));; ]0 e% B. w4 n. f6 C0 X% d
                                        }                                        $ m, T. j3 J; C* ]9 v3 A+ \
                                }- c. q' r" G2 }5 I- k
) G. I3 d8 {7 T
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了