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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
) F5 V/ p' R- R' A/ g! P; V
void selectedge::initialize_cb()
: O3 ^) g4 @: m' i1 h) _* n8 j{7 w# G# t9 {+ y9 {  V+ ?
    try
" N3 J" D2 M3 |7 u) N0 M* R    {
- z6 J6 f* j& R* f' N! ~4 \
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));- t! E3 P2 G/ q; L, ?
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
6 S0 k7 {% B. ^. m  a        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
3 Q) z* h( R; l0 I/ F+ t) |    caTCh(exception& ex)
8 N7 n( |9 I1 ^; ^, g) v6 P    {
$ [' D1 \: ~' @' {: {, M% B7 C9 `; r        //---- Enter your exception handling code here -----& t) W0 f* M) T
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
6 w, X: N- v+ F3 l# w! L% S    }
; |8 c' H. W" U' s" P( O  m}0 j5 z) x4 C2 i

2 J0 v1 W" T5 r6 I! F$ J+ [int selectedge::apply_cb()
. ~' t/ o5 \; Z; n! Y& G1 R; U6 ]4 f{
5 v( u* N. C$ Y; Y# k2 ^# r# M    int errorCode = 0;
5 J% _2 U1 {4 c1 R4 R    try+ o) O% \; W: X! [! o6 _" y- D
    {
5 ]8 Z- p+ @( w7 R0 ~' o        //---- Enter your callback code here -----
% n2 G( B4 f8 Y+ g9 h0 B0 ^# o: W2 I

) A5 j9 ?% v$ O) y6 g
* e5 Q8 L+ v  O$ L5 ^! y
                Session *theSession = Session::GetSession();
2 n, w. g% \0 x5 \2 g                Part *workPart(theSession->Parts()->Work());
: K9 S0 q0 Z4 K1 u! [/ w                Part *displayPart(theSession->Parts()->Display());- a$ e  N9 C! i1 [0 m& z; X. Y
# x! x2 F. d) U! N# g' E

4 \* m8 v* \5 S# d                Features::Feature *nullFeatures_Feature(NULL);
8 u; a& ^0 W3 A' k+ Z8 y                Features::EdgeBlendBuilder *edgeBlendBuilder1;- W+ x$ K4 V2 c. A
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
; X. f3 [0 {6 b7 D( Y* S, k) }/ h+ n& W) n

: b, f, M$ }/ v2 x; v; @3 {                ScCollector *scCollector1;1 q( E: F4 H# d0 ?) V8 a% A
                scCollector1 = workPart->ScCollectors()->CreateCollector();
* k( M& @/ p. X$ e3 J2 h+ j5 }$ v
9 R- p, F+ L9 i
0 P, y8 Z6 |3 p
                std::vector<Edge *> seedEdges;9 d( h- X: ^, w- u7 y# d
                  c- g( i0 d" Q3 i" v1 T
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
/ \1 t0 O) X$ Q0 ^7 _1 _* o                for (int i=0;i<selectob.size();i++)% t- X$ _7 y% u  o' v
                {: {+ f* q' R, Y8 K. B
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));0 }2 `% t8 ^& ?
  }
. N8 ^3 _2 w9 b5 W. x1 H% }* }; ^" r- U; k+ J* C/ c  h. o% M1 Q
  double dia = expression0->Value();            //获取表达式的值( n  \# N3 U; x" P7 u: w
                stringstream DIA;) z' `# \6 a6 S5 c6 ?- \7 f  s5 D
                DIA << dia;! j  Q4 i8 T2 E( g- a% @, F2 y

9 \3 h  n6 o5 k0 U, b; c" D

/ X9 {' a8 m% P7 V- v                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;, ~3 ]4 w" `, `5 A9 p3 I. q( d
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
/ c9 n; {- M* b$ ~) e
6 g6 Z6 D" q  r: X$ E) P# x
; |$ G" z7 j: Y% g; g! x/ S
                std::vector<SelectionIntentRule *> rules1(1);
$ h0 {" b% B' n; i                rules1[0] = edgeMultipleSeedTangentRule1;
( b1 {# q2 \$ ~/ x& z; N                scCollector1->ReplaceRules(rules1, false);
2 C6 }- u! g# {/ T( Y; k4 _' S
# s. l' W$ j; Q8 |) ^4 v  p
0 R& y1 E4 }' ^5 s) e
                edgeBlendBuilder1->SetTolerance(0.001);
# w1 A% n- t1 i5 O, i4 a* C' n2 x
. e& I7 C/ h0 n, f; V9 B- }( I

+ E- E: F* D+ O7 N7 K: o                edgeBlendBuilder1->SetAllInstancesOption(false);# i. N6 |! l8 ^" S3 S& w+ @! k

0 q- G' a6 K- q4 Z

" [5 h9 W9 x+ J6 n                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
, `  z7 i' ~) S* v  ^+ T/ Q9 J. g! B9 |# q* H+ R+ C

4 {- z" K* Q4 `" R# a1 k3 B                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);* _+ G8 a: X; x3 T
. y1 ~( U' ~/ N! [. A' C

5 A; U( l& o3 k6 k( D. }% B9 j/ N8 m                edgeBlendBuilder1->SetLimitFailingAreas(true);
7 B0 w4 i; G, r  X" y  H" [" j* R8 t% q5 |- H+ R+ ?: Z
% S' s, O. g  p+ j3 ?
                edgeBlendBuilder1->SetConvexConcaveY(false);6 U  v2 p& t4 Z! R( `8 X
7 X2 r% Q  V+ x8 Q
. U- q7 B5 X$ X! k4 ~
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);0 k6 w* |6 O- U5 ?) L

- F4 i: ]% ?0 ^  X# _; \' w1 O
" N2 k8 h* O7 B$ W
                edgeBlendBuilder1->SetRollOntoEdge(true);
  }! l2 |& G2 B) X9 g5 A- v3 B
# x6 K2 g5 j4 l' K& @( |# j

6 d- p# g5 Q# Z0 A. r- D. [                edgeBlendBuilder1->SetMoveSharpEdge(true);
3 |; O3 W$ y: s' \, s! _, D# A9 y3 q

6 Q8 a: `- b2 _3 j3 [                edgeBlendBuilder1->SetTrimmingOption(false);$ N4 g$ l. c+ H8 S0 x6 ]3 J/ c
4 _! R+ p" a% Q, c7 Z" ^

2 [" G7 F" s, j0 p3 Q( M) f- {8 y                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);$ b5 P$ G" i% M* A2 z5 p
9 S9 S; D& ]2 B8 d% x$ z% ?

6 a5 W& L3 z: @/ Y. N3 v                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
" e3 S& z, ~8 w6 t) F/ ^, b. ?0 y. u+ E1 N

' T+ m0 _* ~1 C0 k; i                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
7 V1 c, K: ^) J# F  n: \" S+ C2 f( [* G/ v/ h
4 P" A, R$ p+ Z1 f. i, a0 a4 T
                int csIndex1;
: @1 ~  |. j$ I                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());. L3 j( U9 O4 e
, h* s. R/ q# @" @6 ^

5 k7 T; Z: v& E4 B                Features::Feature *feature1;
# Y2 h( i7 _% x8 e4 X+ T4 b                feature1 = edgeBlendBuilder1->CommitFeature();; K1 `: A" u2 i, S# D% |
5 A* l/ J5 W, P& a2 g4 H

1 U, G* s3 ?0 c* O                edgeBlendBuilder1->Destroy();8 ]0 l3 @/ [: v$ }- a5 c

2 V9 i+ G! k/ W9 J8 n( e- b    }# b9 `# g2 K" N, Z. ?8 d( E( c
    catch(exception& ex)
- ~) ~* }, u2 d    {" G+ n0 L, `# A4 Z' x5 u5 Y) ]: Z5 }
        //---- Enter your exception handling code here -----
+ M9 u  ?0 x' Z) t7 F        errorCode = 1;
4 L! x- Z+ |/ ?1 r        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
6 K( m: |# X; d5 V) E3 Q& ^    }
" L+ G) ~6 z' y; N1 }6 h1 E    return errorCode;8 l3 M  g5 G8 J( }3 a8 w
}

* H% e( c: l& g) [( k9 h7 x; q

+ R8 Y6 Q+ m1 x8 Q: F% E说明:因为字数有限制,这里只贴出关键代码。# Y9 }: X& @% V& {; ~- ]

! I6 k/ f( T2 Q5 i( C9 T2 }
! U5 V- t* x( E' E! D& q
8 o2 O8 L0 J# j* o+ r
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二次开发专题模块培训报名开始啦

    我知道了