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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
% r* Y! a% P8 ^
void selectedge::initialize_cb()
9 O, J* h' \! M1 T- X* L{
7 I. M% c+ Q* [; k. S2 x1 s* K" k    try7 A- @3 K1 L# H: p
    {

! s$ a) s, k: `0 K        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));% R7 e( B( n* w1 }# j
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
9 u! Q! e. J1 O        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}+ w+ G1 M9 q* r& R
    caTCh(exception& ex)
) O1 w+ _% x$ Y' v8 }: W1 n5 B    {3 W9 E& z5 l+ w% ?9 f
        //---- Enter your exception handling code here -----8 h- U7 h) r! I1 o& j
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());; w7 t3 ^+ K4 L' Z- A$ b
    }
5 n4 [9 @; {7 E' o, Z}1 T- i3 M* N1 c* F7 J, l

) m4 d( \( p* i& a, E2 u/ `# _1 ]int selectedge::apply_cb(); K6 u) @! P+ c# P& w9 C" {+ l. S9 E" I
{- B* |7 ]8 _. S6 H7 C2 W0 D2 z
    int errorCode = 0;! G6 Q/ b9 v2 p4 a, \2 Y
    try; g3 W) f$ u" w% n, T7 [  b% G
    {
8 [: f: x" L6 n* ^% G        //---- Enter your callback code here -----) \. O: l9 ^: {4 J( e1 T2 f5 j
) d$ E# e* M' s5 k* x

- L' P$ ?$ @, x# ~# t5 {5 [: M

% b# Z( m# P4 w/ l                Session *theSession = Session::GetSession();
* C1 U9 H$ P; g% c8 @( m+ I9 [                Part *workPart(theSession->Parts()->Work());
3 o" G6 X* g" x                Part *displayPart(theSession->Parts()->Display());
" E, I) M$ e' i8 l# R
/ x) o2 A2 @: F8 v+ ]4 [: ^4 ~

4 H; I/ l! e6 G  n/ c! D* V* `                Features::Feature *nullFeatures_Feature(NULL);
: D4 W% q& X3 V8 |- v7 W& X' q8 j1 g                Features::EdgeBlendBuilder *edgeBlendBuilder1;
2 J& ]3 v) e2 G2 E  o, B4 q5 x; H                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
' s6 \" f! g% x7 c7 R" B" e# z3 l5 [7 o' |! F& q9 G8 B, z
& T- o% P4 e) t" f
                ScCollector *scCollector1;6 F. S2 B6 _3 ]# W7 Y; Y5 Y
                scCollector1 = workPart->ScCollectors()->CreateCollector();' k  `3 D, r. {, q6 A% R; r' h! }# [
; ?/ H4 C2 `/ j9 v( m4 o
. n. _8 I- m; g. Z
                std::vector<Edge *> seedEdges;
3 O' p7 h& g% I% \* v# ^, D# e               
5 o7 m6 l3 m+ }% C2 Q# v                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象: a9 w; @7 {8 t# O- q" J) ~
                for (int i=0;i<selectob.size();i++)' _; w! J4 W- J. T
                {! N/ d; _) p: Z6 ?" i- g  J* H
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
& {8 a* ?* K0 [. E7 ^( b  }
7 \) i7 b6 X' `4 t6 m2 r; Y# C7 \% X- ]0 R! O+ i
  double dia = expression0->Value();            //获取表达式的值
0 a: }* }* u; S( f' i8 U% ?                stringstream DIA;1 s9 `/ g" |* L' q  p; o1 c
                DIA << dia;2 K5 i  x3 a: y5 x6 B  v' ?
2 O) q% o/ l1 K
0 A/ [1 `( z5 F/ ]7 u$ }8 V
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;' k: u! v& ?% \. W- h9 O" b$ Y. V% N
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);4 x; Y" a. @* x0 U

6 U. g: `' @' v5 {; W

* r9 ?; {4 ~, ?9 A                std::vector<SelectionIntentRule *> rules1(1);( B  ~3 T6 U* z: Z7 A
                rules1[0] = edgeMultipleSeedTangentRule1;
, o5 }( A0 X$ _, D' c1 [% O8 O                scCollector1->ReplaceRules(rules1, false);
2 w1 t4 R' F6 @# m5 e! b3 B
( u9 Y0 y/ f* U- ?
: n7 Q: c8 U) z5 k2 d# j. V
                edgeBlendBuilder1->SetTolerance(0.001);0 L# Z0 q6 r; ?: L/ ^
7 u8 F9 U. x4 k  c7 W
' Y! x0 J, ~! W, `4 c% i8 S
                edgeBlendBuilder1->SetAllInstancesOption(false);
* W! V$ G, n& D4 o4 m" f
, O, |# S* e( @+ v) g# u: z

4 ~  ^! P5 J8 h) S7 a- L+ V                edgeBlendBuilder1->SetRemoveSelfIntersection(true);- }% i5 C, V. p4 j: a. W6 u

3 p0 Y$ M# j: U0 d% q4 ~$ X& l

# g) k3 f1 T  n3 k; R0 U) q0 T6 f6 ]                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);. G9 K6 Z) @/ G" z- z
" s% G8 t, n+ l
( Q. e7 R0 ?- ~6 D0 }
                edgeBlendBuilder1->SetLimitFailingAreas(true);, e/ k' G, r* }& c& ]9 l( i: l' i

2 {- K- ]( `9 q0 T- [! ~* ]

- K& K# O  R/ k3 d# t# w2 M                edgeBlendBuilder1->SetConvexConcaveY(false);) m( _) E4 s9 A. {
) n. h  q. K7 J- q2 Z
. ]* @! @( f  T/ s( `) o' X
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);- _0 o1 o, P& {0 V; N- v1 B
& U6 H. V; c2 \1 ^9 D' G. q/ E

- Q. n( [1 w6 }9 G9 E+ T4 X& z) v5 S                edgeBlendBuilder1->SetRollOntoEdge(true);; O. j4 A5 ]0 C9 i4 a7 C7 ~
- k7 e1 c! T7 w% }
% Y; w! ^, t! l# m: Y
                edgeBlendBuilder1->SetMoveSharpEdge(true);
2 J# T0 n9 ?0 N4 l# n5 U& X5 [* M& r- }' ]& G
* o! J7 |' l. Y  ^; H- W
                edgeBlendBuilder1->SetTrimmingOption(false);
! k$ y! e# \8 _& G/ I8 \6 H" R  S) X% D& n& X* I( l/ Q
( P; A& o+ v# W$ A
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
0 X. L- \, @# S" z1 R& t
, S9 N* \, a& L8 E
/ X5 r7 e' f4 [0 |) |
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);$ b, `. t' D1 E5 L& b3 M
5 r1 B  |) s  u0 A& n* Y' O
+ ~' T/ K: E6 L1 d( l$ T- {
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
$ F0 z9 E6 X: g+ B! Z/ l' c9 s3 c9 E" r% i  H4 A
7 K6 F# j0 C; m4 s/ J8 E! p4 G% \
                int csIndex1;
) t  ]2 ?+ q4 q9 b$ ]                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
/ o9 @2 n8 d% n1 S1 Z8 E  B9 d8 ?, p! E( P+ z3 y  [$ b+ j
, s/ t, E0 _+ m5 @9 j
                Features::Feature *feature1;
: K/ n. R; H' A9 I# @% X                feature1 = edgeBlendBuilder1->CommitFeature();
: L9 o; |3 n* k$ M' B4 {( t3 O' t; }/ f; m

* K: e- p: H5 [- U% y6 q                edgeBlendBuilder1->Destroy();; V6 X( c/ C4 u" @! @

8 P9 \+ o6 q8 Q: y1 r    }1 o. S( q. M) A4 h. `5 |: Q
    catch(exception& ex)
) b& B/ ]- ~1 Q& D    {
2 a1 a  B7 n% E& {' [. _7 e5 {: K        //---- Enter your exception handling code here -----7 \) B  A$ C* u1 [1 t" {
        errorCode = 1;
8 m5 L; E, E7 c& M5 v3 C        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
/ y; r% k5 h9 g4 L$ g. I    }
8 }6 \. N" }- H) R  x9 T7 i2 c    return errorCode;2 U- R. v; k" x, c% G: \
}
7 A6 D3 d/ K& u( A6 G0 K3 W2 Y
4 N1 T" \9 Q( I7 c  L, r
说明:因为字数有限制,这里只贴出关键代码。
8 n! }8 W' ]5 N* _0 [2 M$ Y
) e& f' o6 _6 X9 P: v/ y6 ]
* |! ^; _: h7 |' ~* W

: N" K/ ~$ E! [0 Z& M
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二次开发专题模块培训报名开始啦

    我知道了