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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
3 x6 J; P& u. [) t1 i% d* N
void selectedge::initialize_cb()
" l8 I- t5 E0 S* w{
5 \/ J' U: M$ ?: K0 X/ a/ W- V8 d6 f" i7 p    try. V$ m: v4 b% b$ u- F$ {
    {
9 R( D2 N; v% r
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));/ [5 d" \5 q5 e* @0 I- o
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
9 O  T) m8 b: C  c, J! O* m5 L5 Y# N! n        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
! b  c0 _* v# s+ K. r; T    caTCh(exception& ex)
* e& F& Q' X* @) d1 |5 J$ c    {) w$ T1 c* @7 v$ L" c
        //---- Enter your exception handling code here -----0 S! z  m9 A, l1 C) u1 d! Z
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());/ d9 \0 h* p) m3 `$ u
    }6 i/ C! U  {8 P% _
}
, S" b. p3 T& I) Q6 J' }; k1 f/ Y& b$ o" G
int selectedge::apply_cb()
1 e3 z/ D/ D$ y+ X% F: I{
1 M3 W$ P3 u  w1 E  t; E    int errorCode = 0;
! u4 ?- z- g- s    try, y& W+ Q. r4 K1 O
    {
0 @1 i! [# t+ Q; ~8 }& Y4 v        //---- Enter your callback code here -----
( X  D% T- m3 X0 J0 A5 k  l* m9 \0 p& B7 }+ u

" z6 X) }8 S/ Z% ^; h9 W: u) F

3 j* ^* {' s7 ^. h; |                Session *theSession = Session::GetSession();7 J# T, a- q5 E" V% z# J* ]
                Part *workPart(theSession->Parts()->Work());
7 R% g, m5 L  H# M- F                Part *displayPart(theSession->Parts()->Display());, q, f0 C4 a6 k6 V
( b, f# l& B+ W+ J, t& z
2 c' J! B; `# ~2 w  z, ]8 c3 ]( K
                Features::Feature *nullFeatures_Feature(NULL);
9 P0 G) M2 f  r8 s! X9 f                Features::EdgeBlendBuilder *edgeBlendBuilder1;
0 B  X5 V) [6 o2 ?                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
6 `/ G  I% |! k" V' l0 U* l8 Z$ m2 ]# }2 \9 d
' N$ M9 Q- |1 e7 X2 Z' B3 A  X2 F; @
                ScCollector *scCollector1;3 E( n& z9 @! Y2 t8 _1 d  N2 B" C
                scCollector1 = workPart->ScCollectors()->CreateCollector();
8 f* H; q. h4 z( w0 `3 S5 t
$ X0 }" \8 c! M1 F% o
: N! I) b+ H' h+ W9 w3 c% ]+ `
                std::vector<Edge *> seedEdges;
/ z3 f1 ?& E4 O/ k+ h               
( @+ p+ [7 b' E  l/ O1 S                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
( t3 Y( G) W: L                for (int i=0;i<selectob.size();i++)
; P" S& ^4 l- \& V                {1 U% g0 w9 _1 V. H9 H" X2 G+ Q' e
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
. D, o- X- U0 W/ z& i" L  }
8 Y; h7 v; d- K6 |; T  [; h% `8 H: G7 C6 U+ G; i
  double dia = expression0->Value();            //获取表达式的值
$ U3 k8 b3 A9 I                stringstream DIA;
+ Q% Z7 s" c+ }9 c# Q( I                DIA << dia;
6 J( s) d  }( d# u4 G! c; g9 M* E$ {
/ t3 X: w( f' R# k% |

  A8 B# Q: V; Y2 b  i" K# F( H                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;7 e* W) o# U+ Z$ c
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);7 x/ z+ \' K. ~  ?" {& ]

+ o/ v* U6 z" [# ^3 W
( H3 e* I, Y/ L7 M9 n- m
                std::vector<SelectionIntentRule *> rules1(1);
0 k! f6 O. L# a4 |4 h' I                rules1[0] = edgeMultipleSeedTangentRule1;& N7 |" n" E, G1 B. L
                scCollector1->ReplaceRules(rules1, false);9 E. f7 f5 B  \! n2 x1 o

/ L7 Y: [0 v  {2 L" D

. ^9 P& u6 ?$ p5 @) u& W                edgeBlendBuilder1->SetTolerance(0.001);8 V* Y  l! s9 n# E# m

% G8 v. p1 y, y- Z* G/ o

6 \3 F7 x0 e5 J0 e                edgeBlendBuilder1->SetAllInstancesOption(false);
; M& q& i6 H4 K2 g" E0 K! |- v0 u5 t5 T" \7 a. x! n
5 u) {3 F8 T1 d; k3 `- ^
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);7 z5 U1 }0 z+ X& v, N: J
4 M# w4 u- N4 C% y4 L: E, c, j" \6 K
" r1 t2 w. D$ C5 X  Z
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);7 j  a4 `6 e  `; g/ O, h4 P- d
  m: o2 _4 X/ G9 u, g
# }3 s. y8 W. O1 V' k$ f( L& v
                edgeBlendBuilder1->SetLimitFailingAreas(true);
; f" G, ]3 Q8 {( a
. @. O2 B' ]- l5 W1 t7 O

5 A7 T+ i& ?6 V( x) e; V                edgeBlendBuilder1->SetConvexConcaveY(false);4 Y* l2 S; t3 G

1 W  }% r7 |& @2 I8 W0 s4 z
" V5 s8 k6 t# I0 q* ^2 ?1 Y+ i
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);  s6 f* D, ]* J4 f

# t' S+ w1 B, l# f' T' ]7 D" g

; B% D& I- T0 e8 q3 I                edgeBlendBuilder1->SetRollOntoEdge(true);
1 o# D& i/ e+ l+ {! ]) F. j. x- L
% N; I% ?1 Y3 T2 M* H8 G' [, [
. T" V+ K5 T- U2 P+ ^
                edgeBlendBuilder1->SetMoveSharpEdge(true);6 }9 r* |7 P- |/ y3 Y

9 H* G5 u) G/ X' Z

0 C) D6 E2 L; f, u  ^                edgeBlendBuilder1->SetTrimmingOption(false);8 `1 q8 n& E( v% F; E/ k: p
0 ]7 [" v# Q$ D7 ]# _7 O+ Y
% g1 y' p% j: G$ M+ d8 v+ ^
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
/ k5 c& b+ t8 [, o7 e- r1 B" m/ s: t" O$ m/ D
  i5 {& s1 `- p5 M
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
. ]) [4 c6 p9 q9 P4 N) k  p/ ?: m9 \3 d3 l5 T  l" `. J
2 y2 p" F* g( c+ Q$ A
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);" _9 ]9 Z* T3 Y2 A4 C% S* w9 q

1 |, N1 I0 D. X
1 }; v* P4 G1 ^, u% B) n
                int csIndex1;
1 J0 ]# Y8 L( P( L" M# \                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
+ D$ Z& i1 b6 u. Z+ q/ y  M0 e
6 j1 k1 E! A/ Z6 n3 j; R

. i% L: F) F( k2 }% r                Features::Feature *feature1;
1 B( U- v  b! g% B$ Y7 S; m                feature1 = edgeBlendBuilder1->CommitFeature();& m7 a9 S9 d9 y3 }/ J* H

4 a( {% _- `4 U' V% P
  [7 Z4 `" k$ p2 Q
                edgeBlendBuilder1->Destroy();! q1 U8 x1 I9 ]& R6 m/ Y
$ s; W$ R5 r! a" l) f& u
    }8 L/ H3 t/ T+ i7 _  o1 `
    catch(exception& ex)) @0 v3 v, K% e
    {
& |* C4 N1 x: W' E! b, D+ q        //---- Enter your exception handling code here -----
# z4 @' Q# w7 Y5 ^6 s4 x0 g( N& l        errorCode = 1;
8 n( Q6 n/ \; J# d7 y        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
0 l& p5 U8 u$ y    }
0 [  m7 `  p; w8 u2 S    return errorCode;2 D6 v' ^/ n# b3 y0 @# A
}

7 A/ J: ]1 O5 ]4 k: |& v

4 O, S. S8 o7 k- r& h% p" q5 r说明:因为字数有限制,这里只贴出关键代码。
, U7 D& ~$ T# \( g
; _0 t7 v4 t/ Y8 X2 O. E% x& w3 l, i

' h$ W: ?6 f. @; W
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二次开发专题模块培训报名开始啦

    我知道了