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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
, _( }3 `1 O* G8 B% e' n
void selectedge::initialize_cb()
* n1 M: H  z7 `3 Z- F; V0 p3 S. F{6 {& K3 V+ X7 W' X3 {
    try
7 B' `9 @/ Y( D! t# r% m. l! V    {

8 q5 C  D8 q$ v) m* s, V9 i9 h        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));" k9 ~. i( }9 u/ \# t
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));" H, L( X$ ?- ]) O
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}0 t8 N+ a2 D% M6 G; [# J/ f+ E. X
    caTCh(exception& ex)
' @+ \/ q6 b3 n$ t. U8 v    {
" s6 V! S) B: I3 p' f: q4 _# U$ y' {        //---- Enter your exception handling code here -----+ r6 y. `* X! W$ O6 A0 I
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());# w3 y# Y) w7 f
    }
* V9 ^( \9 M- N: ]: J5 [6 s}
* V% x1 M0 `+ D) v6 Z; [$ H1 ^9 i7 m$ _$ I4 k" j  x0 b# {6 h6 @# v
int selectedge::apply_cb()
) L0 a, |- r0 d4 q- x1 i{) X/ q6 X' @2 X/ Y5 S
    int errorCode = 0;
# x; e2 e5 k! k" }/ I9 m0 g& a    try
; y7 j6 N( u9 J5 t    {4 J! b  y" S, s0 V) [9 A- ^
        //---- Enter your callback code here -----* o4 M/ u; [2 ^- s8 P! {
+ T0 S2 O8 r. [

" C1 x# |$ y0 e* t  E, I
5 t  Z2 F) E& K( k: b) |
                Session *theSession = Session::GetSession();
/ X: |) `. S& z) {                Part *workPart(theSession->Parts()->Work());. _* A9 @) N2 W4 H! r$ K! F# R1 w
                Part *displayPart(theSession->Parts()->Display());
" v; g# y8 G* {) y  E: _+ X! b3 h" J9 A3 b; C; ^

' Z7 U8 I" }) i. i; O1 y( O* F" P                Features::Feature *nullFeatures_Feature(NULL);
5 |5 `& ~6 n. Q                Features::EdgeBlendBuilder *edgeBlendBuilder1;
2 @/ u. g4 x6 H- q+ X2 ~                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
" ]' F! F) ^5 @0 F& H/ p5 N% B
, Q& k6 ], s2 E. s$ T- }" D/ X

7 c% p4 Q8 z! k; t  D5 m                ScCollector *scCollector1;; L- d* B2 }* }9 ~% |3 M. A
                scCollector1 = workPart->ScCollectors()->CreateCollector();
* j$ X7 H& m+ A2 R# u) l0 x/ o4 N( a# H- v
2 ?# w, x1 E% R( }4 I! R/ V
                std::vector<Edge *> seedEdges;$ O1 o$ ^/ T! S$ i- C8 b
               
. B9 S& ?3 G9 m                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象5 _3 \$ u( D' I
                for (int i=0;i<selectob.size();i++)( d' d% [  z4 ]  T/ j/ z
                {
7 w* [: ^- p/ Z% ~- |6 {1 V8 M; B                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
) R) w: V# P4 C2 G  }$ S8 K$ o& M% v1 s# x8 u
5 V' d( @! {& I/ }" p7 i
  double dia = expression0->Value();            //获取表达式的值. k$ T! C$ N) Y5 W  K
                stringstream DIA;
5 V! N* v% K9 I3 n                DIA << dia;
# q- N/ ?+ X6 W! s4 J3 e3 @% M& N* j  t' k

2 L8 V( H) N9 y) P% K6 B                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;" o  K% z! \( y0 |% }+ O: m
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);; B" z7 f- c) j  f6 Z

6 H2 X4 s# A  A

- O& N! Q) J- W( ~( _2 A                std::vector<SelectionIntentRule *> rules1(1);/ R, a2 {5 K( D$ w; f2 n' m* i
                rules1[0] = edgeMultipleSeedTangentRule1;
# f. |' s2 Y% V) {                scCollector1->ReplaceRules(rules1, false);
) D; y5 Y9 T5 M! h$ _; E2 m. Z3 M" M: ~: n- ]1 ~" w8 S& l) S1 z
5 K+ k9 c' d3 I
                edgeBlendBuilder1->SetTolerance(0.001);
# F% K! K7 e6 a& L3 n( w* l# @* g3 M7 D3 s  n: q) v# v+ v/ R1 j
) o2 m$ N. ^3 s% n
                edgeBlendBuilder1->SetAllInstancesOption(false);
4 d  S6 m1 U, X! b- N2 v4 P7 e; W6 @/ E& Z- R1 G

1 M& D) n! C5 i: l! x- I8 F* F" _9 {                edgeBlendBuilder1->SetRemoveSelfIntersection(true);, S$ n" v( b3 ^& g. {/ i% L3 s

6 M' T' K4 ~. I) ?4 n* X

5 b! b. X) O% W8 I/ ?  x8 {% A' a                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);' n* L7 l2 p" s, z5 d

$ s# R8 ~4 j  p( W  ]

$ ]5 V* W) J6 Z) G" |                edgeBlendBuilder1->SetLimitFailingAreas(true);
( Z7 l/ M. |2 f2 D4 b' \  L2 p9 a/ _1 R  y. v' c& T
9 @+ O. H' ^5 i2 z" X" ^
                edgeBlendBuilder1->SetConvexConcaveY(false);
3 }0 \2 w6 ^9 ?3 {; H+ a
/ G5 q, t( m/ w8 e

( A9 M) S3 h# R5 K                edgeBlendBuilder1->SetRollOverSmoothEdge(true);. M  i7 D( d' h
7 j( k: D( S7 f" a! [5 e

! [3 r- j# u: [  H/ I                edgeBlendBuilder1->SetRollOntoEdge(true);
) b$ L8 H4 |9 P3 G! h+ }4 I; z2 I" B  N2 P7 H
3 W3 Z' Q* Y5 }  T: ^
                edgeBlendBuilder1->SetMoveSharpEdge(true);
0 ^/ Q2 m& y6 C( L( l! n! i) U/ }& R: N! Y  g  c* O+ A
) K1 J* @7 i3 H( V; P/ G+ ?% u1 p
                edgeBlendBuilder1->SetTrimmingOption(false);+ J! m" k/ k4 J
! K1 _3 `0 ?' L: I9 O) m: L; |

5 {1 g9 B0 x, H2 ~2 o- z5 n                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);9 S7 Z0 l$ r: ]: P* o* m; v8 C
) n" q% s* x( v! l$ p2 D! Z

) E9 i: a1 j  _9 E" L                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
- V' v% I9 I+ U$ @4 ]
) `+ ?4 h& y+ r4 }7 j9 d& t

8 I9 I2 ?1 P' y% L2 p                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);' x" h7 s3 T) \- g

# v! [6 U4 |1 ]7 `( S+ N

% S  {( s% V3 i+ M/ Y9 y6 v: i                int csIndex1;0 v) O: P$ s+ h7 s, R- @. |' W4 [
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
: ?4 ]/ {" v% t& X& K2 z  o
4 C/ e/ t1 `. S7 g0 W
( @/ Y* @0 y" F7 M; N4 Q3 T
                Features::Feature *feature1;  T4 s7 B% F, Y7 n
                feature1 = edgeBlendBuilder1->CommitFeature();( D  i, d5 H# Y$ |( n$ H! H8 [" ~
  j: f5 [) b: S! r2 f# H

$ F; E4 m2 w5 Y; j                edgeBlendBuilder1->Destroy();4 W( T: i+ X* U( [' k) L

0 y! A5 ~" m3 ?( z# y1 f& N  k    }. Y2 T& p6 U" H( i  P, v% y1 M, ~
    catch(exception& ex)
# |8 K. o2 M  K! U7 ]! e    {
/ b. N3 I3 a" }' T6 i3 f' Z        //---- Enter your exception handling code here -----. K. I) u  I. _; X7 j
        errorCode = 1;* T, L- t7 I5 D, n) L
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());% n6 d! Q2 K5 s
    }
- b1 s5 R6 j7 z    return errorCode;* |( u; W3 s1 N; H3 t: i
}

: S5 L6 j7 n4 J- w% t) b

) T. K/ h7 E  I  Y4 v说明:因为字数有限制,这里只贴出关键代码。3 O6 b, H3 X5 w2 @. O7 X# M0 f2 V
3 X: m! F" P& k+ A2 m
6 V! R+ G) A2 b  T5 {6 s7 {
) ?4 J. w% z+ a2 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二次开发专题模块培训报名开始啦

    我知道了