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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

# ~: g% U" m+ _; _void selectedge::initialize_cb()
! U* ~- |- @* P  u; W: l/ @. Q{7 w2 B, I4 b# Y- _( A+ d
    try
4 y) M; T6 J& U" i. I    {

# i5 w0 S4 Y9 J/ E4 V  c  O# L5 O5 w        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
+ B: w9 F& p* i, R3 m( v) P. M8 R+ G        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
- k: `- q" t' t        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
" A' F9 U1 K8 E    caTCh(exception& ex)0 A1 A& Y3 R; C, l. \/ E
    {9 m" I' C8 q: T) u: Q
        //---- Enter your exception handling code here -----: g3 q0 W& N7 t5 @1 h
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
6 H1 I* E; K& E3 U1 }    }
  i' X8 m, T% `& B( h+ d}; Z+ c/ I6 x$ g
1 d5 |2 p, j9 v' N& h6 g
int selectedge::apply_cb()0 L& d5 |3 b% A# O; \' a
{* x7 ?1 i, N4 m
    int errorCode = 0;
, K: f( q. ?# ~; }7 k    try
3 @. ~! m! ?& z6 P: `    {' j3 e3 B. p  w+ Y" l  [) F" s
        //---- Enter your callback code here -----( @% T$ [; b% X2 v

# q! w1 @) @2 }; W
$ R/ `$ x' |) g$ Y, G% [" j" h4 P4 N

, }2 a5 h8 E( H                Session *theSession = Session::GetSession();
) C+ j1 Z9 n/ [" A' W                Part *workPart(theSession->Parts()->Work());
1 z+ |" b- ?# d  w/ l, D+ y                Part *displayPart(theSession->Parts()->Display());
  q7 R  M' r1 g' d: w! d0 q3 g9 ]8 |  i- V

+ U" G: J2 f  k7 f) F9 Y$ c& l                Features::Feature *nullFeatures_Feature(NULL);# U6 [' u! `& h1 N, k
                Features::EdgeBlendBuilder *edgeBlendBuilder1;6 X* ^3 ?9 Z5 A  N3 z
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
2 r+ M5 U4 M# Y* M; n1 }' X. a9 \# r# W: _
: x5 `6 O8 X! F6 }( a1 a
                ScCollector *scCollector1;
1 X8 u% D& T3 a9 R. }                scCollector1 = workPart->ScCollectors()->CreateCollector();; R/ c& p7 I5 p# P+ c
4 m  W3 ^5 g. B

& P  I6 @9 t% R4 ^1 C                std::vector<Edge *> seedEdges;) m  Y3 S2 ~' O$ x/ {7 [9 _
                0 H; S6 R. s! Q" `
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象/ \) W- ~) Q, X4 Z
                for (int i=0;i<selectob.size();i++)
* i. T8 a5 S4 _2 s: i0 B' }                {
2 a( F% n0 S0 {: e                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
9 {: a: p1 [. o+ J( G, A/ p  }
8 n* R, W3 K, _6 P1 c4 X/ o% S$ ]4 ~
! E3 y, h9 G# ^, l; G  double dia = expression0->Value();            //获取表达式的值' W( E2 _+ U) ]# W
                stringstream DIA;
, g* f9 V  j5 H                DIA << dia;' C( s( _6 ^+ d$ Y6 r% W

+ N" m* `6 R' @4 }/ B
% ?0 G, A1 H; {5 a; v
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;4 \& o+ g% n3 Z$ B7 z
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);; C/ h, n1 L& G1 r3 c

5 K+ f3 E4 R  b& ]. _2 L

: y, m' J1 j  d* |7 F, A7 M                std::vector<SelectionIntentRule *> rules1(1);; H( i+ w) H& c. g; P' ]# j$ S
                rules1[0] = edgeMultipleSeedTangentRule1;6 f  R2 \3 w8 m# O( ~+ S  P
                scCollector1->ReplaceRules(rules1, false);
$ T; x4 {5 S, k$ @- I% m9 s% i' q% Z  G! Q4 i

; G8 F/ d/ `  u! Y                edgeBlendBuilder1->SetTolerance(0.001);2 @9 g% Z$ R* l+ W$ d  P

# o0 r& x: Z. R+ Y! V3 g

- V$ g* o5 V3 @                edgeBlendBuilder1->SetAllInstancesOption(false);" S  k1 q# M/ a5 S2 t

/ c# |6 W" K% n4 f# K2 i* g
/ M) X2 u, H8 i3 N5 u7 m2 r. u1 ?
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
* X# d5 V6 d6 P1 U: s% w
* j& k: _& ?6 M. p. I8 O- F! T- ?

8 m' c8 y, k' C3 I  B  Z. k# B8 J                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);4 a4 I+ D- l$ n* m6 ^; @, k, l
- E/ I7 C: E+ s# {% ?

* @7 U* h7 E/ O) `0 O) J9 A                edgeBlendBuilder1->SetLimitFailingAreas(true);
: }, a" \! }9 Z( p- m. y. _% R, g! D9 y& b+ _) h5 o
4 U, \6 v& u' e# T
                edgeBlendBuilder1->SetConvexConcaveY(false);
3 _' x: R8 P: ^8 Y( I4 k* h/ t/ v# F7 ]+ a; V4 s* n/ M

: T$ ~, `; l4 f& _                edgeBlendBuilder1->SetRollOverSmoothEdge(true);# C/ `9 h, W  O: c1 F9 o
' d) D: C" m- I1 }; M" u

7 M, i7 J7 S* b. m2 X                edgeBlendBuilder1->SetRollOntoEdge(true);7 q+ k" j' D. U

# X" V0 J% S/ A" y5 O( n' E- N
, a4 I4 N* o& u* {
                edgeBlendBuilder1->SetMoveSharpEdge(true);
6 ?# [# P5 T4 b
- J# {! k8 `% }5 i1 d

! p3 _1 g* L, S" F+ x- m                edgeBlendBuilder1->SetTrimmingOption(false);, K: B) J' }, M1 L+ X  `
; b( C# I" ^7 s

7 C! S: u# f  T$ L; i- s                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
9 }+ m% Y' C. |8 p9 }5 O- \2 V  _' ?

. d$ h. V+ I; N1 H$ ?5 A! P                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
  S1 ~- s( w1 Q; w8 |  \: n) V. C# h4 j0 @$ l  J$ ?
) u- a5 W+ E- s( T
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
' x0 j5 l: D7 k! l  w& s% s
1 s3 Y+ i1 O( F
3 V! `: p7 m# x' _/ c
                int csIndex1;' P9 v7 r- \5 J& b9 M
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
& ~! W% W7 f- l# r" \5 A
& {0 m: B: z; g- G

! e3 t  v" m, c/ R" ]) a                Features::Feature *feature1;3 g. W4 c5 C" E9 A
                feature1 = edgeBlendBuilder1->CommitFeature();! G+ m8 f) o, \1 j0 {
" F) u- U# d4 [2 z

; ]4 Z( J* n! l2 C$ k' X! \+ D                edgeBlendBuilder1->Destroy();
) r8 U# ~' c. k1 j$ `' d! G) ~/ U6 d8 N( u+ |4 l  G
    }9 Y* q" H1 z8 i: @3 L  N; M3 U# Q
    catch(exception& ex)
( x; i% K0 W5 W& N+ F) S2 J2 Z$ \$ O    {3 i5 t, k& A$ g
        //---- Enter your exception handling code here -----
+ `+ {6 K; q; Z. j  Y/ l" m        errorCode = 1;
! S7 e5 G* `) J/ t        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
* p3 \" u/ w% i4 m4 F* e    }
! x- ^2 d) r" g  J  T) i* F    return errorCode;
9 g, n1 |: L- t}

* A5 C- K! ?& i4 Q4 p+ u* F1 l
. X! v3 i7 ?" l
说明:因为字数有限制,这里只贴出关键代码。7 {  l8 l$ ^2 ~' \* m9 }# v1 L1 C

3 R8 h. t+ a5 O! K  s* Q
4 n: L- U. ]8 B/ U

) F- v3 D$ b  I( y8 D8 y& B) y- j
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二次开发专题模块培训报名开始啦

    我知道了