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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

! r5 I3 i. s4 h8 x6 v) }2 Qvoid selectedge::initialize_cb()
: v) i5 m! C0 o% N( x, ]{
9 U, \6 y& x: ~9 L5 H$ e( P    try
( [0 c4 X3 h8 ]2 B$ i    {

1 i; `- V: H! t  t2 h        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
8 H! V5 A7 n. w        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));: W1 V( @, @# X6 ]2 x+ H
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
# W; x" j; ?) x    caTCh(exception& ex)
3 l: Y" W$ _0 K( U    {$ B' n  w, j7 C
        //---- Enter your exception handling code here -----
% ~; z# r2 ?! ?, v9 f; M! b        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());. E+ q  _+ H5 B' N( ]; Z
    }: Z- x! R; x0 K! B4 C) a# |; K
}3 T4 h; Q. m4 ~* k

5 j3 c- C( j$ }6 \; Wint selectedge::apply_cb(). `) Y8 C$ N4 d8 a  t- O
{; M! z  s' g) W. ]0 H
    int errorCode = 0;8 H5 A# q: H+ h( C* d' Q
    try
  h! I; X1 y9 s" Q    {
2 Q4 L% Q& Q3 p9 {3 Z4 O: J% \        //---- Enter your callback code here -----3 J8 Y+ ?1 ~1 j! O- P, q
5 a: ?( j9 Q3 i$ ]5 T

7 q) n& ^; w$ N0 N5 U; P

5 J3 b; Z& c) n. _. c( t4 `                Session *theSession = Session::GetSession();
: {9 E4 ]  \+ Z6 Y                Part *workPart(theSession->Parts()->Work());9 m$ {& K" c  {6 ]5 ]( c/ m
                Part *displayPart(theSession->Parts()->Display());
$ D) w6 `0 g1 G$ a6 n, m
# V& R1 [3 R7 L' j) k  A

$ j) ~( k7 k' X$ u, t                Features::Feature *nullFeatures_Feature(NULL);; Z7 t( t4 _: T, z3 F) H% y% E
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
5 o& @+ F6 }! d2 D+ Y8 C/ O- k                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
7 M2 v$ j8 V5 x/ p" ~; y9 S* J! ^& M' @) S) J7 x; b
* I9 ^# \9 @  v6 `8 x4 A
                ScCollector *scCollector1;
: S$ J6 H0 Z9 |) B- r; \                scCollector1 = workPart->ScCollectors()->CreateCollector();1 b8 b. S5 n5 C& o2 r% H
6 ~  P1 i3 n. t7 _
3 l" Y2 Y: l+ }* d  u  `
                std::vector<Edge *> seedEdges;4 k6 s- ]' b5 W5 E1 |9 t2 E
                ; C. m6 B& u. w
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
! \  S% H* x- L; j                for (int i=0;i<selectob.size();i++)
+ M' r( b, k; V! ~, _0 P                {% o9 p, f( `. v/ y/ N* Z
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
, a- ]( }& P# i5 ?+ T* `8 S  }2 |, H/ V7 o# U, y: r/ {/ T
: {- G2 S; t( t- W
  double dia = expression0->Value();            //获取表达式的值
( e! h8 \( `9 N6 D* Z% h6 p* {                stringstream DIA;+ O7 L2 {9 E/ c3 j4 y) }
                DIA << dia;. E  E7 c( s' x8 J& h& D3 v
, t/ g/ E5 _# U
- W6 z; K' n& R
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
+ ~" c7 d+ D2 N; n                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
* F% n3 U1 b7 L# C) |3 D* K: p' E2 }7 O

: d. V' {. K1 E' \* U  K                std::vector<SelectionIntentRule *> rules1(1);  N& |6 t- u. F2 w0 [  h, v' n& ?
                rules1[0] = edgeMultipleSeedTangentRule1;
6 Q5 a: ?. K" M' h                scCollector1->ReplaceRules(rules1, false);
  N2 s  G7 ~0 a7 z9 Z% v2 B- @6 ~& x3 J8 D
$ R& R' a  B3 V  ]1 r
                edgeBlendBuilder1->SetTolerance(0.001);- x5 K; Q5 ^7 y4 W

$ k% m$ o" N1 m2 Q

( ]. s$ _/ B- b- I                edgeBlendBuilder1->SetAllInstancesOption(false);' p- Z, }5 u+ t0 {9 X$ W" G8 \, H

, [% O) ]3 y9 d8 |4 y
& e- U" n) [3 T
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);0 g: ~6 _) C3 T8 E4 a

4 \& `/ d' I7 x# i" B, r

  G. \& O% T1 P) t4 i) p                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
- J$ S% B) n% _; F' k- i+ d+ ?( K7 C" \/ h
0 F1 h) Z) j# X( U$ _$ Q
                edgeBlendBuilder1->SetLimitFailingAreas(true);
- {* i& r% i& E" [9 G3 X  k: e& z
( @9 m, O; i+ b# O8 a8 l

+ j2 H% p7 u+ N( }$ d                edgeBlendBuilder1->SetConvexConcaveY(false);$ q: L0 R. V. \" S; w; j8 @

" f, ?3 E! g! ^' ^, k! W: N* z

' O& p9 N! \; X/ U+ x1 @3 t7 U                edgeBlendBuilder1->SetRollOverSmoothEdge(true);) T7 {; s& D1 i3 a* G) ]6 Z

, L8 @' D* _, ^% ?! ~3 a
; u( B+ F4 j! j2 _& _5 Y
                edgeBlendBuilder1->SetRollOntoEdge(true);
9 {+ [* N6 B) o0 n! ]" @0 j2 m) @& L8 f3 L+ F2 Z1 d

5 M/ A- F  V/ S+ h                edgeBlendBuilder1->SetMoveSharpEdge(true);
! Q0 P; G2 D+ ~( |$ J' Q, H! v4 f: v( O7 g1 Y+ U) L
9 |6 k& v8 O, x' y. K# U
                edgeBlendBuilder1->SetTrimmingOption(false);1 O  I5 m- d( w- B$ g. k; ^
2 A; a/ b2 `, \( p7 Y/ J

( F# N  f5 r9 C                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);2 y- y8 p/ V& B: N5 e
% b, b$ a' ?! I$ F" z! p% X+ s
( m5 g; ]9 r6 J* c( I
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);8 ]" X3 ^" z: R1 |! j3 n9 s
  `0 f, Y% \  ?% V% x' |# e4 u
8 v) p7 Z. f0 \' u& _+ B
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);* D- c! s2 e0 v: g8 B
+ \/ ], K+ F( D0 k7 d
# j& Q; I+ ?3 n( j7 x; Y+ q
                int csIndex1;
1 X  z/ h3 x6 B! _3 C4 \0 d8 u% ]4 x% j                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
6 x7 m9 D4 `$ d0 S+ g1 k% T7 _$ ]0 h  W
2 F9 o( G# B' C7 F
                Features::Feature *feature1;7 m$ N% |% d0 |; X$ l: l7 E7 q; X2 w
                feature1 = edgeBlendBuilder1->CommitFeature();
, S7 O% n  b7 p, ?) r7 K/ b2 t" @9 H- }$ X/ V1 L; {0 l1 U

( i5 H, l6 f/ C5 S+ K. q                edgeBlendBuilder1->Destroy();$ t! \- y  i& O5 A3 x9 ?

$ F$ q, R+ e; B6 Y9 K3 v" y0 h    }
6 g9 N/ l: V' F    catch(exception& ex)
( }  ^8 B/ [+ f    {% j2 u" @- b* p: y* C
        //---- Enter your exception handling code here -----. C+ r( J! i8 T! N
        errorCode = 1;
- F8 u5 ^& W6 x2 N2 ~        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());. O* x0 F  k: S: U( Z+ R) }8 ~' s: O% t
    }
' M7 m2 f; T- }' K    return errorCode;0 O7 a$ ~: s0 p. W; V
}

; T! B+ }7 e2 n! \
* F4 s. d; J! z$ Y! ~
说明:因为字数有限制,这里只贴出关键代码。" ^5 l. ]2 V/ d: X9 y1 r; b4 V/ a, u
% E( P8 x/ B* o7 n# `
2 f" ^) |# o' z' J6 j6 ^
% L' i3 J4 Y1 {3 k* 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二次开发专题模块培训报名开始啦

    我知道了