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

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

[复制链接]

2019-7-5 21:20:37 1776 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,两个方法场景不同,这就需要进行分别判断。
% A7 P* v# r9 d8 k* H* N: d3 g7 h+ Z( a! a1 w9 v
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。, X% d; j* _+ _

3 q- w9 t3 L9 C: ^7 r2 Y# t                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())8 E# o. |/ Z7 v0 \3 w# L- |
                        {
# N6 }1 D# A# @  y) I                                // we need add more check for the edge selection
0 n  F8 y( y, h; F, Q' N, Z8 _& h                                for (int i = 0; i < selectCurveGroup.size();i++)
! z# o5 H+ s; K. h+ |1 ^  a                                {
$ z) T4 V6 n) {; e3 w; N                                        //////////////////////////////////////////////////////////////  U& |$ T* E6 c. P6 j. v8 b; z; ^
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
2 M9 O; N& ~) Y: M: Y                                        if (selectEdge->IsOccurrence() == false)
2 ?% U2 P* s' N. p7 v5 x                                        {
. ?3 E& L- u3 L3 q5 H1 ~9 I7 Z                                                selectedEdges.push_back(selectEdge);
2 W/ @) p* f% x4 `                                        }
1 u7 R4 ~' f  J  `% p                                        else
- x) `5 ^1 m2 A5 K, G" e                                        {! }7 ]# b$ K1 ^7 R* J$ J. u, Z
                                                if (selectEdge->Prototype()->OwningPart() == workPart)
: F& u5 U7 n) d/ v$ |                                                {
5 u9 W/ |% ?7 y9 S                                                        selectedEdges.push_back(selectEdge);8 l" M1 o" C+ W. ^5 }0 g: W: n8 t
                                                }' D0 I6 c  j1 c5 U  ]9 J
                                                else0 d1 \/ R7 D, }4 L+ W4 a
                                                {
8 V2 N& |) h  C                                                        selectedEdgesOcc.push_back(selectEdge);. x. d1 Y8 l, C7 T
                                                }  \1 S9 x; x8 s0 {
                                        }
3 d0 U5 b5 l& C( o4 e0 k& F8 T+ |                                }
) A! M* y$ l' B2 {' e( H- B$ T$ L
9 o& J5 J8 e( m6 Q8 X: ^2 L                                ' }2 i( V6 @; `- X- z
                                //2 get composite curves
8 r+ b: _# {( w; K/ q                                if(!selectedEdgesOcc.empty())
# k3 i/ ~, ~5 @8 m  [6 U, h                                {
5 P" Z% E, d" W& i) E4 Q& C                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);. L! _' v; W1 g/ R  W7 Y( W
                                        if (errorCode || compositeWaveCurves == NULL)
& s4 w( i% S# S( m# @" D" j! `                                        {
. b1 X0 u8 p# L5 ]  e7 c                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");
4 Z/ |( E  B: U7 l; f' ]                                                return 1;
3 [/ W* E; }! T( D( g8 f7 ^                                        }2 f5 O' D& Q" D2 o
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
5 l: t7 c# w/ Z9 x4 W
. ^' W( b& p5 E& x                                        for (int i = 0; i < allCurves.size();i++)& p& h6 g/ V6 d/ {1 ?
                                        {
4 s6 F/ q0 {7 [: Y1 k* D. A                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));9 z. p& @# T- k  U
                                        }
+ C3 {( e3 I+ E% Z1 f                                }
$ h0 f; P7 Y5 @* Z, g) \! a7 [                                if (!selectedEdges.empty())2 ]7 Y" j3 Z5 m  f! ^% a$ V9 G0 E
                                {
( |; u! U9 s5 L8 e1 f                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
4 V% ~+ `% D0 V; n0 ~5 m# I9 [                                        if (errorCode || compositeCurves == NULL)" T; L& s" w3 v
                                        {
  s1 ?+ X$ m& X/ ]1 N& k# E                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");! x9 @& I: {/ D! k! \# ^
                                                return 1;; z8 q) ]* ?  E+ e7 J
                                        }
/ V) g+ `% \3 ?8 \2 n& f- |                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();! G$ b5 B& M7 B  j( \/ a
                                        for (int i = 0; i < allCurves.size();i++)/ ]# b; a$ b" X! v/ v
                                        {
- _- ?; X  t, T4 I+ E* i                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
1 D) i( \  E8 R! a# X6 c  O1 O                                        }                                        ; D1 a+ z3 _8 W- j! R
                                }0 Z+ U0 d6 O) o# O/ w; |8 N( U
; W) y* K+ j1 i$ \# ]' z& M' Z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了