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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
  n( n7 r" Q& X4 Y5 R6 d
void selectedge::initialize_cb()5 K& _- L, L% ?- o  o5 l$ y9 A
{
! C! p8 [( R% G* p' e8 p    try7 Z/ S6 n, Q& B( L9 i7 D
    {

2 p- Z. I& w) S+ I0 A" O, C8 `        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));+ P) g, ]1 M# B: x) s; b) r
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
/ J/ l* B6 v3 [# y        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}9 G; ?( Y4 @1 s% V5 R
    caTCh(exception& ex)
2 z2 G6 {1 [0 Z4 d* l- b: g5 j+ v    {
1 ?4 z& d6 Y/ }; h$ E7 q        //---- Enter your exception handling code here -----6 e4 T+ D" x% r6 c
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
6 W+ e. t4 P3 j+ z' |    }
* x- p  }5 B& U% r1 m}
$ s) E) s& h+ b
- U' [- H- Q$ ^3 j* [int selectedge::apply_cb()( W8 ^1 ^0 K1 y/ `. }
{
$ z) X( T6 m$ V4 a$ `6 `9 c+ Y    int errorCode = 0;8 c, U, @; N3 W( ^2 K2 D: ~
    try0 u# i6 _" P& H* C2 \$ @# S: f
    {- p! \: x% {6 V% [- h7 c5 e5 D
        //---- Enter your callback code here -----
9 d% }8 j( W" Q, \# t4 D" R6 V! M3 E% `
$ ]  E: M+ X1 K# D3 D% ?' |2 ~

% Z0 a# f# X3 K+ e, l6 Q                Session *theSession = Session::GetSession();2 l' ]2 A( |. A: o  v: J% N
                Part *workPart(theSession->Parts()->Work());% I3 m* t2 X8 W4 I5 d
                Part *displayPart(theSession->Parts()->Display());, b0 r, O) b) a; t6 ?* |9 ?1 n

9 H4 n/ h( s: b* _4 s* |. x; U8 x

% q* P( J( M5 D6 [& S, g7 c                Features::Feature *nullFeatures_Feature(NULL);
& r* @# q$ V0 j' `                Features::EdgeBlendBuilder *edgeBlendBuilder1;# f5 {  s  q% f) k8 P
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
9 l8 A$ c5 D- R4 [' Z
* }( K# q; R  c; E1 V2 |# }

2 s* t& h# v, F9 {                ScCollector *scCollector1;% O- U. m$ l9 u
                scCollector1 = workPart->ScCollectors()->CreateCollector();4 m- u- a' W5 x' X4 W( M

. F6 K+ h% F( x! X( s; ?8 T

0 \+ X3 r, x& m, D                std::vector<Edge *> seedEdges;$ h8 Q5 K: _/ [) L; j  N% K2 M- j
               
; \1 V2 j" @2 S+ B2 G8 D2 D                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象* l* M3 Q/ n' G  F
                for (int i=0;i<selectob.size();i++)6 U1 F' B+ ]& ]( F* B3 Y
                {( Z, {5 w$ X9 c' g+ r8 R! S; |3 t
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
# R3 E4 v4 g8 ?0 C  }- a; u# w- a& x: {3 m0 q
5 t# m! t+ X6 D4 W, `! P$ K
  double dia = expression0->Value();            //获取表达式的值
) F& |% ]  ?- e                stringstream DIA;+ X* v6 O7 C+ C9 ]+ a
                DIA << dia;
( W5 l' m& J, z/ ?0 @
7 e) T: l5 ?2 C( L

  M4 d5 q' S0 x% V                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
6 f- Q6 F( @/ ]; {( v( n6 X                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
9 }2 i- M( `8 l! D# _  k
9 \9 a) g* H! i

# q* g. q" t5 p1 J% g                std::vector<SelectionIntentRule *> rules1(1);' O& [- ?: r. {) S* R1 \
                rules1[0] = edgeMultipleSeedTangentRule1;! G* h  S4 Q0 T  y( @+ C
                scCollector1->ReplaceRules(rules1, false);
) K5 Q0 C+ v3 l: m9 P9 K
2 B4 N6 _+ o; x  f2 m
/ ~8 d3 C5 c+ N  _7 E& n. `
                edgeBlendBuilder1->SetTolerance(0.001);
: Z; N5 l! A4 J- N. F1 s
( X& j1 v& @# M  G

4 p! P8 x0 o( S                edgeBlendBuilder1->SetAllInstancesOption(false);
- E8 J5 J6 U5 o5 G* Q% M
4 ?$ Q, [+ t: `: Z( i
( D% P* l9 Y' o9 x! s
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
) s( i& g. L* Y) }1 Q9 t& C
+ ~6 C; ~0 C) L  ~0 n/ A

$ E6 L5 O% Y7 F                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);" e" Q  n% I* D# W* z

  Q% }- `+ ]  K9 _, a4 q

: K4 s; ^1 I) ]1 r' F# ?                edgeBlendBuilder1->SetLimitFailingAreas(true);* j$ I' O5 U: z% a
; W' Y, R( o  }4 O0 c8 a
6 V$ I, P( o- [& M" o4 j/ m
                edgeBlendBuilder1->SetConvexConcaveY(false);7 w- ~9 S$ x/ J# d1 ~8 e$ m7 j3 q+ z

" L* H0 q, E* F1 A, o% s! @
( L' ]# b# O/ o+ u) c
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
% u; ~* J! f" V  F3 Q
, e4 C: }+ F# q" `+ N+ K

. O" d& j* b3 u                edgeBlendBuilder1->SetRollOntoEdge(true);1 Q* y2 v* N' q
1 P$ R5 T5 B. H& Z4 ^; t
0 i9 ]' H% I9 d
                edgeBlendBuilder1->SetMoveSharpEdge(true);+ n- b4 b6 M: ]% ^

0 h5 R3 p7 A( E) t6 Z' ^

/ ~2 i4 }1 ^" Z                edgeBlendBuilder1->SetTrimmingOption(false);4 ~+ y* `) P( m

: j  B. d8 ?3 u2 h) U& l6 }: t2 w2 L
0 ?! w  O: E$ ~7 e
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);: v, S  f5 ~8 n5 S& O/ q. b9 M- N
6 N( @2 s% e' \% |

* {4 \1 q  B9 R3 s9 w                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);: `, G, _. ?' ?$ l- k
# t, m* C4 _% m4 f/ m6 S2 G# u- \
$ q8 R. F  S- X" b: v9 r0 Y
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
+ G: k' N3 C& J% c, w, Y
1 C: H2 v0 y( q2 e, a  U
5 ]- b* P8 A) t6 h7 b
                int csIndex1;7 ^. y- l& v' W  E
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());3 P5 E2 I' ?. K" r9 D( K4 s/ }

) H" Z' E6 ]/ K' v( [0 I

% I* `: p; G# L& V1 @% r                Features::Feature *feature1;
4 R% Z4 Y  R' t. R! |                feature1 = edgeBlendBuilder1->CommitFeature();
! \$ M+ {; @9 Y# Y& @/ v$ Y8 d3 r: {, ]- P- l: F
& J. q0 T! m- h- L& \% X4 u- i( h
                edgeBlendBuilder1->Destroy();% b/ M; `0 j* O1 j( A5 u" O% @# V" x
2 x, s( |0 W3 V6 ?
    }
0 r2 t' Y6 t7 g5 J4 O0 A* I! }5 A    catch(exception& ex). k7 t" y9 \2 R, u# h; u8 s
    {
( }9 _! U* p4 i# S' i' D        //---- Enter your exception handling code here -----
# q; m1 X( X$ u        errorCode = 1;) P/ O1 M$ p# z5 Q3 ~0 w
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
1 P4 w& q8 t% a* N( v  ~    }: h: r  D# s' ^# Z
    return errorCode;
9 y# q; i: j- W' X7 b4 ?5 `}
' {( y9 x. e5 F0 @* \/ g9 G( y" c
/ s$ E! H$ W+ J  `; }
说明:因为字数有限制,这里只贴出关键代码。* Q7 i- c7 I% y0 ^

2 d+ T$ g: m7 n/ Q* E) M6 e( N; G& `
+ h8 o0 a. j. X" F+ c, s
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二次开发专题模块培训报名开始啦

    我知道了