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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
; p- \" V9 Q  }1 k/ y# `! C# |
void selectedge::initialize_cb()
$ l- v0 v% C7 l0 Z{/ Z7 p0 d% Z. A) ]
    try9 I& C  a! Z9 O7 k/ R
    {

) P' y  h5 s# s" M& M+ z        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
! j! O+ O5 B# L# t$ g        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));8 {, ?/ m  s3 o& n, }; \: Q
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
8 N& Z& g* f7 @# {! L2 I2 ^6 Q    caTCh(exception& ex)
7 I4 m8 h/ p/ v  n    {
( k5 Q" }+ G3 o# l. ^  O; A/ ^1 W! x; o        //---- Enter your exception handling code here -----
/ v: P( E0 n/ G+ r9 j9 q* R& O        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());0 k7 J/ G. i1 d& g8 x8 b2 |
    }
9 U$ G6 i; S/ ^1 _. {+ k3 B6 W, P) e}
9 d" w2 c# e$ x9 ~; P' ^
2 O$ }8 C* @) t2 E0 rint selectedge::apply_cb()
9 O$ z( [; m# `4 }{' }. Q, k& E- x7 Q' I
    int errorCode = 0;2 v! i- L- f1 b' ^, R5 h, g
    try% Y/ n; V: ~4 \; s0 X1 E
    {
5 z  m% z, O4 Z% k        //---- Enter your callback code here -----$ z# W2 Y- a5 g5 {
2 {! ]8 w& y: P. G/ d  Q9 y6 @
( L4 B( ]0 k8 f  _% w# V% \3 Q

) [3 `. G# b/ ^6 c/ Z) U" d) v                Session *theSession = Session::GetSession();
5 {, \$ j$ f' ^; b* F                Part *workPart(theSession->Parts()->Work());
5 R; n4 p8 \2 ^                Part *displayPart(theSession->Parts()->Display());
- |; }) J" v" m6 I+ E* U/ E& y9 y5 a) y+ q! A, C4 K) O
6 n6 J; k4 y+ Z+ N
                Features::Feature *nullFeatures_Feature(NULL);
" B( S  s) s! r' x9 E; a5 h7 m                Features::EdgeBlendBuilder *edgeBlendBuilder1;; R9 {  |$ o3 x- f! u( |
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
( T+ ^6 K# \- O, m$ Q. O
3 ]$ @7 R( ]5 u3 k6 z* x

1 [8 X1 }0 w/ `7 r: W4 V/ [                ScCollector *scCollector1;
# [1 n0 V7 V0 m% \; ~                scCollector1 = workPart->ScCollectors()->CreateCollector();  n1 G* f/ O1 l* I0 a
" R8 J/ ?7 u: X" p. \
7 d1 \5 }" O& }1 b$ [) g
                std::vector<Edge *> seedEdges;
# Q, J+ N* c8 G4 e1 p+ B! g) R               
0 }3 f! a* ~0 O6 b% y; X                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
2 I0 h7 Q+ K& F; X& R3 ^2 X5 p                for (int i=0;i<selectob.size();i++)* @  z; Y; I" r' p5 K
                {
! c) l# \% v2 e, Y& j7 r                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));8 g9 T' U+ G* S' M
  }
. g3 i$ f: F! s0 C# ]
) I1 b+ {) D5 K. r9 d( z  double dia = expression0->Value();            //获取表达式的值
! K  A2 O0 l2 Z3 X                stringstream DIA;
, @! h6 o* i# ]  _* k4 ]9 Q                DIA << dia;# {9 o+ N2 D7 q% x/ d* v
' S& P. \# j& \4 B0 e

0 T- P9 Z% p. ^9 _5 Y$ I                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
. }+ C. U# R/ V5 r                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);* w+ y" D6 }& P+ t3 W! ]* V

* }8 D( R, H6 \3 p& \, L/ j) ?  t

+ N- o2 B3 K- y  |                std::vector<SelectionIntentRule *> rules1(1);
) i' C  P9 Q7 J' ^) P- Z                rules1[0] = edgeMultipleSeedTangentRule1;" l( ]) e& n/ u1 G4 w' s- B
                scCollector1->ReplaceRules(rules1, false);
# J6 @0 H1 p1 ]7 b
9 |1 W& v$ t. H

( l5 B# C- ~( q! V/ r/ O& c3 ?                edgeBlendBuilder1->SetTolerance(0.001);
% i# k! s  q* O- W; T
& B, z" s! K# b3 ~

' ^. N) q% T% E5 c2 z                edgeBlendBuilder1->SetAllInstancesOption(false);
' b' K( M1 @8 m* {7 e. N) O
9 E  U/ ~3 C+ i8 H$ B. X

+ E4 n; a' J/ h- r8 [                edgeBlendBuilder1->SetRemoveSelfIntersection(true);; S$ [, n3 D1 p& b/ T
7 X1 u7 x6 ~9 f' Y9 |* ^. Q& @

8 L9 o' J. J& }/ @4 M7 m                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);! \9 d' E9 m5 R, k/ d/ Y  r  }

) G  D# g* ~1 O! W% s$ G

& s% g% ?0 V8 t( W; {2 h0 L; |7 X                edgeBlendBuilder1->SetLimitFailingAreas(true);
6 Q  r( [3 d5 [4 e1 s/ W& F
5 m( J7 A" C) H+ y$ m, e

1 \% A: o( x0 S, p                edgeBlendBuilder1->SetConvexConcaveY(false);
9 j" b7 z" t  s1 L, z
4 o; \( u) l" W: ^. H# m: A
. V6 @5 Y: u. S, m5 \! |: y" q; B
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
, X4 X0 r$ M2 I$ }2 o+ l" O% Q; ?/ G+ f- E1 A9 l$ T* X4 m. z
8 ^8 m+ l7 e+ r; S" R( s
                edgeBlendBuilder1->SetRollOntoEdge(true);
! ]4 k" y; T* ]" Y6 ~+ E# `
& e' r9 h$ Q. i+ z4 h: O' Y: j0 ^* x
4 P7 C( M; Z; N3 ]$ Y' f
                edgeBlendBuilder1->SetMoveSharpEdge(true);
$ B% s  N; D! B% r) U0 T+ \5 j, g) U. w3 w

6 O0 w- n& V* Y, K+ D7 J                edgeBlendBuilder1->SetTrimmingOption(false);
6 R$ J3 e4 X" Z6 e, }: N& ]! g3 H" g4 R! F( l2 M
8 Z3 w1 c/ R( e: b, g3 n( @
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
/ l5 u0 [% y% ~% u6 H+ A" K: B6 p2 P" |" k9 t
  x" G1 ]6 ?+ Y+ {6 M& O5 j
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
+ m) q. Q2 @: Z6 L3 x# e5 t1 B1 d
; j/ U6 @! x, C1 M# F; v# W
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);) @& a( n! m; h( W
0 `$ Q& ~* D& `1 U
$ M4 N- @& u! {- E! u4 O
                int csIndex1;
+ h' d; r5 K/ W  b% L                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());: d3 K  G5 ]$ ~: `1 e
5 B/ u* _- \8 `+ {
5 s3 ^3 b1 ]' E
                Features::Feature *feature1;
0 [* ~0 N  t0 p6 q                feature1 = edgeBlendBuilder1->CommitFeature();
0 d7 ^' X# E) C2 ^# W- B( n/ I8 h, J2 y' w2 k0 ^6 c4 ^( z
# T# @# @1 y  W. N1 i
                edgeBlendBuilder1->Destroy();# d5 B5 k& y7 `6 r  E* v/ d
2 ^6 Y. i7 k( N4 j
    }: d" C1 ~" `& n( Y& E+ Y* `
    catch(exception& ex)6 m2 w1 x; B3 N
    {
) E" G4 R* ]# @1 t. k9 t1 _( Y. n        //---- Enter your exception handling code here -----
8 r9 g6 H& R: Y6 x        errorCode = 1;/ Y: w- u# J+ i+ z$ N
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
7 i3 K2 e9 V& K    }
! n7 U8 d: s: }( i    return errorCode;
& k6 d, ]. R& A9 Z8 Q4 u  L3 v* x) Y}

* w! @8 d- m- ~
, ^# L( I# Z% X8 {: t
说明:因为字数有限制,这里只贴出关键代码。+ R3 L. e& P9 G* K
# D1 h$ d# `+ G- l0 K, p& J2 U

. c1 q  d+ X( X5 C

% v/ e+ N' r  A- e- t8 l
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二次开发专题模块培训报名开始啦

    我知道了