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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
1 B) E2 R0 n: y- D, [5 f
void selectedge::initialize_cb()
: w- X3 G" f; Y) @; @  O& s* d3 U{
! F. x& h9 y' H/ t/ B6 W    try" y; l- t) @9 R+ t) d6 q
    {
# q2 }  f/ F* d* b+ [' x
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
1 ]! D2 C* ^7 c$ R1 D: O        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));; v1 N# Z( o- Z2 }% O* g5 j( }
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
2 w$ j6 f5 v/ T    caTCh(exception& ex)
/ m$ @4 u2 B' X5 L+ O! U' b8 Y    {+ r1 m+ N; q7 O
        //---- Enter your exception handling code here -----
* k- n4 j6 \7 r        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());+ \1 O4 U7 x: h: U9 a1 [% C$ U
    }% d" V3 i% T* Z6 w; {; D
}+ K  B5 f4 S# C5 q. [

; x1 t. I$ c# B; ?$ _int selectedge::apply_cb()
8 M- ^' x. p7 p. q{& X1 `/ i- l9 t4 s, ?
    int errorCode = 0;
3 t; W/ H* U/ W5 x6 w/ T( h    try
- L- @0 I( L" e  g6 N- h    {: F- `& x0 k3 B
        //---- Enter your callback code here -----
) Y# m' A) V' |9 a; g; ]
8 h, J6 F: x0 F- ?5 a0 m) ]$ Y2 X5 k1 }. K

8 a- u6 i% |& E( ?                Session *theSession = Session::GetSession();3 {7 F1 H* p% l4 q) @$ d9 O
                Part *workPart(theSession->Parts()->Work());" q& g8 c, }) Y
                Part *displayPart(theSession->Parts()->Display());3 [: x% p( `! E0 H; }: I5 J/ g5 ]
6 G1 L( |  b5 e# K* `
  |9 {! D0 L: k: }9 I6 d1 b
                Features::Feature *nullFeatures_Feature(NULL);6 Y" G$ P; `) k/ x- C# p
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
5 T/ S) _$ m4 [% Q; E# w! L                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
& q# `' v5 m! n" k9 M2 s) u- F7 z9 j  F3 H0 S' S
7 U  i) b/ r% Z% T0 e
                ScCollector *scCollector1;
7 j& l- [) \! S+ T: g6 m8 U4 Z                scCollector1 = workPart->ScCollectors()->CreateCollector();1 {+ r4 t0 l5 n* G
# E# w! d3 `9 K( C9 ~

( i- N; a% f6 d4 w                std::vector<Edge *> seedEdges;
- F- G8 v( q' f2 T% G               
& y7 F7 k* i: X6 n: }' O+ v. n                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
/ K$ q2 k0 m" \/ }- l( ?                for (int i=0;i<selectob.size();i++)
7 P6 F! H7 |: R; p; w2 X                {
$ w  P) y9 o' Z' j, C- \                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));! z/ \- x9 w" ~& d
  }6 o5 A2 o/ E% y

6 B5 \& [# R, k  F: N9 u  double dia = expression0->Value();            //获取表达式的值4 l% A. b. L1 X: d" W
                stringstream DIA;% G& {- Z0 n1 I& \# d4 `) U
                DIA << dia;
" r. }* \- `+ ?/ U9 u6 n
0 v( t7 m) X. m) Z% M3 }9 {" F. s$ G; d% C
# i- ~2 {- m  `# }$ ~3 Q+ w
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;3 }3 m- D* F; l$ c: r
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);7 H: O- y' \5 p. k
( }& x: z3 K0 t3 y/ `  O) U

4 _% ]( d. _% h1 ?& Q, H0 y                std::vector<SelectionIntentRule *> rules1(1);4 d" q" M8 `5 k4 |' W3 B5 p5 O
                rules1[0] = edgeMultipleSeedTangentRule1;
' r: T% X( E  I, w& w                scCollector1->ReplaceRules(rules1, false);
( _' Q; E7 C' V& {; {: x  r; w1 H9 {- m3 c( A7 @
" H5 A' g7 V! E' C! X3 h
                edgeBlendBuilder1->SetTolerance(0.001);7 G2 _1 U1 }2 A. V# \

, ^, B$ Z9 {& v8 s

! m1 k) B. j' o) E9 ^6 o  j3 n                edgeBlendBuilder1->SetAllInstancesOption(false);
6 R/ h1 D/ _) D3 U
, f' k0 h' [# T6 ^$ W' Q
$ ^) \: @7 Q1 \  n6 q; o
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
  w+ P5 W8 {5 T1 Y, l7 Z
" S1 T0 e8 B# j# u! i; v8 P
0 D2 Y4 N8 K1 R
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);( }3 r( H* j* ]6 y4 {
" i+ ?/ z5 F' \6 I: N

: ?2 e# _* l+ z$ u) m+ d                edgeBlendBuilder1->SetLimitFailingAreas(true);
6 J. j, ^3 J- S! H/ C# ?
( |  {3 \0 F# d+ e8 r, O2 t" f
: U' T" U! t; @
                edgeBlendBuilder1->SetConvexConcaveY(false);
7 ]3 s$ f! s9 j. q! r) E8 ]1 k
0 g& c+ {2 L+ q

4 t4 k0 ~: j+ a/ S6 M                edgeBlendBuilder1->SetRollOverSmoothEdge(true);: t. W; ]% g/ [  F1 S" y
: j5 T9 ]6 \$ y* o3 W
2 {5 B( r' e9 U' u* ~0 ~" R6 J
                edgeBlendBuilder1->SetRollOntoEdge(true);
; U/ }5 |) ]: C
7 K8 S( x6 F2 M( B0 x" K1 \

) k& Q/ c# s# f9 ?* \  S8 F1 F                edgeBlendBuilder1->SetMoveSharpEdge(true);, i" e* X, F& p7 d2 ]# h: `
- j" e4 n4 m, A; @* E- x

$ r2 m7 H1 I2 s8 w# q, h                edgeBlendBuilder1->SetTrimmingOption(false);
; m8 y9 g( \3 C, B$ y. ?% [
, Y- y+ S! `# f6 ~9 h3 ?
6 \* }5 [0 U0 U
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);' X# r, p8 ?, q$ p

1 _& w1 h% l0 M4 `' Q: r

( k+ j# W) b+ x2 v: C: g                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
( F' f: b# z/ D) l5 r( _) O! k* n
6 Y" l) l# {$ t9 A
$ a! |& ~% _* s
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
" C7 f7 H( X4 G' A$ ~2 z8 u- Z7 ~. ]; U( u- V, Z7 c! F
2 j  G* x, T" t8 w" Y+ p
                int csIndex1;" U# p# U% [# O( X. B) J
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
6 @% r7 [/ f! y- e$ h8 b5 |- n& G# s" v! w/ h$ T

' S9 J! p$ c! W0 L3 ^                Features::Feature *feature1;
+ U, h0 b: h. ^* ~                feature1 = edgeBlendBuilder1->CommitFeature();
8 d8 P) V0 ]2 z) B8 q& i5 H
3 `$ D- v9 |1 N- T* }! o
; U5 \" k) B8 n  F) p9 ?) o
                edgeBlendBuilder1->Destroy();
/ Z2 ?5 e" @' s, b6 C( d9 A1 K& Z! b  d( ~! ]  ^; x. O9 Y
    }
7 b) p- N! o5 O) M3 a    catch(exception& ex)3 g1 H& C; n) K( @0 b3 p- s+ c
    {  f6 u( ?0 e8 ~. I' x
        //---- Enter your exception handling code here -----6 ]; \% _9 d6 k) n8 B1 a' s+ Y2 g
        errorCode = 1;- K6 ]% `' y4 j! U. [- Q1 H
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
) \5 U8 f  N3 E) ?    }
, b& I) h& F- f. |6 j: P- U9 r    return errorCode;9 B) U  }) F: a
}

$ n# c! D; w  E0 |( j3 r
2 V$ M% p, ~0 {+ S; |; \/ s
说明:因为字数有限制,这里只贴出关键代码。; i+ m2 M3 D4 g: {6 m
- r. v0 T. f  {; K' v6 \' D2 v
! g% H- c. R. S& M4 u9 Y. i4 d: O
4 Y/ F2 O: L5 d" G8 Z
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二次开发专题模块培训报名开始啦

    我知道了