PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

2019-7-5 21:20:37 1841 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 Z3 t8 K6 W5 [0 O6 U
2 K" I4 {) u( F+ t% E+ {7 @/ C( _& p- J
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。. ]7 h* w) r4 B) k

9 i7 L2 ]+ l2 `                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())
) m$ ^& N8 _4 u3 J                        {
) I4 f, m/ g1 x+ d' P( j                                // we need add more check for the edge selection
3 c2 _8 Z* F. g, `) s( p                                for (int i = 0; i < selectCurveGroup.size();i++)5 I: @7 H0 j. W. z/ _
                                {: I/ Y9 C5 k# R1 ~1 N' X/ u
                                        //////////////////////////////////////////////////////////////* J$ A# q7 H# T9 F
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));( Z8 N. l1 O) |! _& v7 I# a
                                        if (selectEdge->IsOccurrence() == false)
  Y* _- D7 p: y, R, d% g$ ~                                        {# E) m7 m; n2 W& T! f) B) ~
                                                selectedEdges.push_back(selectEdge);- j8 V+ G( p  Z
                                        }
+ E. ?0 R3 X% Y8 _( O                                        else+ n5 S3 s' f& ?) p9 l3 N
                                        {3 m3 |3 U  B5 C8 A
                                                if (selectEdge->Prototype()->OwningPart() == workPart)3 F7 V3 G) L  R4 U
                                                {$ h8 u6 b& y3 [0 S7 T: O
                                                        selectedEdges.push_back(selectEdge);$ x- ^( }2 B2 P3 S$ z# j/ u
                                                }
2 t( Z; W: s* U1 {                                                else# f- y% p2 M/ y2 R6 V/ G0 R
                                                {
0 \0 c7 O9 T4 r4 ?2 y                                                        selectedEdgesOcc.push_back(selectEdge);
  {4 n: i3 H* w* c                                                }5 K/ m, |" P0 B  T+ h+ D4 E9 E
                                        }7 Z, k# c+ J3 o4 j& R
                                }4 h$ b# W+ e5 S2 i1 y
; S+ y# z- n* n1 M
                                % O# }# i# Z* N' u* x/ K8 h
                                //2 get composite curves
4 T7 Y2 l  X# m; O6 [                                if(!selectedEdgesOcc.empty())
$ v$ E, ]0 \( x9 P                                {* }" @! g- O& ~
                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
( z$ T. Q- a+ a                                        if (errorCode || compositeWaveCurves == NULL)1 k+ n$ F+ C3 R& {
                                        {' n1 _, S6 \* t( s
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");3 k( j' E/ Q* }9 C* F* \
                                                return 1;
* ]  g: h. |* U  Z0 Z. K! `                                        }2 P8 X5 [6 _; D) s" S  @8 b
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
8 o4 T+ s, i2 |( s# D; Z, J/ s
                                        for (int i = 0; i < allCurves.size();i++)* u% P# T! z+ M; r- |3 ~
                                        {2 Z% n- j3 W+ N2 D
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
2 m% Q  F. @# x1 H% r0 d                                        }( p( B. N5 T9 C5 M0 |$ A4 a
                                }
* O% V5 n, U8 @8 J) V! M2 u                                if (!selectedEdges.empty())9 v0 f, f3 `* ^. q; u& l
                                {8 n' }# F( G3 @9 u( ]  O
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
0 n4 C5 U8 a' }( X' E, o0 n                                        if (errorCode || compositeCurves == NULL)
2 r& T& m. k3 k3 t4 S1 Z5 y                                        {! {6 s/ U6 @( E2 ^& d% d* R# E8 B
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
9 _7 p% P4 e  M                                                return 1;
! I* E/ }+ ?$ {2 E                                        }& @' @/ M+ G+ H+ o6 w% D
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();9 ~9 n$ J( |4 x: g
                                        for (int i = 0; i < allCurves.size();i++)
' T3 X; A9 h0 |9 {5 y# K                                        {% U( {. Y5 ], c" K8 }( s, H
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));2 Z2 l5 c5 Q6 @2 A+ `
                                        }                                        ! I; _+ l3 N  f0 {# O( ~
                                }
7 m1 Z. z0 \2 Q" x
# M3 U5 N" r. Y+ c- W# G+ W4 Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了