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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

! w1 m0 u$ ^, i: h6 s# h+ U8 p; ivoid selectedge::initialize_cb()
* }1 x: b6 ?. z# [& m. C8 x{
9 T+ P- }) @$ a. ?' v    try
$ S4 t# g; Y* n2 G: N4 r" x: V    {
. y/ ]9 C6 ^. R6 c; C1 g8 Y
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));/ P; b' U* ], X. B( c! d
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));- v  J0 v3 ^. G" t7 f8 u
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
6 _, i& a0 H' ]8 h. @9 u$ w) k8 F) r    caTCh(exception& ex)
8 S  M0 t! u, h    {
# Y, U# y  ~* ^2 U        //---- Enter your exception handling code here -----
6 U6 x$ ~/ e, t2 A- z9 F        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
2 V4 R% s6 r5 r8 A( c+ _    }
6 |, H' q; F$ Y$ g8 n}
/ W6 b3 c" {5 Q3 F* U5 s
( S$ z# `! L. g$ B! {6 Y: v5 W( K. bint selectedge::apply_cb()- q5 U* k/ @9 c+ I
{. T& H' Z9 E9 A, X, b
    int errorCode = 0;$ a- d7 l7 q( ]* Q# q3 c' h( k
    try: {8 x3 }2 B3 B4 Q5 A
    {
: T# D% D, q9 g        //---- Enter your callback code here -----
2 h3 V& W+ W3 C! O# A9 x2 ^+ q- M/ o2 R

, o, M8 j1 U2 ?' A/ w+ B6 N8 \% p* K
( u; t# S, W( e6 p7 A% r  r
                Session *theSession = Session::GetSession();% O, }, f; y; \
                Part *workPart(theSession->Parts()->Work());
: i5 a0 E* T/ H; L* e% ^1 o                Part *displayPart(theSession->Parts()->Display());
4 b; V5 H( h4 a; x' O, z! a  c. T4 D) O6 q
: @5 G; d) D0 z7 u( L
                Features::Feature *nullFeatures_Feature(NULL);
% V" j# C$ R* ?, w                Features::EdgeBlendBuilder *edgeBlendBuilder1;- H: d; S0 f1 L& u* r& X2 S: T: @" b
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
) |) B5 N$ J$ n
9 ~8 J$ _' O% J# X8 x0 ]+ V/ V

& n/ B3 E. e. N* d9 m  S                ScCollector *scCollector1;' t3 o. q; c8 i3 C8 U
                scCollector1 = workPart->ScCollectors()->CreateCollector();
5 B/ ]9 H* Z4 t1 G0 F4 r
5 E4 O1 c0 l' g1 x1 H

+ Y0 \8 S9 E3 H. `# `8 ]1 V                std::vector<Edge *> seedEdges;* @4 v4 v( O6 `. S: M9 Z8 Z
               
. p8 S5 i- a3 Y- p2 _/ |                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象. G: c: \- p; r; M
                for (int i=0;i<selectob.size();i++)' ?2 C# z5 g! \5 a) A2 e
                {  H- l: ^8 S5 N! x, ?
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
/ G* E; ]" K1 p/ n% {4 \  }
0 c* X3 T, c& m6 e; l* o
+ |! C# {  n1 L1 E$ G( w  double dia = expression0->Value();            //获取表达式的值
/ f- g1 W0 s: i) L                stringstream DIA;3 ~7 a- |5 E  C
                DIA << dia;
; q& w9 @. _" f3 K# M4 ^$ `' `* P! j0 N! N& O
( }  w9 N" Y$ N; D+ ]  q$ m
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
3 e" q: ?- P1 o0 C* p; c' n                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);7 x8 B2 y9 L; N
, i0 `4 m) T$ l# |% ]6 B# x& |
' R* F+ B- W5 A( ~- f# A, f
                std::vector<SelectionIntentRule *> rules1(1);
% y5 ^7 _4 |' V                rules1[0] = edgeMultipleSeedTangentRule1;
3 m% `: ^  Y+ p0 J5 q! j" b                scCollector1->ReplaceRules(rules1, false);1 g$ J6 ^& F! V2 ^5 m) M% k% w9 ^
6 A. f- o; P7 V5 X$ v( F

1 t4 K# K! V5 ^) F                edgeBlendBuilder1->SetTolerance(0.001);
! a: n2 Y0 e& \2 w! k
% o3 R" E. L! g) Z& a

+ Y2 ]5 b1 B6 s                edgeBlendBuilder1->SetAllInstancesOption(false);
" t' V+ R3 C+ R. }8 W, c; n( s( t1 l$ s

1 n1 t/ h! H, x                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
/ X: Z# q# g9 ^9 ~6 O& @/ f" P) X; g" E0 A& o3 \& i/ i
- Z" W* J6 G: g: r$ M4 R
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
/ Y8 {! i/ E2 x" _  G6 H# v( H7 f7 H
# P8 p+ m9 A/ b" ^( D& C
                edgeBlendBuilder1->SetLimitFailingAreas(true);
9 F" \5 i; o. Z! D+ |; h* [/ y9 R2 @& e3 w1 m# Y

. c: @8 @& @& T6 j; p! C                edgeBlendBuilder1->SetConvexConcaveY(false);
0 }9 K# L1 S6 M, m% U' N$ ~9 m8 O4 @( ~; Y, U6 R
& a7 ]! X, f1 z
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);7 S0 G: |9 _5 D) n' g0 L/ N5 m

( j5 X9 {5 x/ m" {

* P2 V: [2 i) O+ j5 r* G                edgeBlendBuilder1->SetRollOntoEdge(true);/ `* i. ]9 f/ @, H$ Z3 }
5 I) l9 v& m  }( b( r! D: K
' o: r4 s9 r+ B1 Y
                edgeBlendBuilder1->SetMoveSharpEdge(true);
" x% s6 Q; j  A% W( ]
/ B) r6 o: b4 A/ i# D& J
' H2 u! W2 ?8 L2 a0 k1 [
                edgeBlendBuilder1->SetTrimmingOption(false);
( j0 b. W! S6 i+ R" {8 t
7 |4 D8 X: i" g$ N1 n; c6 @
: n3 A1 R8 X) _6 S" b$ V5 M
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
1 l$ b1 F5 N+ h/ l- S, O1 r
6 J# F( f* o3 M  V  {7 q- M+ C& _
, t0 ]7 a1 t3 P0 c8 O. u8 A
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
9 Z+ y0 O5 R; g8 w  R$ v# ~' ~
! }; Y% M$ ]& F! H0 E, p5 f+ q3 w8 i8 |
0 b. s9 t# g! h2 P7 D) q% A- U# K
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
* [& w2 u9 X6 }( }- L% G5 q0 {2 l* D; E" q2 U0 H8 F# t- i

* Q! z2 W; o; y8 L                int csIndex1;
  E7 J& V, ~8 j" c) j3 r                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
6 ]/ \/ I- z& l0 x9 J- ?7 J+ u
7 y7 ]9 H0 g: T! u. T

  d5 j; A' k% \, t, R! ~/ G                Features::Feature *feature1;* h& S3 P, ~( ^* |
                feature1 = edgeBlendBuilder1->CommitFeature();
6 b5 @! D. c9 L! f' x
! _0 L  N2 @: [6 ^

5 A' I* ~( b& a/ k1 d% \                edgeBlendBuilder1->Destroy();" ~! e$ n# h. d& ]8 _* D
/ I: M' u& ~6 G# }! \+ T) L: p
    }  @  L6 e1 w! {4 A8 E
    catch(exception& ex)
5 Q8 A. m* x+ c* G  a5 X' o    {
% T4 h1 o6 V/ z: e        //---- Enter your exception handling code here -----1 b2 ?: g0 V* d( q/ U# E
        errorCode = 1;: o3 {- f/ T' z$ o
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
: h* l  q& ~# x    }
& o( `; I# g8 C0 }9 q( o" g    return errorCode;
- m0 h5 t& |1 C1 N' N# u}

2 \) T% L. p8 L5 t3 e) O5 S  L
: b5 }2 P2 q, ~! ?8 z
说明:因为字数有限制,这里只贴出关键代码。' e1 l2 o2 |: Q$ Z% r% y
; X4 h0 P( A1 D( X& {

) ?) D: V- B6 R1 Z1 o8 e% n! P  t

1 G7 t) y8 n; T3 R! ~% s6 b8 r! Z
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二次开发专题模块培训报名开始啦

    我知道了