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

[交作业] 通过UI结合代码生成倒圆角功能,有成就感!

  [复制链接]

2015-11-23 16:33:40 4224 3

秋爱 发表于 2015-8-15 09:15:43 |阅读模式

秋爱 楼主

2015-8-15 09:15:43

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

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

x
# `5 F7 p9 `2 u/ V7 s
void selectedge::initialize_cb()
4 m! b2 ^' e+ w% A! \. l! N{: l: q8 v! j" ^# n6 W
    try
0 i2 \4 Q) D- }) Z& a& Z6 c, c& e2 ]    {

2 G. I" k/ v/ V& a# x5 {: r" [        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));8 Q( ^1 ?, I, A' p" `
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));: r* |0 p; O( s# V
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
( [% }0 v7 U. i! K% [- f! W- B" n    caTCh(exception& ex)
' V) x9 J: c6 b# @1 z% T    {7 u5 O: P0 p: }
        //---- Enter your exception handling code here -----
( t6 R: K  H3 V) k" g        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
" E6 N/ ~* r8 {+ I7 X2 C1 H" A) x    }
* n) q9 ]  Q) B) v5 k3 S5 P+ W}% ^) j6 ^& u5 ?9 Y/ Z+ A5 L) m( s
' C3 Q6 e0 k; d
int selectedge::apply_cb()1 r4 P8 z2 o% X% E  s8 a
{
2 J7 i; s, D+ ?8 y  \# ]; l3 u    int errorCode = 0;
; m$ d6 d4 ^7 |5 f    try- f/ \: y7 \& `# S5 d0 c: l& c$ `
    {6 J- G+ W8 t* M/ L, c
        //---- Enter your callback code here -----: o+ ]" ^! v* R# W* {1 W
) m; x! k% u$ S2 [$ ^% z& N
* s2 v1 q  ]2 f5 h# D
4 U3 b2 V5 L* F4 j
                Session *theSession = Session::GetSession();1 y5 [8 X, A, c; ]0 V
                Part *workPart(theSession->Parts()->Work());
% g- c: R) e9 R* ]; G0 J                Part *displayPart(theSession->Parts()->Display());
6 M. [, p; r4 R! w& W. c& G$ A) `4 `9 m+ F
' m: P0 ?8 C2 M* Q
                Features::Feature *nullFeatures_Feature(NULL);% l" f4 z, B( M7 p* @9 v, j
                Features::EdgeBlendBuilder *edgeBlendBuilder1;, p$ B# _& F$ R, [$ Q
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);+ K! x5 V" r$ ~0 g! z) \- T. P
( S2 _/ Y6 S, ?$ {- `- w+ j+ J

# [5 u3 [8 h0 o9 n' T                ScCollector *scCollector1;6 [* s. H1 q. k- G. j7 E3 x9 h
                scCollector1 = workPart->ScCollectors()->CreateCollector();) T) i: D* q6 A5 ~8 w% @$ S
4 i- t- q1 a% E% r1 y; Z3 Y  t
+ O" C2 ~3 i- A" n% n7 }
                std::vector<Edge *> seedEdges;! a, W1 C1 K% [( H- N1 K' J5 Z1 G9 Z
                  R4 V6 K7 `3 c% L
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象& s# r) _- }' W! U3 m; r
                for (int i=0;i<selectob.size();i++)
1 \7 q' R1 m6 ]/ t, S: O, I5 k                {( r: ?" t* ^* P! |; d
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
9 L% t2 i" Q+ r9 w/ }  }
9 D, `7 I0 @' L6 X( v- M
: F7 y+ N" e: Q+ a5 ]# l  double dia = expression0->Value();            //获取表达式的值
/ f7 K% g7 ]# O0 x                stringstream DIA;
6 e* U; S! r& `& b* u5 I; n1 m                DIA << dia;
7 F4 m' ]9 p; o$ l/ Q5 o  P1 w& h  c4 \/ ^- ^/ r' ~

) L3 K( P! b* h* {' z" i  U4 i                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;* G! d! `, f4 \6 c
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
* Q! D. s9 S( Y. w) O7 [( R: d7 R9 i, \0 A( g/ ~, `4 m/ X
6 B6 T8 `2 o% g* ]1 Q+ r/ Z
                std::vector<SelectionIntentRule *> rules1(1);; {3 k& h; S" I8 F: c- L4 X
                rules1[0] = edgeMultipleSeedTangentRule1;
8 w( a9 K  I$ U% m% B                scCollector1->ReplaceRules(rules1, false);
! u1 e* c- k. k( H5 T2 S
% G: _/ M0 Q! c& B4 j, l; c3 H

& M7 W  S( u! Y! p* W                edgeBlendBuilder1->SetTolerance(0.001);( b5 H6 {; ~( B9 S' ?1 |
; N0 `+ k: B0 N
" T3 h/ V$ l* X" u3 J8 ^
                edgeBlendBuilder1->SetAllInstancesOption(false);
8 h8 w6 U7 g. x: _# K- [1 n( T0 m0 H- E
' C9 R* V. T' x3 S) E
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);: s7 m0 G: s& Z" {$ o

& T5 `3 i; X, {  H

# [9 ~* ]  ^0 U                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
. f* W: Y" ^; o7 Q  _% y, n
( P$ b- C# P: W  d5 d$ }/ P0 S
; A1 Q) V6 Q6 L: Z
                edgeBlendBuilder1->SetLimitFailingAreas(true);% D  p$ k: M2 j( u* u+ F  n; s

. v: a0 O/ I8 j; U
8 ]" _2 X  i7 s
                edgeBlendBuilder1->SetConvexConcaveY(false);
7 R- U. Q! ~" S: s8 t/ G. r; M' |
, ?  W! I8 k- H% G8 m3 }
: U* s4 t  T0 s; N
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);2 c% M* R+ s9 D) |4 V$ m: h

3 p! i* `! P$ l4 f/ P: n

, L" n5 W* @- I  ^0 _6 i                edgeBlendBuilder1->SetRollOntoEdge(true);; c+ J' k2 j3 z

7 G+ O) M  R% H- j
( p$ t" Z" [$ P
                edgeBlendBuilder1->SetMoveSharpEdge(true);) [) k$ b+ C# m0 H
$ ?9 S! i  S" {! W
) n0 Y) t! f: m7 p- z# T
                edgeBlendBuilder1->SetTrimmingOption(false);
# I! _( C- i, r/ f. V
3 g' \( n" @1 H
. l. u) B3 V3 k1 t8 ~
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
) {2 Z( C6 r: @$ j
2 r9 e9 b' u+ E2 H; A( ^- Q

8 N) l* C. i( r  ]& s1 r# f                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
+ E# R) j5 [) t5 [( H9 ^; o; k' a7 a

6 B' [5 {' \/ F* i) ~7 d% H, X! T                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);: A0 {# k% C5 k' _

0 |) L9 J/ d% n0 d( n& X/ L

$ ^4 W; ^" {% W3 n$ b: }( O6 ~9 a                int csIndex1;# Z) u% S9 {% U- K0 A; P
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
, J: C% L1 i& d& \
* h% g% s* D* j2 f' ]2 u  I: B. u6 A) o
5 w2 K1 U3 y" a  f
                Features::Feature *feature1;
, [+ ?0 S  t: ]                feature1 = edgeBlendBuilder1->CommitFeature();
) {* T- ^: ~0 p, M9 u8 x) H% Q5 O/ j- Q# q- w

" V$ w1 }4 W* i- ^9 A1 ?                edgeBlendBuilder1->Destroy();
; K* `0 g% U* u& X9 d4 B1 H+ c. ^# g. h/ B6 O
    }! N1 U& q8 r( @. }# F
    catch(exception& ex)
, z; r# m( E$ L    {) o- i, w( h: I" R, H9 I
        //---- Enter your exception handling code here -----( _. m: s1 d. j1 ?- @
        errorCode = 1;
, n  ~+ @/ s  I5 g; d6 }        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());' n& T) K( h' T" \5 q% K+ {
    }
6 d7 X9 g3 f: O  l8 d    return errorCode;
* y# C% A4 o+ t+ U. `2 q1 p3 A}
% U9 A7 B; s; u8 j5 I
/ M! u. H) @5 G' N- [
说明:因为字数有限制,这里只贴出关键代码。
' {' H, o# u& c; X
0 ]) J% q0 l  i# X" G3 X( ^: L% B' T) Y

; z9 w4 d3 {2 ^/ l/ m
QQ图片20150814180022.png

评分

参与人数 1PLM币 +5 收起 理由
admin + 5

查看全部评分

上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复3

heromo 发表于 2015-11-4 11:12:18 PLM之家手机频道

heromo 板凳

2015-11-4 11:12:18

如果我选择是一个实体,怎么自动将所有的边倒圆角呢?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

秋爱 发表于 2015-11-23 16:33:40

秋爱 地板

2015-11-23 16:33:40

遍历加判断
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了