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

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

[复制链接]

2019-7-5 21:20:37 1720 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,两个方法场景不同,这就需要进行分别判断。
/ j) b$ [$ S- ?% x' i% i  V" ~3 N" `+ b: w
紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。) z+ [! e( B# @6 `. O* R

, C- I4 R2 D& q" y* _; X                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())) u: W2 P# P) V" l2 K
                        {. k$ ~) v& p% t" x7 C- x3 e1 [
                                // we need add more check for the edge selection
0 q4 u/ {& a3 u- J8 _* d6 p' v9 e                                for (int i = 0; i < selectCurveGroup.size();i++)
% F6 G2 p2 |8 d* a. x                                {
4 U9 J, m( b8 F0 {2 B                                        //////////////////////////////////////////////////////////////
4 J0 K  \% T' t: W" D- A# s" z                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
4 Y+ d$ |. C) T% U  E/ S; M                                        if (selectEdge->IsOccurrence() == false)
: C" ?! y; S' e( R                                        {6 O6 E5 A6 N: ^, S4 E: |+ \
                                                selectedEdges.push_back(selectEdge);
' S2 y4 l8 E8 E$ ?; v3 [) N* o                                        }
0 S* U* W, B5 F1 [                                        else. [( w: k/ |: x3 k
                                        {
) L4 X) ^- [3 e: x( z% Y                                                if (selectEdge->Prototype()->OwningPart() == workPart)
! l) p2 w5 }+ X: r" ~                                                {4 }: y, y2 ]0 I/ z/ r! w. |9 Z
                                                        selectedEdges.push_back(selectEdge);& p% L' L) }* J/ b6 t
                                                }5 b8 t* r* y* x3 j, z8 P3 y/ K
                                                else7 ?" K& Q: ?' N& F$ k. K' \
                                                {
0 ?/ `* G' c: F4 U( n$ e                                                        selectedEdgesOcc.push_back(selectEdge);' k# {$ c  d8 W, |6 y2 [( p- X
                                                }
$ h, p; y/ E9 t1 G( G  ?                                        }
" b8 V! X9 r) B9 g2 T, ?, n                                }
3 V( a5 l8 d( V0 {8 }. W6 B/ d/ S
                                4 _3 _5 I  v" B7 w
                                //2 get composite curves ( n$ o. o6 X: Q, H/ W% o
                                if(!selectedEdgesOcc.empty())
- N7 d. |  V& O" G! M% Q3 X# e                                {
* M8 Z6 c4 o0 A- j. ~8 r" |                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);
7 R4 O  l. [8 |& j6 z/ i) D: v& }                                        if (errorCode || compositeWaveCurves == NULL)4 p* D( o$ y. t% c& G) z; n
                                        {
  z- L2 s. c& b8 A                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");) ^/ D( q  e' \1 X
                                                return 1;
: u& @8 M  |9 V& h4 x                                        }
+ m' `' u) E% |$ T' m                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
' @$ I6 m) J2 n# b* Q" T+ j& @* r( C; w& V( j0 t' q) K/ b
                                        for (int i = 0; i < allCurves.size();i++): ^! _+ k! f. x3 O
                                        {
" z# i& `* h+ e                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));3 `# K! f, B0 c: i0 {
                                        }
9 b0 ~; E6 e/ S4 f$ I4 D                                }0 y* c3 G) h, g  ]; @- `
                                if (!selectedEdges.empty())9 p/ a8 i4 j- {
                                {+ J9 p, Y5 g- l* t  R
                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);4 X! P% o- ^% g% |: E
                                        if (errorCode || compositeCurves == NULL)) K4 J. V! B2 E9 ^6 y
                                        {
" V- {7 l7 }! c* V* M                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");
2 [, \, B/ Y, p* S: V                                                return 1;
2 L( D" E! w1 ~1 o                                        }
  |/ ~7 P( E5 v" e, _4 e9 u                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();0 r0 g0 E% R$ j8 o3 f5 f
                                        for (int i = 0; i < allCurves.size();i++)
/ Z& l" l5 s5 z* i& u( S+ ]: C* o                                        {
7 J: o3 r2 L$ q0 r' C; k: o                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));: b/ N1 w' Y/ j2 H- O. q+ H0 C
                                        }                                       
: U- w5 P' W/ P# x* q$ c                                }
+ K  X# ^' C* t3 K3 X6 E* _( p' F* F
# N. G/ z1 ~: j, `0 @+ }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了