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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

2 ~2 e( W$ H0 h: O5 _6 T2 a3 ~void selectedge::initialize_cb()
& r& Q5 J5 q, u) Q2 p! z, P{
5 x( D& o! D! A8 C' X7 [, |+ S* R    try
7 _% H7 O6 @% m. Q6 V" P6 q; r    {

) T& g$ E1 e/ s( Q        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
9 L  J7 V% x+ v0 w5 @; _* L5 _        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));1 i9 |6 Z( e! N% f" r1 f& }  Z
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}  {4 Z) ]5 R) n5 }2 u
    caTCh(exception& ex)% M, L) `+ ~8 o/ `
    {( r" q  Y4 {$ f( N
        //---- Enter your exception handling code here -----: r1 F/ F& `8 a7 D/ w& y- n
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
8 E! i- ?. G5 L" \    }2 A& |0 P* z( X; l# i
}2 g5 Q, |0 F1 L( @

: ^) {1 V4 i, \% T- Z$ l6 Oint selectedge::apply_cb(). U# g* j+ u# u# `. E- j0 H+ U
{$ E! @. a# _7 a* R2 Z
    int errorCode = 0;* G2 m4 \- `, v$ c1 x
    try
0 H2 G% n& I! v( U( P) C    {
/ v- `4 h8 c' E) e$ c7 J8 C7 V9 Y        //---- Enter your callback code here -----9 H7 }" Y* J. N* C8 s
0 T7 R: V& U$ z
- {" ^% a) c" x7 t
4 ]8 i$ Z* _4 S3 k, Z2 r/ Q
                Session *theSession = Session::GetSession();; K- t0 {- N) o; J: W6 ~
                Part *workPart(theSession->Parts()->Work());2 q4 e1 S7 c4 R+ M0 x0 u7 a
                Part *displayPart(theSession->Parts()->Display());+ H3 Q5 [2 `% u2 c+ e  Y/ [
: j' I3 B# p( f6 [( Z2 o* J1 U/ P
* K) d1 \/ x8 |
                Features::Feature *nullFeatures_Feature(NULL);
+ [: `5 d# a. x% d0 @: X                Features::EdgeBlendBuilder *edgeBlendBuilder1;! c, F9 N3 q6 S2 [. f3 K
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
5 R$ [( A& S& V+ X! r% T3 E, p0 H+ e/ i+ v! F

; ]: t) }; |2 w5 x4 D" [- m                ScCollector *scCollector1;
* q) g3 V! i* t                scCollector1 = workPart->ScCollectors()->CreateCollector();$ r8 I4 b1 v  |" M8 @4 M* Q

7 m4 |4 |* d& W' N& Y

- A8 ?# p& H, J2 L* `+ P9 R$ F                std::vector<Edge *> seedEdges;. i( \3 ]% p0 M1 S9 b( m6 V3 f
               
( H4 C* P9 S8 \: X                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象: _- d2 ^! z, C3 J- [
                for (int i=0;i<selectob.size();i++)
, w; s9 j: D: v3 }* f! _                {
9 x+ J1 r5 i! N/ k6 G8 g. o                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
  u; B4 G+ r( P3 }  }% x) d6 r" ^0 O0 C9 G/ h
6 j+ f# w5 A& u, G- `9 X
  double dia = expression0->Value();            //获取表达式的值
. E. f: o% y2 I: K/ }4 g4 A& v                stringstream DIA;1 i( N8 m5 |: x/ k8 Q
                DIA << dia;
/ n" `# `2 P0 o; p! A$ C' s: c) g& T7 j
" z; _3 t! C0 {9 ?
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;- H) `; X( F! g0 h* \
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
3 a9 M  B- T% I6 F3 Y2 [& [0 y0 @9 p  D* _5 S
& v4 `' w* n/ K3 G
                std::vector<SelectionIntentRule *> rules1(1);4 A- r, X" k; M& `* t% X, @
                rules1[0] = edgeMultipleSeedTangentRule1;
' |; t! W8 i, N1 ?$ |8 I5 T9 ~: J                scCollector1->ReplaceRules(rules1, false);
+ |2 L, W, t, ?% C& X. I! x$ r! D+ o" B- Y; {
2 S) n$ F# B' S0 O# E8 S! M" a, j
                edgeBlendBuilder1->SetTolerance(0.001);4 j' s# T: p2 R* C& z6 f" C  {

3 g7 O" ?2 n# A+ [/ Q

1 H% f/ k. \, Z- J                edgeBlendBuilder1->SetAllInstancesOption(false);+ h: [2 ^; \$ Q7 @; h
: d8 S5 ^! S, U: d# P7 A( X
0 T5 \$ u6 A0 i" d' H2 {
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
9 ~6 @/ v2 q3 x, V% L
$ |$ i9 v/ w; e. ~

: f7 u7 M6 F; z8 O                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);8 u  b7 y% o; J

2 f- F; J1 G, A( m( N5 @, v

; i% O- N- i8 j" w                edgeBlendBuilder1->SetLimitFailingAreas(true);
- X$ y  w, A3 |2 @$ `3 ^4 B. @: X" G( N2 M. s! w8 Y
5 _* o, J7 I: A0 o* a
                edgeBlendBuilder1->SetConvexConcaveY(false);
1 F  g% n/ V+ [1 ^3 C& o1 G! M# ?! x4 _' y7 y+ R; M

1 Z* [* ?' @7 X; Z                edgeBlendBuilder1->SetRollOverSmoothEdge(true);' _: p9 z3 W/ g
( P0 T# j9 H4 y+ m2 u

9 \- |5 Z& p9 e7 A                edgeBlendBuilder1->SetRollOntoEdge(true);
( i/ |3 h# Y- k  I9 O4 U- Y# d! \9 X, k

0 N' s/ ^! _+ F) b0 @2 X) y                edgeBlendBuilder1->SetMoveSharpEdge(true);. N3 A' |- I7 L6 V3 L

: M* J1 e9 k* K* i( Z. F1 f9 p3 _; ^

4 {, n" ~5 N  G8 R( y& W( d                edgeBlendBuilder1->SetTrimmingOption(false);
+ I% `. e0 u, A2 H' ~3 F4 y
- f) P2 P0 \5 H* U* S3 n4 I

# O0 K' T8 V5 n6 f, N0 Q! z, s, |                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
% D- R  Z5 z4 d# J8 y' n6 D
: S5 k$ J0 L9 A0 N
1 n' s1 M& v& e& p) a
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
% j0 k) @7 s8 s7 Q# l0 F, r% Q; L4 `6 X- u, Q
# N, `4 X1 E( @/ D# D  B+ O
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
( u, S) e, ]' X: y& o& X/ y5 i
, R, ?+ t. {9 E& L) z

: g, h4 K+ V* h2 V                int csIndex1;* }. S& Z  z# s2 A. |
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());2 K# V$ ^; ^1 H0 T1 y# O
7 |) @/ R1 `# K  P" o) A: r8 p

0 ^& [; ^  y, \  _6 S                Features::Feature *feature1;
3 d0 u. j* t+ }: ^( V) _' p                feature1 = edgeBlendBuilder1->CommitFeature();
0 Y1 d/ a  n- T& m# K+ D1 e. g% q9 S0 h4 X( o
- m3 Y! a# E  V
                edgeBlendBuilder1->Destroy();
2 T* ~# i1 k/ E/ `+ C3 ?
2 ^" V+ @! ^6 L/ q- ^/ i    }4 p  n& ^7 O2 j# T' u, q4 ^4 }
    catch(exception& ex)
& }- v5 C+ f% d0 D& r' M( y    {
" X9 T! s/ m9 x3 B8 d        //---- Enter your exception handling code here -----
) R9 Z5 C) W# v9 g/ T+ ^7 E) Z% B        errorCode = 1;
( C0 `- U& A3 l' v' M7 r0 T        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
7 ~: m# i; j+ ^3 P9 h# T    }
3 r/ R8 h0 p& `4 g' ^8 A' ~5 E    return errorCode;
( e) ?5 a0 a! d; R}

- {+ W6 k, s) m: w$ W) |/ k

  y3 i# a- N3 |  v! |说明:因为字数有限制,这里只贴出关键代码。
6 f  T4 }. I9 _- Q$ N& \$ A  u% o! ^2 J8 ^3 g  P
# T1 d/ k; u+ R+ h9 y! n
! ]' [. A# ]4 k8 N  D7 Q) o
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二次开发专题模块培训报名开始啦

    我知道了