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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
1 ?* ]/ t  \/ ?0 T
void selectedge::initialize_cb()  T. ]3 _9 \2 ^9 J, x7 P) j8 k
{
  f( p$ w( }& E* v+ f) E; y4 e8 N5 T    try$ _# u. F7 z4 `" o
    {
) a4 m- |+ W- ^% \* _
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
5 g3 o3 T) L2 R4 F1 `        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
9 t6 O$ r3 j$ u        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}5 n; I3 N/ D  L4 ^, ~# I, j1 M
    caTCh(exception& ex)
0 y3 G3 l1 c- K( F    {
* b( j* Z, y& n" B/ {" b        //---- Enter your exception handling code here -----. W# `1 F& {7 U- p; \0 [
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
6 E- e1 G/ _6 H! ]9 K    }
( r8 m6 W) B* a}7 S1 R7 f/ ~$ h

/ L3 X: B- ?6 E5 ^9 gint selectedge::apply_cb()% q; A# \- q. f5 l) z( A0 f9 H
{
/ Z$ _/ h: w% j) t5 @    int errorCode = 0;/ w$ z' v+ w& D; @
    try0 J" @) _& d' P5 M) ^
    {
- ^$ t$ h3 O- ]+ Z6 t        //---- Enter your callback code here -----
5 ~0 z! ~* S6 C( e2 W1 ~! ~  }, M6 C' J) L6 u8 O

" n' z0 N8 F2 ~2 ^: H4 |

! ?  G2 w1 B; k  p# w0 [3 L                Session *theSession = Session::GetSession();  s" t- K! J9 R. k( z7 [1 S
                Part *workPart(theSession->Parts()->Work());$ G4 }8 X$ _8 i* r% X) h
                Part *displayPart(theSession->Parts()->Display());% g, t% `. |: ?% A8 A  m, C; g6 A/ b
2 p$ `0 R+ V! X
8 \( r9 }1 _! v8 e' U' W- _
                Features::Feature *nullFeatures_Feature(NULL);
1 f1 a1 l$ C  M8 {/ ]$ m5 W                Features::EdgeBlendBuilder *edgeBlendBuilder1;. k2 e7 F  A3 j+ r
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);3 z1 N8 M# \% E" k
2 A+ }. y! H7 J1 J0 E: `; P2 G

- |# o. Z1 B. c4 ~0 {: |                ScCollector *scCollector1;
- O& x* R! g4 ~1 J. B8 Q% g                scCollector1 = workPart->ScCollectors()->CreateCollector();
- _1 v$ L6 O/ t2 T" G, |" M; a: r3 E  J5 m9 n, Y
: e" L* J% t1 f9 i0 Q  Y
                std::vector<Edge *> seedEdges;
9 p9 J& q! P2 {7 R' ^                ; G$ W, w: P& u- n* n1 t: f( f
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象( W* x6 K9 Y- x+ x9 B3 v
                for (int i=0;i<selectob.size();i++), F% f( n; n) x
                {
+ K" O4 s# S* {1 }) R4 T# x                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));) j& y7 O3 M8 u/ f; K# w' O# {4 y
  }
& L' Y& J; U2 g1 {6 ?, F5 d
7 y1 A6 T& m) `0 m, g1 G  double dia = expression0->Value();            //获取表达式的值, |, C% U) [# @) D  \
                stringstream DIA;/ U4 ?$ q( N1 U( f: j1 ~/ E
                DIA << dia;' e4 h6 @9 p+ k+ ?* i, ]" t% f7 U
: A. j* V& N7 W& X4 W
0 h2 q/ Y" ~8 \, y: }
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;0 c  n  i5 i& ]5 y9 I7 w
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);  J. H5 a5 ]* B) V; C0 f& k! [

( f& z9 R% j% x: U

7 E7 W+ `5 L" N* U                std::vector<SelectionIntentRule *> rules1(1);
) I, i' F4 N$ J' s" P                rules1[0] = edgeMultipleSeedTangentRule1;% }8 d+ O/ K# f. c
                scCollector1->ReplaceRules(rules1, false);
9 Z; {1 h) C3 N2 P/ p& [! _* Y* a3 N/ {% `7 r2 T8 f- _0 I
" X) u+ ^; @$ u, _
                edgeBlendBuilder1->SetTolerance(0.001);
! i* r' O; n# Q& K
- f9 n" t# U. H
9 v, Q* \1 A" m, ^( r9 A. f
                edgeBlendBuilder1->SetAllInstancesOption(false);2 G7 e9 k* `% d3 v  T: h4 v
) ^& \$ U! a: }+ X

/ y- ]3 D5 d/ o+ K+ J                edgeBlendBuilder1->SetRemoveSelfIntersection(true);  F* h' U  y2 n9 @

6 Z, ~8 `7 n' n1 ~- _

% D; x, V& x( D* p0 }$ ]                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
1 W7 w+ c, X* R0 R3 F, V% }. E7 N
- v& U6 W: n/ G4 [9 m
                edgeBlendBuilder1->SetLimitFailingAreas(true);
  c6 E0 k5 L9 ~5 j4 A  U! e6 }
5 W+ r* |# x$ @  @$ j) }+ {/ S( e

- w: b# K" d! ^                edgeBlendBuilder1->SetConvexConcaveY(false);
3 d9 ?2 O' ^+ \) f5 x; u# A
, H8 J' _' b  b
2 V% D1 [3 P- s, |1 _, n
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
& J. q1 U* D8 |$ U
- ^, B' M+ }9 W9 T# d, l' l7 _

* x: Y2 h: N* W0 D                edgeBlendBuilder1->SetRollOntoEdge(true);5 Y6 R3 h/ H2 }1 I4 R, j. S0 t
) H+ w0 ^+ S$ X9 c$ }7 o2 U
" c9 H. s0 x( r, d8 y4 ~
                edgeBlendBuilder1->SetMoveSharpEdge(true);# y5 j* {: i0 m! x) Y# ?! r
* O5 X. Q. W% `  t3 A2 x
$ K# T& |6 _6 g' k, R0 D$ M  [
                edgeBlendBuilder1->SetTrimmingOption(false);
" j5 V* r  `' B. ]8 s5 Q) v. J9 l9 X2 l9 a! p8 t

+ @/ }3 U1 d- Z1 J0 I: {; z4 O- [                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
1 {# s9 y& T+ ?2 C- t6 D  `
& N) v2 t5 x) R, ^/ l
" N5 g- K. K  f: V
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
) k% t) Q9 e" n! Y" D  ~' Z. T4 ?) ]8 }5 `6 a2 V* _0 D* ?$ E" \8 N

! h! s# J2 ^0 |                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);! M. W6 }& \, R/ R2 P
7 u* S( a. Q; P9 s* T
# L( o: F: ~) k9 f: `2 L4 j+ |
                int csIndex1;/ ^" `2 R) J& e6 G/ ?
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
) I: Z5 H$ l; X! q) h4 i) T6 y" t( e2 {

3 D. _5 l9 z' r8 p+ d2 @                Features::Feature *feature1;
2 y) H6 e; Q+ _5 Y                feature1 = edgeBlendBuilder1->CommitFeature();
, @9 C; l+ o7 O% k$ x5 E
" b2 R3 y. h0 |' y. {
0 m  n5 U/ `. a+ u2 k& x
                edgeBlendBuilder1->Destroy();
" v, M, ~! n+ U! l3 O
9 k. U) }( Q8 w    }0 V* A  b6 E* P  |* b! \1 u4 m
    catch(exception& ex)
. ?3 f. R$ c$ a$ h    {  g8 Z3 x+ _3 k5 L6 j
        //---- Enter your exception handling code here -----6 g5 r/ B; V+ N- B6 f
        errorCode = 1;
/ M, w! c4 ?: D- y        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());/ Q" ^  j7 p. E9 O6 Z
    }8 z! m9 S1 o: F& T
    return errorCode;
+ {7 q* Z% n4 `) I( k# f* ]}

; l6 E( X5 }5 I0 O# g! ]( {" V1 q# b

8 P, I+ {& l2 a) D* [$ u9 D/ Y说明:因为字数有限制,这里只贴出关键代码。
7 J4 _5 H2 V0 k
3 {& l5 v' E" U6 d8 B. z, n
7 n: q+ y# i( B0 b4 I- k; d0 n

) x6 C8 g2 H( r& R5 f6 h$ P& Y9 O
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二次开发专题模块培训报名开始啦

    我知道了