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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
( l" c0 W0 e4 v- g$ Y
void selectedge::initialize_cb()
; f$ i+ P; [: J3 X/ J. u, h{0 q+ r  _6 Z. u7 b
    try0 `: K2 s! m" N7 N& H6 D& @
    {

" A; [8 s" T% x        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));4 O( Z- r; l4 B" Y$ w. t8 c
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
5 M$ V' s3 s# z! h1 B        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}8 x" U" r7 A3 n
    caTCh(exception& ex)
) y) h5 r) {$ C1 K1 E! b# \    {5 s; `* c4 d, p5 ?" w4 D; m
        //---- Enter your exception handling code here -----
$ i$ i5 \1 r8 @+ e) E        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());& t7 m0 H' E/ P) ^. I; f6 ?; `
    }
5 h7 V3 c0 o$ J- I: b7 B}
8 z5 S  M; a) c- M
6 x. h8 }8 g0 X) ~  r6 |int selectedge::apply_cb()
+ e+ _$ S) X; e  z) G{
2 {& i2 G! R. H) L# D% f$ t" @( E    int errorCode = 0;
+ M$ V; A% \+ K( Y8 K    try
2 Z% Y6 k# H: e9 S) F    {4 ?5 M2 }) D( j+ p4 Z
        //---- Enter your callback code here -----
' ]2 q) }( p8 Z& O6 O$ y
2 M4 P1 j6 n5 t4 |; t) t5 g, `: D0 f# R2 |% t7 F& A9 R
: o- x7 y$ m# h; a" F2 A5 n7 F; D
                Session *theSession = Session::GetSession();9 }2 x6 k2 P# V' a0 v; c
                Part *workPart(theSession->Parts()->Work());
" ^- H! _! }, `* \- _! _- D                Part *displayPart(theSession->Parts()->Display());
% I$ e' n* X: d0 v6 T6 ^' Q7 t+ n! V& C2 Z
) R. [* w8 l6 t
                Features::Feature *nullFeatures_Feature(NULL);" j4 ~# g4 C( l( N- b5 Y
                Features::EdgeBlendBuilder *edgeBlendBuilder1;. [8 _' m; D' c, B4 F) ^* }
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);# b% |8 F; w- ]% B
! C& l. n+ V7 f

0 z! A8 L7 d* x4 `, Z( r& C: q                ScCollector *scCollector1;7 M* Y( n  [" I2 Y+ q, n- P
                scCollector1 = workPart->ScCollectors()->CreateCollector();/ E1 D% O# O* }1 P- |3 H8 I

( U. I# U; S9 ~4 [4 W

3 O7 y  o. \' `! z  V                std::vector<Edge *> seedEdges;; a4 Y/ M: n3 Y8 \
                / n" t9 O; s: S; Y0 o4 J5 h
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
4 o7 ^3 [/ @) Y                for (int i=0;i<selectob.size();i++)
( p- E. }7 p5 t                {
* \  p' f0 u1 b$ J                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
* }7 s" g& E( w0 k, @3 T) d; {  }, y" ~, H; _" @& E$ Q4 `

& N( g4 l/ Y' w9 @  double dia = expression0->Value();            //获取表达式的值
* c% Q$ ~, c, U                stringstream DIA;  z; W8 w. b# f
                DIA << dia;7 p" a4 `3 W" X) S* {! g
. x; a1 t5 I' {2 Y& Y3 X

4 `- S) t3 |+ }/ {! g" G                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;; s, b- i( p4 x$ @0 v+ o1 [
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
8 D3 _8 \  A' T9 y# Y4 ?  _" _- g3 \* D3 [3 ^4 r
* H9 d. Q& s0 N' ]( K' D
                std::vector<SelectionIntentRule *> rules1(1);
9 v9 T0 B' G9 Z/ h' j1 p) ]                rules1[0] = edgeMultipleSeedTangentRule1;
* {/ x7 X/ y2 x5 s7 v                scCollector1->ReplaceRules(rules1, false);; t% W4 @. b/ r1 N9 s: V# ~8 o

" Q/ G0 l, D7 }- l3 e
4 e% q- i2 F1 P2 p0 v8 z. q
                edgeBlendBuilder1->SetTolerance(0.001);
/ A; `; T! r' A% F& {  ]# u( R3 A- ?7 K) p4 }

7 X+ I7 M3 E8 d2 X! q7 e                edgeBlendBuilder1->SetAllInstancesOption(false);/ ~& Z8 X; r3 K+ s

' ^3 q! \) X0 a, [

! w; ]: U( L' H, a                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
9 I" p2 N3 [! I. X! O, {1 j! Z+ S, p" S. i

- c9 q5 x# y. k) B5 E" m                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);) ]: h9 [# y5 d) q* n# ~- l" O

; Z; u& k+ \: ]3 }# v- ?

8 L! a* o* W6 I4 N( p# y" a3 U( S                edgeBlendBuilder1->SetLimitFailingAreas(true);% U2 |& q' }$ _& H$ q! v
+ k; `0 S0 Q( _2 n) z

2 B( g( V; _7 J4 M6 y; x1 X0 B( O                edgeBlendBuilder1->SetConvexConcaveY(false);- [: ?& m; L% E. D8 ]. o

) S1 m& f! a8 t, S
9 i5 x3 j+ F. y
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
- T! m: @0 [9 n/ O# b/ s) d
/ g& U. I% S; I6 [) ]7 z9 O1 v
# k: y0 L2 I8 Z  o4 s, C1 V
                edgeBlendBuilder1->SetRollOntoEdge(true);
8 R6 W" l+ A) R4 N4 j  X8 p. j2 S9 e
  I$ E3 e- U' ~
                edgeBlendBuilder1->SetMoveSharpEdge(true);
& r0 \) e4 P2 C
4 q/ f$ n; t! i/ D* ^4 [
: F& W- C! f, _1 r# W0 f
                edgeBlendBuilder1->SetTrimmingOption(false);
# h" ]! X5 @2 `# o- F, ^! }9 c; a9 B

' |2 o. K' }; `( D# |8 W* o, _                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);! S% q9 m/ i8 {. B% D. k* G4 _/ L
  j( Y. o; ?- K& q3 Q( o/ W3 V& d
! ^8 _& z8 I+ q$ K" t
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);2 U7 x: q  T- w% g. m

4 c9 P7 t: Z5 m4 p5 K7 h% |( d; U' @, `

5 N4 {: T0 Y8 ^                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);( z) B8 l7 L6 P+ o

! _# h) q' E9 r  J4 \" N8 F9 s
7 G8 Z- F1 y& X
                int csIndex1;
  p6 k# z. s6 F( y% _* x                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());3 o, l$ e: z! I+ W5 X
3 I# X4 H( `/ T; L. m

9 h5 A) z0 c, f9 T0 u  l/ Z, O                Features::Feature *feature1;+ ~' e" X1 O8 `- P! e4 M
                feature1 = edgeBlendBuilder1->CommitFeature();
/ N" H6 ^! m3 u. x
& x8 ]3 x: v& F
8 F% ?* ^6 ^$ D( o5 \* ^
                edgeBlendBuilder1->Destroy();
; b  ~9 b* M1 {6 L" {3 s1 {) U) B8 A- x4 C0 O
    }
4 m$ t& k0 q, P! {/ [$ @2 A    catch(exception& ex)
* f. b0 O( z% `    {
0 r3 M$ p5 q: h4 N$ Y5 \4 T        //---- Enter your exception handling code here -----
6 o2 Y/ I& ~% W% E        errorCode = 1;+ y" l" g' C7 U1 c; F
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());: r" L; g" P# m6 T
    }+ H; v( P$ T  m  C0 V
    return errorCode;; Z& _+ ~& u* B8 `* [. I
}

8 g/ [' @9 T5 k# M6 ]

- _( o0 \/ L; W0 @8 \# A说明:因为字数有限制,这里只贴出关键代码。/ t5 y* D6 S; Z; @( \

8 l8 I( @/ w4 T( l" M  q( a$ {+ {' _/ K) }4 u

. C2 O! H9 r0 h1 n* W+ D0 g+ B- H( d
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二次开发专题模块培训报名开始啦

    我知道了