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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

# x: n( N, u, F: uvoid selectedge::initialize_cb()
. F% `( b0 x1 T4 {2 c3 q{/ U5 v) i' K$ o, y0 `
    try) j2 p5 V: L' l1 n9 M! D' F( E, X
    {

7 x+ i- B3 ^9 U- t7 J. I        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));8 }6 G/ }6 w4 K7 `3 J! r
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));# V6 M! q6 X$ B! \. J+ @
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}. F9 @4 W  q, Z
    caTCh(exception& ex)
0 h7 q4 t: n, K  h    {, y, Q0 w/ F2 G# |# P0 v
        //---- Enter your exception handling code here -----+ z1 f1 {( c" Z# _8 n
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());" {6 o0 ]6 ^# `& o# i
    }
' t3 h! F9 S  L8 n1 k+ W# [# _}
' u- S# n% T+ C9 x' W* \- ~$ E3 I' w9 x
int selectedge::apply_cb()
6 }* H5 l3 p) d- x3 Z{
+ u9 c0 t2 a- z7 w; ]* ]    int errorCode = 0;4 B% S8 g3 L. h$ I! z% k+ y
    try  r% K  Y$ G' K( E* G
    {( ]! N6 A( Q/ P, u
        //---- Enter your callback code here -----* x1 j' R) X1 z( L# e& l
+ l) n/ g, L$ ^- N5 U
3 \8 ?$ Z1 F1 W* T# N! X! t0 w9 z
! j" B- N' K, Y! G6 Y
                Session *theSession = Session::GetSession();* f0 L4 k8 ]& S4 g, k( S) d
                Part *workPart(theSession->Parts()->Work());0 y& Q- \8 P( i* A0 j: k
                Part *displayPart(theSession->Parts()->Display());. S/ ?0 r/ R: M* U# U" h
% q9 x% |* S7 z2 f) h
& R. `3 c" _1 E! D3 i& u
                Features::Feature *nullFeatures_Feature(NULL);
7 e/ j& D1 E) O. I) k- T                Features::EdgeBlendBuilder *edgeBlendBuilder1;. J# r3 k# f* t5 x! w
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);% Y+ \- C: a/ `3 l4 X2 d
  |& k& U' |; H3 F# }( N

; r( d  b+ l- [: O5 D$ A                ScCollector *scCollector1;9 |& Y: [+ P# @. M/ S: N9 h, W
                scCollector1 = workPart->ScCollectors()->CreateCollector();
# \" C+ T/ |7 ]
6 V5 y  z. d/ H1 z

6 T; P. l1 E9 b! H                std::vector<Edge *> seedEdges;
( C$ U, |6 v8 U, f3 s% X1 D               
- X  y! {3 V% O& ~                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象0 }% I9 {% V0 w' V2 g1 z# ^; d& X
                for (int i=0;i<selectob.size();i++)3 n" z9 a8 {( [( f- a# r$ }4 h
                {/ g0 S* A8 p3 o! C
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));- x* l3 ~0 L) c
  }2 J$ l, @' g/ p
- |, P4 t- l2 }, k# b
  double dia = expression0->Value();            //获取表达式的值
8 C# a; s* k% e4 q& x' r                stringstream DIA;
5 ~% o5 a: O) p1 a5 K! g                DIA << dia;
3 r, m% ~4 ?  \5 I- ]; q' H$ Q& u0 U0 Y- v: h3 G+ i# \
2 \. b; G  Y: s" ]
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
. y4 N; {6 p. l" `" U                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
6 h, F  J: e3 x: E: ~; X% M% q8 d' O" j

# q% c( g' s. M& s                std::vector<SelectionIntentRule *> rules1(1);, C8 x) a( d# F& l9 x' k9 i: D9 _  q
                rules1[0] = edgeMultipleSeedTangentRule1;
& g+ R3 ]4 l8 P: t9 ~2 ^                scCollector1->ReplaceRules(rules1, false);( ^, Q* f3 `, ]7 C9 j
$ R/ t$ M" G! `9 y4 G0 K" P

' \3 u; w$ y& z7 k2 r  [                edgeBlendBuilder1->SetTolerance(0.001);
+ L$ P& E" D( |& a( K
8 u# V! {" n0 ]0 f( A- ]% |

+ e) y  }) q% e& I4 e4 r                edgeBlendBuilder1->SetAllInstancesOption(false);
; d4 j% f( D( H' i' K2 z: q3 k- v. H. J9 x- G; A9 H
, c( ]' X# m2 Q3 H, W
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);5 k2 W1 {: W' @/ C& D
3 q& m& G9 F. T+ A1 ?& }" b
  z. }6 Q  Y' }( s2 B4 p
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);4 w/ W" V4 y; k  c/ P7 v

7 m2 g' V' j! b6 h
  _: x/ w& M, r. [2 k/ j- f
                edgeBlendBuilder1->SetLimitFailingAreas(true);
& z  e3 `$ n5 ]* q+ M8 \4 @4 f" L1 m8 O4 m. l0 b& D
. t% _  A: o  p2 ]$ h
                edgeBlendBuilder1->SetConvexConcaveY(false);0 J; A3 O: G. e+ s$ |; ?: \
' O6 O8 t1 R. R8 D( W0 p

  f9 n+ }6 d3 P6 [$ r- |; |" r                edgeBlendBuilder1->SetRollOverSmoothEdge(true);; ~* K5 J) R1 n

" d. n: l# v8 W. B% J5 L; A
' w6 K( U, ~* o0 {3 T1 `% w
                edgeBlendBuilder1->SetRollOntoEdge(true);
2 @8 M5 U" g3 X8 M' ]4 J- E& l) L* R
" ~& i- \, U" a. n6 v
1 x2 N$ {6 N- W+ w, Y8 t! ^
                edgeBlendBuilder1->SetMoveSharpEdge(true);
* E% q8 s1 O+ h5 N
# W  D1 Q3 e) ^6 m; O* v0 c

% H+ I/ V9 M3 A                edgeBlendBuilder1->SetTrimmingOption(false);
# _* o8 ^; y  S; W
9 ^9 X0 ~" b! V6 j! K. L  s

0 l2 N/ [' g) C& L. u' A3 H                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);# a/ G& |3 @7 \% M
1 D/ H# B7 V) G
& x4 k2 a8 F4 j4 k6 V) I2 }' c( [' I
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);' E/ L4 V' |7 B  k+ B
" V$ f3 y/ _% D. k

: ^2 k# u3 R/ A, ~1 X4 d! p) {                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
5 M% c8 i+ {1 ]# V* H6 q1 X- K+ m+ a! W$ Z% u" l2 c% z: E1 |
7 ^" m4 H: S. i( x
                int csIndex1;
) Y' p. u' e, J6 [* w- J                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
, n# ~$ k, O8 Y5 h* C/ X- G" x) a6 E

( z% T$ f/ L) P) a4 A- s' y. t                Features::Feature *feature1;% B" X6 |/ k7 x/ F; m0 J
                feature1 = edgeBlendBuilder1->CommitFeature();& d, t, u5 {4 l- F
% {/ s' `8 B8 K/ k5 Q

8 k8 N0 A# A; I                edgeBlendBuilder1->Destroy();
2 b3 H/ ~5 d6 s+ J2 W: b- d, C0 c; {+ h/ c7 R# s5 n
    }1 W0 C8 y. `+ o4 Q9 ?2 v' h
    catch(exception& ex)
! Y( I: F. W3 y- p8 t5 ~5 M    {# x: V0 k9 R9 z6 v, o
        //---- Enter your exception handling code here -----2 G6 r" u! p/ H- e! Z1 w6 `
        errorCode = 1;8 N- \; |  [- M1 L$ R
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());- I/ f6 N; K  e: {# r
    }* O% d5 B$ @! C: l
    return errorCode;; _3 Y" t: j, r/ ~
}

1 H. r% Z' J3 D% O3 k
% A3 z7 Q7 ]9 J# y% t9 y( g0 A
说明:因为字数有限制,这里只贴出关键代码。; i+ Z7 i5 ^/ g- t& ]8 \

: j! |0 N  h2 f
; }1 a3 }4 D' l+ v1 C: J' j
2 J# S: v+ o) u9 b; I% x+ @
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二次开发专题模块培训报名开始啦

    我知道了