查看: 4356|回复: 3

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

 火 [复制链接]

7

主题

9

回帖

228

积分

培训VIP会员

积分
228
发表于 2015-8-15 09:15:43 | 显示全部楼层 |阅读模式

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

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

×

0 Q" B6 q+ |% i: Xvoid selectedge::initialize_cb()& z, E7 N+ e6 N. P, [
{. W# B0 {4 G6 Z; |: ~! y5 I! w
    try3 ~& \* G. h& f) G5 ~2 X- M
    {

. J' H0 v' W9 t7 F' [" u        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));+ I0 ]: `$ _  ?9 O4 n/ V
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));+ p$ _0 j( o  |- G5 X4 V
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}9 _( s1 _+ N7 q  k
    caTCh(exception& ex)
* d% _" ^( T8 a4 m, Z$ U4 Q    {
: _: j$ I3 k8 C: d        //---- Enter your exception handling code here -----
0 J( E" m! X  q- i+ Y% ?+ Y6 G6 D        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());, E5 R4 R& e2 {  S' W- N
    }
( d" M) s- p' U7 `}
4 l  n" v. s1 x6 X1 A) U( b4 v& }6 P: Q9 f4 ]  u) g0 |! r( G8 a
int selectedge::apply_cb()& |# o/ q# A% A9 m  A, v
{; q; _0 d" _, w
    int errorCode = 0;
1 q2 A* K( {/ f3 ?; u; ~    try$ |- @' |  H/ w7 x5 z
    {
5 M0 _+ L! u0 @        //---- Enter your callback code here -----
# `& P6 ^9 u, p, s9 t% ^
- H  L- ]% W% ~. A7 S$ D9 M
5 ^% `! u6 b, C, t
2 Y+ V3 P! e6 G% I1 F" D
                Session *theSession = Session::GetSession();/ p  T/ a$ }, V
                Part *workPart(theSession->Parts()->Work());
0 g: `! O2 }6 G' e% O) B* j* L9 n                Part *displayPart(theSession->Parts()->Display());
+ `$ W* C6 D( e7 p
  t, n9 m; n. A9 J/ d- I
" n. F1 ]( W5 _6 p- }
                Features::Feature *nullFeatures_Feature(NULL);7 W+ s+ `+ R- f
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
6 K+ Z8 I! p& [. z& K6 k% I                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);( [0 B+ X2 a1 V$ S% A* b

* a1 ^. @+ r$ Q0 x) h0 Y* Z' x
! Q6 D5 j: p7 s' s7 W
                ScCollector *scCollector1;, ~* e+ z9 |& k/ j8 d
                scCollector1 = workPart->ScCollectors()->CreateCollector();; C( }/ I6 Q) I

+ o8 O3 ^, z% `1 I( C$ B( x

& O* P$ C1 `. V1 A3 X                std::vector<Edge *> seedEdges;4 [1 D/ x: O8 u  ^! c' h3 B
               
* K2 \# R' u' Y- v' @0 ]                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
: o0 U4 L4 V! O: E8 m/ _4 d! {                for (int i=0;i<selectob.size();i++)
  B8 a! T9 Q7 k2 y+ d# Z  K                {6 S% d) [0 _6 c3 x7 w$ z
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));1 K" ~- F" A, e+ R
  }
4 E3 p6 {5 B! `: P2 |* u2 P
9 S# G1 Q6 K8 n. i* g  double dia = expression0->Value();            //获取表达式的值0 G$ k# V  f) O3 r, V
                stringstream DIA;7 x5 d" o6 P5 d8 O% Y
                DIA << dia;
& r2 f2 ^9 H7 i5 N
) m) c' i  q3 G0 D2 o0 t
& U* K1 G% s1 e: i
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;6 x0 ^$ S9 A# i& b- |+ D
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);5 }4 ~: F% J# s! J

. g2 I# F4 J" j- H+ e- t" X

. J7 k5 a7 `7 e+ J( t7 P- ^2 }                std::vector<SelectionIntentRule *> rules1(1);9 U: F7 G# S# C6 w
                rules1[0] = edgeMultipleSeedTangentRule1;
( B2 e8 r; E! t  I                scCollector1->ReplaceRules(rules1, false);
1 f2 U7 Q" o, K, U) n( F# B
7 E( Q( [9 y3 n: E0 L
& m* e' m7 ~' L: F: p
                edgeBlendBuilder1->SetTolerance(0.001);
: I* X6 ]2 Y$ a0 `+ g# G3 _' y4 B, q: \. A8 U
3 A$ J( p! ]/ k# r
                edgeBlendBuilder1->SetAllInstancesOption(false);
- {) p+ h' u3 g8 q
4 O" f% D  P2 S" X0 _5 f+ [
* W2 n' C1 P. U7 w  l; P0 o  w
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);3 J" |  o* E/ ^, M0 v1 R, N% x6 [
) L: @5 m  m; B1 o, z+ u

8 {$ m% u, n' [2 R6 n  |                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);% T6 [. Q9 K: Y, h

% M" f9 D! R7 N9 l* ?* |% E
- d7 Z- [$ f* c$ ~0 H6 K. \
                edgeBlendBuilder1->SetLimitFailingAreas(true);
. q3 _5 F: F8 ~( L" H8 l$ ~& S7 f( l9 m$ I, R" _
/ S* x% E% ~2 D2 x# V
                edgeBlendBuilder1->SetConvexConcaveY(false);
5 c( E1 ?8 W0 X2 ]% E8 R: g! D% k. ^' ]+ Y/ S; A. B, L
/ ~8 n& Y( k* A1 _' `+ h
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);, z3 f- o+ d6 q3 F' B; {! @

: p8 v- s' I4 t2 x. A
: z, n$ G1 v7 a9 p  w
                edgeBlendBuilder1->SetRollOntoEdge(true);
. u9 E0 ^) Z) o8 a0 u9 e* _. A# ^2 R4 m; ?" p3 L
8 o! c5 ~- M! v& ?
                edgeBlendBuilder1->SetMoveSharpEdge(true);8 J# s2 w" @9 `, m- k5 n
4 y; W2 l7 m  r$ K% {

- a2 W5 L- ]+ y; Q                edgeBlendBuilder1->SetTrimmingOption(false);2 Y% ]9 M9 u2 h$ B. d. f5 X
! c, n+ P# i" E( Q: p- Y
1 t, u+ N( {/ X0 Y& _
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
$ s- K9 E( U  V5 U' {) j$ ^0 _( L
0 M# H  E' p1 o$ K

( w  G0 p( d& I# h+ ^, i  m/ b7 e                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);: y. V7 s: Z# b
) W, C6 _# u3 [' l
$ @0 r/ g# B, E. I3 E. {* b
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);- Y% X7 Z2 j# Y. C! p/ K
0 v7 N9 l/ Q2 q, s$ f- u
' T: Q  v! B- |% r9 T
                int csIndex1;$ }" A+ t/ [& L1 J) G/ ]
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
' F) ?) {6 e. ]8 h- U5 Y( p4 N, m$ O  l- ~0 W( T
/ y4 s! h% y/ r' ]# n
                Features::Feature *feature1;
3 O8 A% u0 x( `$ e                feature1 = edgeBlendBuilder1->CommitFeature();% o' }3 P6 q. z$ ?% m9 t" ~! ]7 b! ^5 f+ z
# [0 K; D8 B$ g4 J- y& B+ O/ Q

# g2 J* {; F' E. F, J, o+ R                edgeBlendBuilder1->Destroy();% R+ l% e1 m: [1 x
1 M4 o0 w) m: r9 R4 E$ O* Y
    }# f( i7 H' m6 j8 Y7 m# L
    catch(exception& ex)
5 W2 \, X# r6 F    {
6 D! M. J- {  N* I/ w! o3 e        //---- Enter your exception handling code here -----
. z6 t( B6 B# J( A* s% `        errorCode = 1;/ f! \& p7 D' h5 s
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());! s; o1 m! I. `& w/ @; Y& i9 R  C0 D
    }( V# D& I" y* [0 H) _% M
    return errorCode;
( C( h5 B  Q3 o; S; u}
# R: y$ L% v7 r

3 N' E% ?) x, D) I+ w. U* s) F说明:因为字数有限制,这里只贴出关键代码。& F3 R  M6 G. i+ T6 ], {8 z# T. J
$ W3 c. v0 P+ _2 Y2 @( k1 \3 Z

, r  e8 f+ y, |9 A
! e! J( U' k# _
QQ图片20150814180022.png

评分

参与人数 1PLM币 +5 收起 理由
admin + 5

查看全部评分

上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

1

主题

10

回帖

125

积分

注册会员

积分
125
发表于 2015-11-4 11:12:18 来自手机 | 显示全部楼层
如果我选择是一个实体,怎么自动将所有的边倒圆角呢?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

7

主题

9

回帖

228

积分

培训VIP会员

积分
228
 楼主| 发表于 2015-11-23 16:33:40 | 显示全部楼层
遍历加判断
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部