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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

# Q' @% J* U0 q6 u/ h* G' zvoid selectedge::initialize_cb()7 r9 n2 S2 s8 l$ o  J; {
{, u: ?, t  p. ^/ [1 d' E/ P# c+ u- G
    try
0 m) C+ r8 j" O/ N1 z; B" v    {

. @3 a* d2 N6 [* J        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
8 G/ I* U5 r6 e5 q4 I# k: Z' b        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));9 z. d' ]$ w' p. j5 F
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
1 w6 C. [- d' D  {" [4 n; b% ~  o    caTCh(exception& ex)
9 T( L0 O2 p& C3 Q! l: n    {- m, M( T0 t! r! j/ L9 K. E
        //---- Enter your exception handling code here -----
1 k6 j) [, l) F" l+ ?        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());; p, a2 S! {! J' p' C# K' H4 p! X
    }- n- G, v6 e- t6 B: J
}
7 x; |5 a" g7 X: G2 D& E& x* c3 w6 J( J1 X* Z: r
int selectedge::apply_cb()
# k6 h# V+ H3 `( y) K{" t6 X: _8 D7 i4 e
    int errorCode = 0;
3 Q. Y4 `0 o1 H1 k/ q% c; A    try1 _0 }/ b. x8 J5 h3 R; q
    {
) Z' r, e/ P, v, x        //---- Enter your callback code here -----1 m; I7 P6 s( ~
) U) n! l) g+ \8 n, S) Y

+ b) }1 z" B8 p0 g3 }
. f! A7 F( S, {7 v% L' j
                Session *theSession = Session::GetSession();* D1 r& _5 ^5 h+ S
                Part *workPart(theSession->Parts()->Work());% m% w' C+ s! p; ~7 t. Z2 ?- R
                Part *displayPart(theSession->Parts()->Display());+ c! S# `) _" H! L2 V( j2 k3 e
1 l% G- q( ^, B4 p8 I
) `" o4 ^& j7 ^- t5 d
                Features::Feature *nullFeatures_Feature(NULL);& \3 ]9 w# j) t2 E0 G( T
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
- w$ w9 ^/ k+ |' w* N9 L$ y                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);4 L8 G! s5 Z4 v
8 C6 f2 L$ y3 I: g+ w

6 G& L3 F4 Z; J+ B  C; i                ScCollector *scCollector1;2 |7 P- V$ s( T& J3 F5 P( ]
                scCollector1 = workPart->ScCollectors()->CreateCollector();
' w2 K1 M3 R: U- d2 j
; z, b) _$ v. z
- Y# H1 r1 Z6 M8 N% R/ `$ h$ E3 C7 V* B
                std::vector<Edge *> seedEdges;- ?  M0 f, r3 y4 g. \2 {* I$ V3 @
                ' j- Y7 x. D$ C1 K8 r& ]
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象8 V, U& Z! n9 C6 h. c5 s
                for (int i=0;i<selectob.size();i++)
3 r  ~% G6 l9 Y' u5 V6 ?                {
! }  F. l+ }' o! i3 O; g# j                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
6 H+ I" z& C; L. A9 z  }- O& z# W# K1 s! `  f6 i# u% h" n; N
, Y& z# [+ t3 F3 s1 Y
  double dia = expression0->Value();            //获取表达式的值6 g! K, Q: H9 L# B8 y& b6 K
                stringstream DIA;2 |1 e+ h) u5 l
                DIA << dia;: d9 q1 r/ ~- A! l6 ~) L' v
  n7 ^- b; i9 a) G% f) s7 d+ D
/ ^# h/ O" \) G# G5 R" r; o
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;$ c" s, K/ [' H' Z' A
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
& q3 Z: k/ q5 E5 ^7 N+ ]
+ S0 K$ Z' r8 {8 N1 t- V! y+ V! g
, F0 c( r5 E% o  z$ X6 |' i
                std::vector<SelectionIntentRule *> rules1(1);9 j+ R" h& v9 o# v; ]1 u
                rules1[0] = edgeMultipleSeedTangentRule1;* Y" y# F( ~. N8 w/ ]8 g# ^
                scCollector1->ReplaceRules(rules1, false);0 k8 L4 N! E9 `7 ?  H7 J# f/ S

! V; V+ G# \1 x. q2 H
) `, f! K% y% D7 p4 g
                edgeBlendBuilder1->SetTolerance(0.001);0 i/ f3 Q: Z% Z7 z

% T( Y2 v  _5 n+ F) {: U/ F7 x
3 C! ~! c: Y% Q) y
                edgeBlendBuilder1->SetAllInstancesOption(false);
# b$ C* |. E! q) z6 ]* s* C. q% y- A+ h; c% X$ T" P

( M! R9 F- p2 _8 H$ E                edgeBlendBuilder1->SetRemoveSelfIntersection(true);! E5 ]% P: l, Q; H, n/ t1 Q
2 M$ v) l4 H5 A$ D; q
2 L0 ~8 |% p4 I9 n$ Z- K, w
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);1 y) I; a5 P& I6 r0 I7 q

3 c1 F, ]" P# l# k/ b! s

8 T) A! O* E* y$ z                edgeBlendBuilder1->SetLimitFailingAreas(true);6 w; F+ Z# N  N2 A+ G- |

8 L+ H2 u4 q7 X8 x' d  g- U( u

. A2 h- \6 T0 l+ p4 U4 |                edgeBlendBuilder1->SetConvexConcaveY(false);
4 Y4 U1 E: ?8 x. O( r4 o
- o! M7 W: T% q  ?

$ S! q& C) g( B4 x                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
7 F2 p% ]3 m' F8 W  o- t, N8 P: R" C7 Y; {

7 h: ]' y2 O8 Z3 k                edgeBlendBuilder1->SetRollOntoEdge(true);0 x5 F: a! X# p

8 Y! G4 k! q. r: t

) [- m+ }# J- C                edgeBlendBuilder1->SetMoveSharpEdge(true);+ b3 A. }. ?- r8 G3 Z
3 o6 I0 i' q# I9 c4 d* ^! F8 Z

, p; a: o/ V+ N9 d" I- h                edgeBlendBuilder1->SetTrimmingOption(false);
# w5 N8 ?0 ~2 }5 U; a+ W
% i# f' U, g1 Q1 T
2 \/ S: M3 k. u8 y5 Z) b% T
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);/ G2 B4 l2 S( C& N

" @% e( A7 B" B5 t
  L) F2 c5 L" F! E
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
0 N& ~2 V) @$ ~; S6 i+ H# T6 g  C$ B
/ g2 d' e6 `  U6 J; f, G
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);1 b$ |/ r6 r' q# Q- j' e( {  L
) ?; A3 }2 D* m* k. e) G1 t6 C- d

  K0 r! t8 ^5 y0 \2 I                int csIndex1;
: w' G( R2 e8 `6 I$ k                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());% Z) Q+ Z: W# y: h

6 A& u6 x: w* f1 a

3 R5 p) i( N6 B* _( h; i- P1 x                Features::Feature *feature1;
6 J! Z3 N, H- x2 W' \) Z4 y( B                feature1 = edgeBlendBuilder1->CommitFeature();% n# h6 b8 T* J

: ~; R& M2 w, `
1 W7 y8 T  K$ q
                edgeBlendBuilder1->Destroy();+ |1 K4 A. W  _  J9 B# q: L' r# A: ]

* F  ~( {9 K: A  B  L, l- z    }5 g2 Y9 e; H9 D( A; U& ^
    catch(exception& ex)
. @8 x# b# |7 I7 [# }    {$ k$ A( F5 n2 H
        //---- Enter your exception handling code here -----
, @6 ?: N/ `: b0 m9 Y; M& Y        errorCode = 1;
) U" m+ m; ^# b" n" W3 Z7 m: P        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
7 z: I% k+ |4 I  q6 G    }. l* x! H, [/ Q; M# I0 k
    return errorCode;
6 \$ V0 j1 O2 q6 `1 \# ^}

) G4 h9 m# Y6 [: h% p, Q& B

" [, u3 M7 U" `0 }! ?( ~! N说明:因为字数有限制,这里只贴出关键代码。/ X* v8 d- }( c  C% s1 }, O) P

4 I% d$ G6 B1 i2 x0 G; T2 P9 S( R6 t; U1 ?" h; P! [

& u0 v' ?+ f! o0 {
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二次开发专题模块培训报名开始啦

    我知道了