PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

& _: ~, S5 O/ t! d& }# P' i8 qvoid selectedge::initialize_cb()+ k, X: |9 L& p+ A9 Z/ M: |6 c
{& l+ Z- S& H  J
    try
/ T6 J! V$ n& A1 E6 L6 [0 i* v& x; B    {
' |3 o1 x8 p; V5 v7 ]
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));. s7 G$ n: l2 @+ {" y
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));6 [6 q" I% f0 ?
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}3 L# P! S7 a0 ?5 |% A8 v/ l
    caTCh(exception& ex)
' p% F) G. z3 e% W    {
$ k8 t+ h, F& ]5 ~        //---- Enter your exception handling code here -----0 ?7 A6 T8 ?3 j/ a2 j! \
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());1 ^1 Y+ S2 x+ }: l/ K; u
    }( a4 e' a; j* R6 S1 r$ G) c
}
. s- L* b3 c: `7 b* E  M3 c% C! n' j* A
int selectedge::apply_cb()
, g3 B& w$ A1 S  G; Z6 G" s{
6 |( r+ Q0 w1 G2 m1 h3 u; E) v    int errorCode = 0;
" Y" ~5 O/ Q' _7 L    try0 ^8 ~  x' M1 _
    {! @9 a$ z! W- \' a) H
        //---- Enter your callback code here -----) M! w/ x8 U9 ]% a3 w0 y+ X' b8 ~
4 W% y6 U- u+ d" E  a+ l2 O. ^
6 j) \6 |& m0 w
4 I+ o4 `4 `/ t! ~  Y
                Session *theSession = Session::GetSession();
$ i( _2 m: P0 A$ i; I# U                Part *workPart(theSession->Parts()->Work());2 `: \$ J6 ?' L2 @
                Part *displayPart(theSession->Parts()->Display());
+ E' m! h3 N, r8 q- T
4 O' S* H/ T$ O( H: J  S+ B

, n1 u5 h' e3 n# Q5 M                Features::Feature *nullFeatures_Feature(NULL);
; D, B1 S* K$ Z9 R, A+ A                Features::EdgeBlendBuilder *edgeBlendBuilder1;
0 _! I& S, N, `' G: p                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
* _# M/ P$ q: u) e( e8 h( b
7 a; u0 W. T: p4 `- M" ^

& s5 M# P4 z; V" ?                ScCollector *scCollector1;
) W) V' U$ ^! l6 p' u) _* ~5 c                scCollector1 = workPart->ScCollectors()->CreateCollector();
8 r$ j- d: [/ k* a( U' {9 x" }' J. B

" f0 A- t& A2 Q/ S6 t6 E. O                std::vector<Edge *> seedEdges;
1 v1 Q! c% k8 {6 B0 Y( \2 N4 p6 L               
! W& f" m+ t5 o$ u5 d/ m9 i# O- ^# J) R                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象0 Q, k! \% O& Z! k6 [+ {) {
                for (int i=0;i<selectob.size();i++)
* i. y; K/ D9 `                {2 ^3 P6 Q) F1 O# X& P
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
$ x: C/ _- u9 E  }2 M1 }5 G) N3 F3 ?% m* k

6 J/ A0 ~! G5 U2 z6 a2 H  double dia = expression0->Value();            //获取表达式的值* L7 j5 i" i9 C+ Q
                stringstream DIA;
/ J5 h1 v* U4 Y. t                DIA << dia;2 a% e$ {! b; j. `% B

/ k, h8 d9 p! e' V4 ]

6 }/ Q5 n  y/ D: v1 |                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
: W5 c4 o! e% R3 w$ G                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);4 Q, R8 W8 T  ?5 W( `
; k5 t, C0 o0 S( Z4 l

$ I. i3 y2 F4 L! f$ E                std::vector<SelectionIntentRule *> rules1(1);, q7 S$ }9 b$ a  ], a8 F! ^% {
                rules1[0] = edgeMultipleSeedTangentRule1;! a4 ], N% R5 k; x
                scCollector1->ReplaceRules(rules1, false);" `( D5 q: @3 N: R* [

1 [/ D8 E1 F8 Z- X' D9 J# V

! o  F7 W, Z6 H, y/ m! C* X, k                edgeBlendBuilder1->SetTolerance(0.001);
# w, G6 M- _  E1 i" S# m! S+ C6 P: R0 W" j2 c3 H+ i

! E$ `! n& I$ u, ~, ~                edgeBlendBuilder1->SetAllInstancesOption(false);; K! r& ?5 \1 u3 ?9 n/ @+ p! r2 ^

0 k9 C; S# h( C+ y) @4 j% P& Z0 ^

& h: O0 r7 h& x' c. |7 m/ `                edgeBlendBuilder1->SetRemoveSelfIntersection(true);  q, E# Z" c4 Q& |
+ ^! [# `6 Z# @
6 B8 [9 ]9 L. v+ B$ V3 `( N
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
7 }' \& h: [/ }, n# G& }
  j5 z) ?2 `3 _+ s

: D/ u+ x" f3 u8 B/ w( b/ e                edgeBlendBuilder1->SetLimitFailingAreas(true);7 H0 D" E( s  H2 }- n' s  |
  F% l6 ~  K1 w' _
& S# |1 e# |; L7 ?
                edgeBlendBuilder1->SetConvexConcaveY(false);
# f9 t1 I1 }' H1 L  ]; |$ \! t4 r6 X8 j' f: c

2 h3 q! \- Q) q8 J9 @                edgeBlendBuilder1->SetRollOverSmoothEdge(true);, Z: ~9 U" N/ M; H+ X! m

/ ]( r$ Q2 x, F8 t# |

$ C/ e' y, m& p                edgeBlendBuilder1->SetRollOntoEdge(true);) Z# i+ D  Z3 M, Y
* Y9 g, D% {9 S

8 T3 {8 G" X5 ^, v                edgeBlendBuilder1->SetMoveSharpEdge(true);1 a: F( ^7 V, n/ z0 ^% P
- \/ Q# j  K) [1 e: ]9 j) p
- L6 q) e" k5 f! [
                edgeBlendBuilder1->SetTrimmingOption(false);
6 R. Q8 d7 ]# O" `( K. ~
6 |8 `  u3 D1 s8 h9 \
  _8 N/ l" C9 W* R; x& O
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
% [# N; T( K! r+ c$ C# F% F' S2 \0 A4 p% T# a9 m

* I  a4 m1 S  W: n% L9 B                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);2 X  c: E: @+ a
' p9 z% y1 q2 m: X5 Y0 r# L

9 |6 w' A! o, ?( S0 B* Y2 F                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
' k/ y) U6 c% a$ ~( V$ U9 t" _
0 y( s( [: ~! `& s9 q2 l1 U+ ]5 Q
3 a$ x# J9 j  u7 S( F. }
                int csIndex1;- l8 S, j3 ~# X8 `7 }4 ^  F
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
# M/ P# D0 Y- I0 i# d/ U
  s3 J! d6 \7 q% Y
/ n/ s8 o3 _. J2 {
                Features::Feature *feature1;
& E, j  F9 {9 P9 ?                feature1 = edgeBlendBuilder1->CommitFeature();# F# x3 h% X4 J# l9 B
8 {: X! h, {& |/ r& m2 p

% [9 S  m' i- j0 D" a                edgeBlendBuilder1->Destroy();5 q& v( C& Y0 ]- _
$ O$ j$ e# H* L# j; C
    }1 ^) n- q( o% e/ U( F
    catch(exception& ex)2 A7 |: X1 v, S6 G8 G4 j! F$ Y
    {
1 }9 H% L9 j  L" P0 I2 g1 K  h        //---- Enter your exception handling code here -----% y* M4 b7 t; O! O
        errorCode = 1;
: X' c# ~( N% ^) b6 o        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());( `# y! v4 ]' A8 T' j! k5 S& ?
    }1 ~% I9 Z! i+ P9 P. r
    return errorCode;, ]$ y" B: [. y! K, x9 [; w
}

' b3 i. c& H" }$ @$ ?" h5 g* |

- r& X. I1 o2 `9 I* M说明:因为字数有限制,这里只贴出关键代码。1 s! Q% u' d  r3 k, f

4 H$ ~; E6 r: K6 `1 B1 o0 S8 f' I9 T2 C4 v8 `- R

9 c3 c1 H0 \/ i7 ?/ Y
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二次开发专题模块培训报名开始啦

    我知道了