PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
2 F# V2 O* Z3 K8 u
void selectedge::initialize_cb()
) W* Y: Y3 o* Q7 T{
+ `4 J  Q9 j! {" {6 {( B- a    try; W' c  _5 U8 @
    {

; j3 i! @, |2 ^8 t% u& U        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));: {; P/ |+ }1 f# `' c8 V) J/ t6 s4 ]
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));. Z' E. C- |( o4 D6 K
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
3 |* @6 {$ q; B" U; F6 r    caTCh(exception& ex)  q7 j. r3 f. s3 p! R( i) c
    {
4 E  M# F2 L; Y2 w& e  n0 _        //---- Enter your exception handling code here -----4 u. z) l5 O- N8 T/ Q$ m; u# Z: _
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());  ?( j3 `3 r9 p  l
    }
* K2 a# N, y; u$ D}
6 F: U7 b- X* |; u0 k
. ]4 p6 Y4 _2 L6 F. S' Z6 Tint selectedge::apply_cb()1 K0 w: y# ?/ Z+ ?+ g! C# B3 f
{
4 @8 H% K2 t; d    int errorCode = 0;
  \( ?# h' c& X, J% L    try
! \" A! z( E3 Y3 f- d' x    {
+ w5 N7 r! s9 v* _$ m        //---- Enter your callback code here -----
# j, M" u1 a5 k+ k) \7 h) Y: u1 b# V# O  [( s' P' Q

  p- w% u# R- p) D# E3 G

+ d( H' h# {* K- U* Y5 ?* {                Session *theSession = Session::GetSession();
9 R: `$ P3 ?& }9 n4 g                Part *workPart(theSession->Parts()->Work());
% L3 p9 A- O# O. @0 u+ `0 c                Part *displayPart(theSession->Parts()->Display());5 W) F6 U" \" y
& Q5 ~9 o2 ]+ w% ^  t
; n! [; H, Z& p8 H
                Features::Feature *nullFeatures_Feature(NULL);
  V$ c3 P) ]- B5 {+ W4 x                Features::EdgeBlendBuilder *edgeBlendBuilder1;
+ ], U  \/ n+ D# e2 S. F                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);$ T$ X( R- W* x' I0 r
7 J# Z) i0 ~. I# p4 f
  ?4 o8 o0 w- A3 v" p
                ScCollector *scCollector1;* v4 n' D5 [5 w1 Q) ^' H* r
                scCollector1 = workPart->ScCollectors()->CreateCollector();
" e1 }: ~* w6 |4 s$ o
4 |+ E2 G+ j/ N* V! H: v' k$ m

$ J" Z3 C7 d& u4 `! N+ X                std::vector<Edge *> seedEdges;
5 P* |8 x. P8 t# h5 s$ d( w                - m5 I: D: |% k( y
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象' w4 ^4 `  n1 t9 }$ s7 @/ C7 G4 E
                for (int i=0;i<selectob.size();i++)
* O# i7 H0 x9 l: R% j                {  F4 j: r2 e( q( x3 A" C5 L5 I! S, `
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));+ n3 y) E) i( ~' E! N; o; M
  }/ r# m4 ]9 K) C$ l
/ r/ ]% K+ x. h4 [; B3 `! c/ @" u
  double dia = expression0->Value();            //获取表达式的值
1 D- D8 O+ v  H9 l/ y                stringstream DIA;
2 }8 o- a! _0 c9 b; x                DIA << dia;" a  N  q: B! X9 i0 b- Z

: I9 J) H8 U" A) q8 M" f
' f! T: \) B  w; F& D
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
- D  ]2 W. M+ y) ^$ V; w4 x                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);% \1 `0 P" r, W" i& K/ H- M% n
! {4 g* b, ^  m) A' j/ x
% _* y1 g; k- {
                std::vector<SelectionIntentRule *> rules1(1);+ Z% T  p3 a, i/ O; x7 @$ }
                rules1[0] = edgeMultipleSeedTangentRule1;
) |$ @9 c' S( |" K5 f                scCollector1->ReplaceRules(rules1, false);0 \0 `2 T, Q# z

/ v. a  c' H+ q

: H' g( @9 m: v. I: \                edgeBlendBuilder1->SetTolerance(0.001);: n" _% S: C. `2 {
' |9 W  a) D; ]1 J3 U

! s0 n9 a) W4 G                edgeBlendBuilder1->SetAllInstancesOption(false);# b) g% u+ @% \# a0 v' @; _, x9 P
9 L9 B/ ^- P, \0 E" p9 L
: J& @# B. A( x& k" h
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);: q! _: E, f4 }; c1 k5 p3 ]7 W
! L+ \* K5 w7 o( V4 n  D

$ u' ^2 e! f, e& X' c3 I                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);* D. t! w* J; [3 J- {

6 A& F( `% n0 X, b( W& \

6 t  G+ T+ g" [5 e. I7 \" I* }2 `                edgeBlendBuilder1->SetLimitFailingAreas(true);
6 W) Z' J0 p. G: q* u+ T1 |9 ~& F1 B
) a. h1 _: y* i( g3 ?7 Y
                edgeBlendBuilder1->SetConvexConcaveY(false);
; w3 r% z* H4 i, i- J$ V! I2 l# ]# m) Z; c% `% j

; Y, W4 h6 t8 f& p$ d( A4 y                edgeBlendBuilder1->SetRollOverSmoothEdge(true);1 Y+ s- i* C# u, ?

. d# v" j' G7 }. b& K  a

" m; d" G; K# H: \: L                edgeBlendBuilder1->SetRollOntoEdge(true);
* |- ]( Q" H: g" t6 ^
0 J. [* j+ i& f" o& {
, u! q4 Q; _; }" K! `) ~; P
                edgeBlendBuilder1->SetMoveSharpEdge(true);( o) i$ ~' j0 y, w" U7 B
+ S6 ]7 k5 e. Z  i

8 v9 n* R8 h, d; y                edgeBlendBuilder1->SetTrimmingOption(false);
+ U; j+ H8 `- d( r
: d: ]7 V, P5 H8 q. C! w

" t7 F9 b) y. y/ t                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
) T4 t0 \& f  d$ @4 ?5 K( Q3 U
; i& Y( x4 P0 M3 g7 P- l0 L. @1 Z
+ v+ W: k; B/ S" d/ \% @
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
4 V7 ?& _5 |( J3 R0 o/ ?3 x! L8 F0 y+ s# g1 v+ u- i4 g6 ]

6 o+ [! ^9 R2 W) q6 o                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);- y0 O7 \" h* L0 Q: Q; q
/ s1 W' Y, H2 W, g
" Z) ?0 C) ?8 x4 }: ?6 P5 |+ w
                int csIndex1;
2 \5 z) K* Y  t0 p& b+ z- ~7 J                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());/ O2 a8 j5 y" @9 E2 V4 j
* G1 g3 P7 g  T& V! s
4 x6 G( |. ?$ t% a7 H
                Features::Feature *feature1;: p. E+ h3 t% `# A4 y, L" n  [- g
                feature1 = edgeBlendBuilder1->CommitFeature();. `  B' a8 K, A: P+ F& D! a) A
: d" I9 G" d3 }( q" [8 x

3 o; Q( n2 Y/ B1 Y- t. h' q                edgeBlendBuilder1->Destroy();& l' M2 ~4 A  V, X/ ^; P

+ }& F9 r& a0 a: r    }
" T0 {: t+ o+ J8 c7 Z1 A3 L    catch(exception& ex)
2 D: ]1 C7 W2 O8 I/ n+ x    {
/ u' _# u6 y3 N1 S0 ?, ~$ f( w        //---- Enter your exception handling code here -----% z1 f  s" p6 ]" H
        errorCode = 1;
5 w. ^0 {; k$ @  T; N* @2 [        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
% v  d# @3 u* V6 K- [    }
, u! U- n5 U2 F' j; T# O    return errorCode;* _& C$ O2 P% V' j
}

; ?4 c8 B% }  S  g% K
( z3 C& \8 ^1 k9 s# m( W0 @! D
说明:因为字数有限制,这里只贴出关键代码。  K7 A3 p' g( K7 ?* u
8 S/ k. [# H! n; J  w
7 J- p3 B" r8 }. g* `% G

3 }4 @4 X9 ]- x1 l
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二次开发专题模块培训报名开始啦

    我知道了