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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
& [4 P" i8 A  u- ?' v! D
void selectedge::initialize_cb()
0 P" ]; _6 G1 U0 b: n{
9 T. x0 \* \/ a9 |8 V/ `1 O% V    try
0 u* T+ `5 k* f9 L2 i    {

% B: ?( k* d) d8 `" L5 z+ D        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
% Q7 ?+ i: v: k/ b! L; ]+ G        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
& ]/ M! F% `$ ^/ c, j: W7 G        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}) L+ u* R5 J6 G; V, p5 y" X* C
    caTCh(exception& ex)
' b% G1 Z6 W2 A+ s    {" n7 I& x; s. y
        //---- Enter your exception handling code here -----
! c; }+ O% T# P( w, Q3 Y        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
( F1 E$ n* H" c* J9 W    }
' Z" e! W/ h9 a  m( }8 q( ^) n}; j; q/ i1 w3 d9 f; @
! U9 m, ~, ~* P6 t) K6 k* B
int selectedge::apply_cb(). Q* G2 Y9 A1 p5 K3 D( H
{' _: d: D+ S1 n( u8 Y* c
    int errorCode = 0;
( u7 M( s% o" v) \    try
9 _1 U/ v7 V9 d    {  ^9 |( p" I) G6 W, {$ z: a
        //---- Enter your callback code here -----
9 W4 V% [) y' m- `( n* J3 d% `7 ?: _0 ]8 _
$ w8 ~0 }$ I3 R: e1 }0 O
' [0 z4 }3 b1 I% ?( B
                Session *theSession = Session::GetSession();
. M7 T* z& f  W. Y: p                Part *workPart(theSession->Parts()->Work());
/ r$ S+ v- M0 R) N                Part *displayPart(theSession->Parts()->Display());* l8 P( T9 n3 g% i

9 w- g0 g( Q  y2 l/ w

+ r  N- Z3 t" Z                Features::Feature *nullFeatures_Feature(NULL);' U/ [( Z1 |, h& D: ^" M
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
2 l7 u  _% U8 g2 `                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
" F3 S* |( D* Z, d$ H$ {) ^
7 d; [5 `+ R3 K1 _8 ?

$ i/ T/ v. M  o1 {+ d                ScCollector *scCollector1;
! P: c1 x! @0 Z  p                scCollector1 = workPart->ScCollectors()->CreateCollector();+ e( V3 r! C6 N/ x. T8 N
' z) ^4 `" P2 p$ U) B+ J6 `$ I
1 I( D+ T0 V0 W% A2 f
                std::vector<Edge *> seedEdges;
8 `, I9 a& V% n6 ]% [                # B1 \7 Y5 W' f& Q
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象& {- N$ R% }9 M0 O$ w
                for (int i=0;i<selectob.size();i++)
$ T: z% l0 R2 w1 e6 n  l                {% `# s- B+ f0 z; ~
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));4 E" @' F! ^- _
  }7 Y- t- F* Z: [1 s6 z9 C' o4 q

. h; I& b; T( q# g8 h  double dia = expression0->Value();            //获取表达式的值
: c, k; \! ]" i) c0 F9 [: v9 _" {% D6 M                stringstream DIA;) b. `  v; {3 h4 `& l8 F( l
                DIA << dia;( y: b! u$ R8 B, x* _& |# ~- d) R! V% [

6 a+ w6 \# l: ^1 d# U" P* e- Q

" H$ @2 Y9 [. D4 \% K' `. T                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;; \2 V% ^- N4 j
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
5 T  o" x2 b, y. h& O% E* K; [7 ?% h" B- C% x- A# t7 O8 i' V
% g0 ^' t) B9 y: u
                std::vector<SelectionIntentRule *> rules1(1);
; Q+ c8 ?8 l6 R  \3 P- Z! p                rules1[0] = edgeMultipleSeedTangentRule1;
" ?% I8 _' K8 h  a                scCollector1->ReplaceRules(rules1, false);; @0 H: V* L$ W$ ~
  p- C% m, ?6 p1 E/ ]' q( g7 |
9 p5 u, m# u2 v8 T
                edgeBlendBuilder1->SetTolerance(0.001);3 E# E4 m$ A: _( R" y! J
1 E) `6 B6 I9 o5 J

( O! J: r" B9 Y: {                edgeBlendBuilder1->SetAllInstancesOption(false);
  \0 E" l4 _5 G$ h& Z' n
1 A: @$ t! b& E: [8 r3 t
( X6 Z# s. W# x7 l
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
" ]  l  M* H! o2 o  c6 a& a0 q
9 c9 k1 [5 N9 p8 ?9 J% j! ~6 @+ F2 N

2 I$ \& X9 x( e9 c, B- a, b                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
4 q/ Y$ \: X$ _8 b! y" a
5 o3 s9 I* c6 T' c6 G! {) _$ A: }

. t  D7 R, }" \7 N# ^2 R                edgeBlendBuilder1->SetLimitFailingAreas(true);, F8 n. v3 j* i0 \: M  ]
1 s. J5 f$ o; x
! n$ f6 W' u' [6 c. V( a
                edgeBlendBuilder1->SetConvexConcaveY(false);
$ q$ N, s" A% G' I( S- N1 r" G, x& E2 c5 J; O) x, O

. [  l# B8 |) }& H# t5 I0 G                edgeBlendBuilder1->SetRollOverSmoothEdge(true);* L# C0 N7 r6 M4 i4 o. b' O6 b
- Z! I* F. ~0 ^3 R* i
/ C/ {0 z+ U! P' Y* P
                edgeBlendBuilder1->SetRollOntoEdge(true);
7 {+ j0 h- J0 V% ]& v8 U
0 s0 X( B. D8 Y2 u( S, X2 \" l8 v
0 o8 I3 L" o. P1 m4 w! S
                edgeBlendBuilder1->SetMoveSharpEdge(true);0 P8 l, t. x1 w; A0 P1 n7 ^

4 O1 u9 X# L# D- }3 |
1 k0 N9 v  E% N6 d* z1 s' h9 D
                edgeBlendBuilder1->SetTrimmingOption(false);
' ^9 r! e+ ~3 J! d' J$ l8 P4 O' Z1 s1 |3 S/ @; h" B
) K  P2 Z4 B& l: [6 q: d0 M& E/ B
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);: E0 m/ L5 B* j( y, Y1 ]
9 x/ ^( r) P+ X  E  E

% v( g3 }) Q0 E( w) @& x4 H                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);# h7 ^2 _/ O* c6 \& Y
; B& \- p; C8 R0 m& I$ g, X- Q- x

) V7 k  M6 T( ~4 ]; X                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
( O5 w" ^' C) C5 E
: P$ Y+ o1 F& p# _0 N5 e! p5 f

! n# r8 G, e8 S; K; c+ ?                int csIndex1;
) R/ z) V  z+ y+ e                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
4 b- Z+ A9 c  i/ h
4 F/ Y* r/ A# d1 u8 K$ O6 X$ d; `

- h3 S7 A/ W8 K                Features::Feature *feature1;
  a5 u' t  M+ F- {$ ?' a. k, A                feature1 = edgeBlendBuilder1->CommitFeature();$ n- u2 r/ M; L2 J* t
! B0 y+ f8 L. v! `" ~0 H' G

* E0 R; G/ o5 l/ b$ U$ w$ }                edgeBlendBuilder1->Destroy();
( }$ I% k; J4 I$ h  h% I
7 a$ p- }- _  X- O2 Y$ s: S    }
9 B5 C: `# _  \0 h0 u8 Z    catch(exception& ex)
; P  Y- ?  i: ]1 K8 S2 p- ?    {
) T: M+ q) z2 j% M# @! s        //---- Enter your exception handling code here -----
0 o& {3 w1 B! ^) W: @5 y- |9 \" y/ p        errorCode = 1;4 e1 l2 y! z0 X4 B# \8 A
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
0 g; U  e. W5 @$ F    }# F. g6 q5 j( B# I. T% @+ ^
    return errorCode;
* h/ `! H6 h4 Q9 y& I5 R}
& F9 z! {/ A, b
; ?* N) P/ d: g/ ~, k1 y8 G4 g  f. v
说明:因为字数有限制,这里只贴出关键代码。
5 [5 r  m0 T. x- _6 q
* a6 K; M* D9 D1 w5 D7 R
3 w0 R& t1 Q1 u/ n2 m% Q  S' e, f

9 T- v4 X+ b, e* d9 E
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二次开发专题模块培训报名开始啦

    我知道了