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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
$ G" g* E! D6 f% U8 u. ^' W% m
void selectedge::initialize_cb(). J  A$ U  H0 Q4 \; v; w( c
{/ y( K3 @8 h' }
    try
* E+ t- D4 r; C7 ]1 E    {

" ]! y7 M- S" C/ d8 l4 ]/ e$ P$ \        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));- o' s% d6 J( [2 o
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));1 Q- Y4 z3 |& t2 T
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
) W' k7 K( W. o3 N: k" o    caTCh(exception& ex). h# j4 e2 e' j! L6 t
    {- ~8 A% n) w% c3 l, r
        //---- Enter your exception handling code here -----' H8 x3 e, W: U# A- ^+ |% `5 ?
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());0 D9 r" H% ]4 U# A
    }" k6 ?9 B8 Z: \1 }3 b% F/ Y" p5 \
}
4 q: @+ y& Z3 }9 V! q+ |% k* ]8 Z  v, D& d3 H& U1 a, V
int selectedge::apply_cb()
- v9 Q4 K' Q( f0 t+ k- Q{
0 C( _! q* S9 Y* q5 P# h# I% Z& b    int errorCode = 0;9 A4 k) h# H3 B$ q( z1 K
    try2 t: y. M' H+ l- l
    {
% y+ ]% ~4 R  @$ Q        //---- Enter your callback code here -----! g! U* @& r2 A+ q4 z

. n! @4 `. V8 m( f4 B) z1 v2 W4 s! P+ N3 g) X0 M0 M! ^. {
* B5 R) @, j6 F
                Session *theSession = Session::GetSession();
) f' @0 U! u+ \# b8 H7 [/ b( b                Part *workPart(theSession->Parts()->Work());
. g9 ^2 i; P7 @" [8 w5 Z0 }0 n0 l                Part *displayPart(theSession->Parts()->Display());
6 w8 |' y& u1 S& ^$ z1 _) {8 o$ s/ J% Q; ^8 `5 o& p! W
; L6 h3 S9 n0 O: ]' o7 _5 d
                Features::Feature *nullFeatures_Feature(NULL);
. G0 [0 W! C* d                Features::EdgeBlendBuilder *edgeBlendBuilder1;
1 |+ Y  m0 k- X, f) ?; D+ k                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
4 D& O  E* k: {& N
( l& v) _% X, }2 f8 i

$ X$ d0 b, q! O                ScCollector *scCollector1;
' v4 C2 f! o5 \  a+ K                scCollector1 = workPart->ScCollectors()->CreateCollector();
- N1 ~$ [# y# Z( z
5 e' J' I8 m0 y% C9 p

" q0 A# P1 i" k$ ?# \5 q, _( V2 ^% E                std::vector<Edge *> seedEdges;( n. }; }7 M+ z0 s# C! z& s
                7 ]: |, I  A, m0 |
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象) W1 U6 D7 t0 Y5 ^
                for (int i=0;i<selectob.size();i++)
$ K8 C7 y4 b/ q                {
6 v- Z6 E" Z4 L/ [' `/ s# ?                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
; ~, F. s- O$ Y& Y6 k* X  }
9 ]/ U  d$ B: |
# `( b; H8 }2 f5 ~: K5 c  double dia = expression0->Value();            //获取表达式的值
7 k6 C4 |7 T9 D& F                stringstream DIA;
( L5 r- W+ F/ F) g' {7 n0 _' o                DIA << dia;7 `8 m' ?) v7 O( W8 e
& j7 \  Q0 g& m" |
* d; H. |6 v# B) G9 l, I
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;" V+ P( F% X, R' t: A
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);- N' w1 ^0 }. @9 \
8 A# M4 F& j' F! T. w! |

) X* B1 w1 v) k$ W                std::vector<SelectionIntentRule *> rules1(1);6 M* r! V& h- r. j0 O% T
                rules1[0] = edgeMultipleSeedTangentRule1;
7 L  c! ~4 i" e0 f1 a                scCollector1->ReplaceRules(rules1, false);1 _; e, r' t" Q7 p7 f3 b: V

; E- r4 T. Q- h) D
( u$ H( ]6 F! K4 x: o  w$ @! h0 u, o
                edgeBlendBuilder1->SetTolerance(0.001);# i# Z* F& U( a$ n% ^: _

, }5 d3 l3 |5 B" H# g( L) |

( u: ^! d, F$ ]2 X                edgeBlendBuilder1->SetAllInstancesOption(false);
% k4 A% u8 S. U; S, W$ _$ W. i2 _1 H+ Q0 g* d; E
: O6 n9 X& ?. {. }* P
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);7 i& B! P' `3 ~7 a: y5 B! \9 D! B% V
, E8 q5 t1 o# t

& u& {7 D% f0 W5 H                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);: N: a( p3 l4 _; P
+ S2 @- V$ C# T2 M+ s3 L& ]
* w) a1 z( P/ m/ x  Y% M
                edgeBlendBuilder1->SetLimitFailingAreas(true);
" T! z( z8 V9 c' {
! J1 K% q, h3 C/ C, G
  `. u& G. p2 ?8 }4 ~
                edgeBlendBuilder1->SetConvexConcaveY(false);
$ ?  Z8 K9 [4 s7 F- e' ]* K
8 u& w- v# c( g& d% n" C* x5 g6 e# B

4 g: T$ _* A$ F, x9 V9 x5 }                edgeBlendBuilder1->SetRollOverSmoothEdge(true);1 H0 K! ?3 T' U, A0 S
. X& P$ L+ z+ ?; Y9 Q3 n
6 \0 f( y8 }6 B4 f% g0 l  d
                edgeBlendBuilder1->SetRollOntoEdge(true);& c) N1 y' R9 a* w* Q
0 d' I' V, P1 [# M1 [

" y0 o$ p- P" w" u) H1 z; r* ~                edgeBlendBuilder1->SetMoveSharpEdge(true);
6 N* q# E7 I& d7 z" B9 I( E, c% p  Z6 I9 c, _6 n
. s/ h2 n1 \5 o6 w( Y
                edgeBlendBuilder1->SetTrimmingOption(false);" W- J" z7 d# s2 {0 {9 G
, }. J3 k8 @6 h. X' o- q5 i* D4 `+ _2 o% b
& U9 X/ w) ?9 h+ O5 D% y
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
/ z, u) r. @5 g5 ~/ I) _& _" }& b/ x2 J
, k& Y" i, U2 z4 G" W4 f( \
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
, J# h' x5 _& H) U" t5 h" E$ {- U6 B0 n5 R
0 E) h8 C/ @& T0 O1 y4 c
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
5 @: p- K" o, z& W8 g4 i9 u4 G( j% R9 _" L7 |. c4 K! u5 U4 w) M/ Y( a

5 r( L! M# P; R+ F                int csIndex1;- p/ O! U& ]; ?1 F8 I, H5 `7 \
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
; k& v) N: }0 T* ?. u5 g! E" U* W8 ~$ `' t1 |) a- O9 q2 X- q

$ s  K- F: l, X# F4 V2 J& ]                Features::Feature *feature1;
% j# S. F# ~& v) k% V" t/ ~                feature1 = edgeBlendBuilder1->CommitFeature();
2 O7 F6 o$ I4 T3 Y
1 t* C0 O- ]1 x* L- ]

: K! g. q5 ~; K" R. W& D                edgeBlendBuilder1->Destroy();0 E9 G+ i/ R* r5 l4 T/ E: B

0 ]6 V6 V" L+ X    }8 q) z( j3 s- [4 q) G
    catch(exception& ex)
8 f! H* }2 G, R  V) z2 t    {
8 t# I% i" u: V$ g$ \4 G        //---- Enter your exception handling code here -----% D  F1 g. k/ A8 ]& H5 T- ]+ ?/ D
        errorCode = 1;1 O. d( F( B+ Y. p0 D% l8 v  w  f
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
- J/ L/ k8 s. O! n    }6 X, S5 y* h5 T$ u7 G
    return errorCode;2 p6 z' d1 C5 F- v
}

2 F% Z5 y8 ]2 C& B2 A% ]( _( n
& w4 l$ i( ^1 ^) Z* v; i
说明:因为字数有限制,这里只贴出关键代码。7 E( _9 U* N8 T. m

+ s1 C) Y) ^/ D4 c, v8 g' G
8 H( Q" U1 U0 H9 h
3 ]# I- S& ?  [' h( B
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二次开发专题模块培训报名开始啦

    我知道了