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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
代码分享下,其实场景是这样的,我们要需要抽取一个边的线条,通过composite curve去处理,但是在非装配下,基本上是通过composite curve进行抽取,在装配下,需要通过 wave link composite curve,两个方法场景不同,这就需要进行分别判断。2 x  y7 R/ |6 l% |1 G

- \/ M- S# ?* i' T紧紧判断是不是一个occurence还不够,因为在选择边如果零件是工作部件的话,这种情况wave link是无法使用。
5 K6 j& i# U# V1 Z
; ]4 n3 j, L# f2 R. M                        if (!selectFaceGroup1.empty()&& !selectFaceGroup2.empty()&& !selecTCurveGroup.empty())8 w1 @4 I8 |  R4 G8 h, v; k
                        {( q& h( @. G/ e3 ^$ [  W. B3 Q* [1 W
                                // we need add more check for the edge selection
4 R1 o  K: R2 F9 q5 U: o+ g3 r                                for (int i = 0; i < selectCurveGroup.size();i++)
; R, n6 W# L1 j0 z( p                                {
( T3 b# y7 m5 p% Y6 {% e- h                                        //////////////////////////////////////////////////////////////0 X7 @$ |- z- m: c0 S9 P
                                        Edge * selectEdge = dynamic_cast<Edge*>(selectCurveGroup.at(i));
1 U( l# N. f3 `                                        if (selectEdge->IsOccurrence() == false)
* x7 P3 O  U5 i3 E0 m. o8 t; ]+ K                                        {
  @; D1 [1 v% R0 i3 i9 M! U) d                                                selectedEdges.push_back(selectEdge);
1 t/ [; Q, I$ a/ H6 }0 \# v0 K                                        }
* [- I' b3 I) I" \, }" s                                        else# n' T% E) C  {* w, w* _
                                        {
# k; ~8 H/ Z& P; b' a                                                if (selectEdge->Prototype()->OwningPart() == workPart): @, f; E" P5 S9 \5 c( ^- G
                                                {
; \0 g1 A8 {7 C. n- O: ]( h- ^* x                                                        selectedEdges.push_back(selectEdge);4 e) y! Y& ~. ^; N, z9 |
                                                }9 q+ g& z& x" T& Z4 M$ v: `
                                                else
4 \, E% q7 G1 _, R; r, N  ^8 e9 N                                                {
) t+ D7 a5 h0 w) e0 A                                                        selectedEdgesOcc.push_back(selectEdge);
1 U$ U; p1 t, }- x# s$ T                                                }
8 u$ @: s* z5 q                                        }
& K: `6 Q. t3 n2 r# ^+ y                                }5 k7 c. A# L/ f- @$ @) {
0 w  X/ ?# m6 i# d, m) Q; I
                                : Y% j. X& P5 w: z  _/ x3 ]) s
                                //2 get composite curves 9 W+ ?: v# `% v' G- A
                                if(!selectedEdgesOcc.empty())# F- y: H. @2 {/ c. `9 Z
                                {
, @( _! {5 [) \" I, O( @                                        errorCode =createWaveEdges(selectedEdgesOcc,compositeWaveCurves);; Y0 z  @+ E7 ~8 W! d& g. G( g
                                        if (errorCode || compositeWaveCurves == NULL)- c- B$ `% `  C9 [( H: y. R
                                        {7 n8 d) F; s) m0 q% `; W) r" x
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Wave Composite Curves  failed!");  S$ ]$ ]* ^* @% T7 O
                                                return 1;
: T. |& j& O% S% v. C) `3 P0 X5 A                                        }' x! Q% s! b. o2 J( ~+ p
                                        vector<NXObject *> allCurves = compositeWaveCurves->GetEntities();
* H  ^- p6 ]# Z) [
" H- ^- n( s" K                                        for (int i = 0; i < allCurves.size();i++)) Q8 N( M' R' o" g/ ~
                                        {  {; c& r  z5 W: G
                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));
. b  T- I" J" W                                        }
+ Y3 d# l, N. H3 M; E                                }
: T5 R, R3 `* N+ ?; a' @                                if (!selectedEdges.empty())
5 s  F* u( S0 y                                {
/ A% ^' r+ s, W, q3 ?                                        errorCode =createCurvesFromEdges(selectedEdges,compositeCurves);
( u2 v6 a+ Y6 n                                        if (errorCode || compositeCurves == NULL)
# E' o: ]$ A% V. z2 {- @$ {, A                                        {) {4 w4 {% J1 r3 B- v# K, I# V0 i
                                                CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeWarning,"Create Composite Curves  failed!");8 p. x2 L+ L+ D+ y8 s5 `
                                                return 1;* P/ H" S7 h) z* f3 z
                                        }5 K& w2 `, r% I  K3 y0 [
                                        vector<NXObject *> allCurves = compositeCurves->GetEntities();1 r$ ]/ Y# m: i8 R* i/ X
                                        for (int i = 0; i < allCurves.size();i++)
/ Q+ G% i1 R1 j  ]5 G7 y. N                                        {
' V6 m0 w1 C: |  \9 w9 d$ J                                                sectionCurves.push_back(dynamic_cast<TaggedObject*>(allCurves.at(i)));, W- u1 i6 b3 ^' j% }
                                        }                                       
5 c  Z8 x6 o& h& ^                                }
8 c& g& e) |$ @$ g& J! ~" e  k  ], m  `# O* B' W
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了