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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

" f4 }9 X* `1 k1 p! Fvoid selectedge::initialize_cb()& p; F$ ?7 Q" |1 o
{
  W; |8 q( l/ V0 y3 K& M    try
5 o2 R, d% }( [8 A' {4 t. P- F% I    {
3 S/ g) J! K% l+ ]/ y" i- J  \% A0 M
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));  W4 X% q# D  k5 V
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));( ~, a! y2 x# i; o
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}+ L( _: u4 d; C$ {3 e( r. Q3 g- r. z
    caTCh(exception& ex)/ G) c) p* d9 S9 K% J6 r
    {. T0 K# g) f) D) |) |$ V( R
        //---- Enter your exception handling code here -----
. c' X* c, E. K        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());$ _# S9 X& n1 O4 e
    }' N4 f+ x8 H: s4 w! J/ L, K
}; O# L9 P$ x- ?7 \" l
2 f& L( \; O) ^  e! }
int selectedge::apply_cb()
7 V: ^1 a" w1 ]{
* `- U1 K6 Z6 C5 n' g' Y    int errorCode = 0;- M! i- Q4 p, V( ]
    try3 a5 C) ~* ?9 f: `' N
    {
$ p3 b7 u9 d) V        //---- Enter your callback code here -----
. I2 B" p0 l6 A' k+ d! J, l  l  ~& {( }3 y' H2 e8 {  M

9 \" N2 v. ]1 u: N8 z
0 T. l1 A; D8 P% P$ G
                Session *theSession = Session::GetSession();7 p, {8 o+ L7 {7 b+ {* y
                Part *workPart(theSession->Parts()->Work());& q/ {  K- {) \3 M- f6 f) N4 y
                Part *displayPart(theSession->Parts()->Display());
) j: J# A5 x5 x9 w) Y$ Y7 h$ J+ k! L' y- V
4 m: w0 P* Z' y3 @% w
                Features::Feature *nullFeatures_Feature(NULL);
# I# h+ v6 b! J: `. M                Features::EdgeBlendBuilder *edgeBlendBuilder1;% {; k0 Y+ l, A
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
- P" a: j* }) K, T, C. |& n- Y0 S0 L0 c" ^
/ w* s6 ^4 R& Q- ]! M/ i, g
                ScCollector *scCollector1;1 r$ S3 C- s- K7 G9 b/ H
                scCollector1 = workPart->ScCollectors()->CreateCollector();
# x# F3 I5 ^9 D. r0 [) k! U! {4 {4 d

& Z& M+ ~3 t- w3 ]) v                std::vector<Edge *> seedEdges;
% f' f6 b$ y% _' W9 z3 R6 L               
; y! z, P1 z- F/ b3 w, I                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象$ L* k/ A5 b( F" p- T: c
                for (int i=0;i<selectob.size();i++)
% w# A, y1 v9 w0 |5 E* j  C) [                {
2 G7 ^- l; ^) R8 K- J                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
& q! E  K4 p$ I6 z  }3 h. _9 V3 ~$ ?& Y
9 ^7 h+ B& f" T, ^# ?
  double dia = expression0->Value();            //获取表达式的值
4 K* H/ A4 m! ^6 E4 K2 F: H, u- @, \$ I                stringstream DIA;
. k) W/ A" q; A% e! q6 A) n                DIA << dia;# a- ?1 N9 [2 y/ \* A1 O7 P/ u+ e; {( Y
' r9 j) k, Y8 Z* M* K, t
1 R- \! p) K6 D- Z/ |. ]- \
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;( J! ]3 ^; |6 _) a
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);, }0 j6 g( i% c, ?: t, b

5 _9 m, _- Y8 X4 f. O6 x

0 ]5 b3 j2 W& p                std::vector<SelectionIntentRule *> rules1(1);
0 C1 ^; `# D! `9 ^- ?! C/ y                rules1[0] = edgeMultipleSeedTangentRule1;) f3 C4 f" C8 Y+ \: R2 u
                scCollector1->ReplaceRules(rules1, false);
3 K! J9 _5 B4 J5 ~' w3 X
/ E. Y" w. m, [* ]( v# p. h
" q: P) _% m; O" @, t6 j, ~' u
                edgeBlendBuilder1->SetTolerance(0.001);
0 L9 t- @& h5 L/ x3 W* {% ~/ {2 z- c' _5 @+ `9 u
! t/ h4 p0 r( t2 @5 _6 `
                edgeBlendBuilder1->SetAllInstancesOption(false);
) M1 R. K# v4 P* r7 p* c" q6 d* `
4 S" O5 |. F& l: x6 p

( I- o  q# n% w. X                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
9 ]9 F6 b1 Q& z% X
2 `" `4 b! {6 @* r/ J0 U
5 x7 B3 c# f& @( t, k
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
" n! [9 F9 h! c8 k. C8 h9 z3 j% u: H1 B% v' L$ J

7 @7 \* G. l* R# @9 ^3 I                edgeBlendBuilder1->SetLimitFailingAreas(true);
$ U6 Y' E/ T5 \' {. n  x7 R
3 {; f: B8 x* s8 p& y+ F) D
: @( B! q( L- Q5 q4 Z
                edgeBlendBuilder1->SetConvexConcaveY(false);
8 Q; B/ h9 b- ]3 S; \' h5 R
( `4 i, N. v! X1 \

. Q" V; z4 n0 y* g: q5 L                edgeBlendBuilder1->SetRollOverSmoothEdge(true);2 \6 ~# x4 D1 K/ e; J7 _" t
8 g( G* O3 H5 A* Q4 T: V

" E# L# \6 Y0 e                edgeBlendBuilder1->SetRollOntoEdge(true);6 T* L% w/ W: y
9 w# D' {: d  Z% z' t  L- n
0 T) \$ U! ]: Z! g' V8 {/ g* A" c9 ]$ I
                edgeBlendBuilder1->SetMoveSharpEdge(true);% s- y) E! v! n0 f6 V4 m" }

7 ^- S3 v  J. F

4 S7 ~  {" ^: w5 V' n                edgeBlendBuilder1->SetTrimmingOption(false);5 v7 @  l/ d$ G$ N$ R
! _' L& `0 J: e/ p9 M& a% d

+ R, f5 I) c8 t) O- X9 F) v                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);# X$ E: l2 s! y* q% y3 ~1 J

) x/ L9 {, [8 r% t( m# C9 s
* o7 _: d( `% R. V
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);/ m7 k6 `4 }( r9 e% Z# Z3 e; h

$ C' @; l& g  B. M7 ?" X* P

- w  Z; J2 E: t( x( J                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);( @( w' P% q# \( P- i

) z6 r3 Y4 g( m
/ C" d8 ?, {8 V" @+ N
                int csIndex1;
' q7 ?3 o2 X: c2 T' _                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
" o( X; Y4 L* c; i3 f
) |$ G6 F7 ~1 A

$ a/ H, p+ o/ U3 h3 u4 s& Q                Features::Feature *feature1;
- H( @: z& z% K7 f8 m  L                feature1 = edgeBlendBuilder1->CommitFeature();" z$ T8 O4 x* c# C/ B8 h& H2 V7 \; _

3 [7 v& G3 u: T; a
; F$ X6 j/ B) c2 o  y
                edgeBlendBuilder1->Destroy();$ n3 Y* {8 p7 L6 ]8 z1 J
5 d! t/ S+ ~* g* r0 b& D$ o' @
    }+ J- F/ `5 J- @) {
    catch(exception& ex)
3 Y& Y* W5 B' X    {
6 ?4 {! j. `6 x9 Y% P0 y: t        //---- Enter your exception handling code here -----
/ k$ |/ a- m! L        errorCode = 1;( {' ^% X5 m- C: l
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
% G8 Q/ w, N& s% p+ m5 N    }" P) c1 T5 |) X; |& E4 L6 n
    return errorCode;- z4 E! O, |' W4 S  j2 @, H. p
}
2 h8 `- e, g5 t7 w% C

2 `( O# G" ^. z! s/ W说明:因为字数有限制,这里只贴出关键代码。
1 }4 |- F4 V. B, K. E5 f' P: @. g; G  ^. h* p8 {& u
" X0 J5 v% R6 {+ ?3 F  l/ C
+ n; v& Z9 N# G9 [! 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二次开发专题模块培训报名开始啦

    我知道了