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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

  ^( Q) @( o" k2 K. A% R: @void selectedge::initialize_cb()
) ~1 t  o+ Y! w, m{
, L" V3 l2 y6 P) f% a    try1 W. `7 j3 n' Q' x
    {
* m9 U  M; y! k$ A0 f0 M$ ?" s
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));$ G7 _+ T( S- X
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
* R. V. n: h- F# U+ Q        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}6 m) [) J+ j) ]' F" d! D2 P5 T
    caTCh(exception& ex)
7 C, t% R' C' \6 W8 y    {
+ @7 m" @) T! U$ e6 j: O4 B        //---- Enter your exception handling code here -----. x" _; y+ w. e4 V& u
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());8 y/ R; }! [7 n9 A9 @, o8 k) {
    }
% U9 _# f5 Z1 f}$ ^- L# f6 f0 p6 _+ D/ j- ^- Q3 }

$ K" y4 I9 e4 U" W. y, H4 Mint selectedge::apply_cb()
2 c" M( o6 }8 c( y* v{
. I. O0 ]5 q" h( u+ `$ A  E    int errorCode = 0;$ ?4 r7 O& O; A# j, y+ |- e
    try
" C: p  G- d6 f) B    {
- o3 |, _0 d, W: Q0 f        //---- Enter your callback code here -----) _/ ~) _2 ?# h6 U( d. f* P

. V' D5 J8 B) U( d6 J/ B- Q8 h" z7 |1 |6 W
+ i2 j1 b% B* D4 h0 j
                Session *theSession = Session::GetSession();( s9 v, G& b) r. |* @1 K
                Part *workPart(theSession->Parts()->Work());
$ D) G2 L$ \7 o8 j3 E, \4 D8 h* q                Part *displayPart(theSession->Parts()->Display());
0 O7 B. s( `. @9 b5 ~( G7 a( j6 {) x( a5 F# H3 n# X4 U+ M6 ]

( B/ E  `, W2 ~  S- v                Features::Feature *nullFeatures_Feature(NULL);& e1 l( u7 Y/ h% e; O
                Features::EdgeBlendBuilder *edgeBlendBuilder1;2 U+ g9 S/ |0 [6 K7 r2 f4 F
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
' r- c  E9 Z3 `; A7 E
" W" i# H$ `# w. i! o

; O+ M8 I7 K- L5 Q$ h1 N! l9 k                ScCollector *scCollector1;. P. B' E( P3 Y' N
                scCollector1 = workPart->ScCollectors()->CreateCollector();
& S; b8 Y& x& S! |1 m
$ u  Y3 G  F7 m& }

% ~$ W* N) o0 @                std::vector<Edge *> seedEdges;
' J( q. R9 e" m9 }: f5 x               
$ d) l6 ~1 B# }3 B                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
! X0 Z2 G* R( T! J( n                for (int i=0;i<selectob.size();i++)
! Z" ^% z" P2 A; Q4 Y. I                {9 `3 S6 L( h8 h. @8 e
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
- ?$ O7 E6 F/ ?+ ^3 Y  }  k# U- L& l+ ?( R* L0 F3 z! e

6 ?9 K& S9 ?4 I/ s. C  double dia = expression0->Value();            //获取表达式的值7 ]. ]/ o2 D* }0 A
                stringstream DIA;5 }$ J& c- Z* S# I! _4 J3 d
                DIA << dia;
3 V5 @' N1 w' X$ M9 ]( I% G
7 W$ r( o9 J; ?3 n) L, ~, e

* o  q  D# f9 C! G! W                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
( t$ C% b$ R% K. j                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
1 ]" P* X0 Y( z/ I: i! p' r6 `+ ?: D# v7 a! N* e0 D0 H" {

7 I! n1 o9 K3 Z+ \9 H3 s  R5 _                std::vector<SelectionIntentRule *> rules1(1);
: p: z- o% |0 U# W                rules1[0] = edgeMultipleSeedTangentRule1;
8 G( ^# B1 p9 _# M( s  Z% \/ n                scCollector1->ReplaceRules(rules1, false);
2 E2 U7 n# m) l
! Q. U% ?4 y& V$ d6 S
' n5 y, Q8 Q7 n$ E5 D, U
                edgeBlendBuilder1->SetTolerance(0.001);+ S! w. c4 A3 W# g% s0 `' t) r+ Q0 {# w
% P3 I+ K" |1 u+ _1 {# Z

. w" m( X7 {" I                edgeBlendBuilder1->SetAllInstancesOption(false);+ ?' V- X% z, f; m# u2 J# w
- d( T+ ~; {5 z, b* V

, S# ^3 r/ \: E, D& q. }* |9 P# E                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
& ^& r5 B1 V4 a3 _! F* {
+ ~6 K$ [" r' t! c
0 M* d* Q+ N0 K( f
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);3 z1 O4 }$ z- y6 A1 I- @0 U
) }% v6 d9 j0 l) x0 E' F$ l; A7 K
9 w: G4 v/ u) i' L6 t
                edgeBlendBuilder1->SetLimitFailingAreas(true);
" d, ?! j1 U4 z
' g) e, x& w( c  C: W: F, Q

6 `9 T  z( U" Y" j                edgeBlendBuilder1->SetConvexConcaveY(false);
; S" n. H. M' y
6 l7 S0 G9 x4 Q9 T& W) _. h9 d

9 g! a* a+ T7 R: T6 J                edgeBlendBuilder1->SetRollOverSmoothEdge(true);' j* S$ N: C4 k

" C; B. d7 m+ O6 I; @: v  Y
& d( M/ ^' `) W9 {& Z( \/ q
                edgeBlendBuilder1->SetRollOntoEdge(true);! L; k- @; }& h0 W

/ l( u3 T8 O5 C# m' K4 R2 v
. `0 X, b- s; _4 `0 Y/ q4 h
                edgeBlendBuilder1->SetMoveSharpEdge(true);
; E" l, Z' u5 G4 E. U5 `( M, i5 ?
9 r2 X5 E/ W7 B. u" D' P

) G! E2 l4 }6 E& e                edgeBlendBuilder1->SetTrimmingOption(false);
& a5 Z# ]+ k) a2 Z9 [9 s9 U
5 F4 E& V/ c9 w6 @
5 {* y0 \' c% ?2 a4 D& |
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
1 @/ F' Q$ K* H$ v/ O7 \
  _7 \2 b! S- k- i6 F( J; v
; B2 W8 b+ e1 [! G
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);; b" U3 M9 Y+ F; K; u& D

* k+ C9 t+ X4 X% k+ M' _  P
5 i: p9 M$ {6 I; L7 |
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);2 Y3 u  N# R( L

( V' N' R- V  }3 W. n7 K2 m

4 d; m8 u6 Q9 c+ {) _9 ]                int csIndex1;
6 z/ m- r# W1 d, B                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());7 G- H, _( W& q* N. ^
- m  ^1 o, S8 m4 W3 W

9 B; [. e, H9 [* e8 l% v4 l                Features::Feature *feature1;
' v9 h! M0 [* ~+ [. A( ]* t                feature1 = edgeBlendBuilder1->CommitFeature();
2 Y# S7 f" t5 N1 {4 t- v: l2 J4 E/ z' L4 ?# }1 ~0 Q4 @' }% t  N# m" a

3 t8 \/ D- ?) k                edgeBlendBuilder1->Destroy();$ P4 o8 K. n# R# c- I& H; C

/ ~0 B( R4 k4 a  T& d$ D0 w! R1 c. r    }
# }6 X% E6 {; B: _/ K2 G    catch(exception& ex)6 O6 A# r8 u% I8 f
    {( i, Y, W4 J- }3 D
        //---- Enter your exception handling code here -----  E1 O# ^6 Z4 ^' V! W% v: x
        errorCode = 1;
# n' h& ^" ~' ?        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());8 X' {; Z# R- J0 z& y: i
    }
5 }( Q0 ^  r; R% m0 o    return errorCode;
1 |  Q7 X8 b1 {- v+ B}

3 t1 N2 b: U7 W# F

5 l5 V0 j; Z6 w7 y2 d9 h说明:因为字数有限制,这里只贴出关键代码。
% \9 |! L8 x9 N. g$ d; ?5 m& f
9 L) a; k7 n: q
% Y! E4 o! H# \% E3 m9 q$ Q, J

8 y! `- h0 Z: v( p
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二次开发专题模块培训报名开始啦

    我知道了