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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

! T1 D7 O4 T0 w2 hvoid selectedge::initialize_cb()# g5 b3 X; s' k
{* h% P1 N. a4 W
    try6 b; k- c  O# ^6 f3 u" c/ x3 N
    {

3 w# K7 `. S2 K0 S        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
: D0 {7 l/ I2 x        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
# _2 A8 |: f9 v! [        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}0 p8 l) O) g' i, ], N9 @' W# W
    caTCh(exception& ex)
9 Z1 A# ]  `8 t3 K5 E& C: O' j    {
: G+ y/ o$ n4 a" l9 v. \        //---- Enter your exception handling code here -----) w2 f0 P# `7 k9 s/ q7 Q/ l
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
) c5 Y0 a# V" U! U6 d5 R    }
' m3 U- _3 I8 Y& m7 T/ n}
* V8 R4 K/ f4 J9 U6 {) L' q6 v. U
int selectedge::apply_cb()
! ]: |0 d. K/ f* W{: j7 B  G) A) M6 P2 {0 B
    int errorCode = 0;4 R7 ]' n2 f0 B
    try* j1 Q, S9 y* W# X
    {
6 i- [4 s* ~( c8 B3 f  W        //---- Enter your callback code here -----' N3 ^* g7 c) M* [* [; ?
  ?; L3 f7 c7 U' p& I/ E

; m+ o3 u+ y% {: |$ C2 }) Z

3 G$ S( I. L; e7 t( B' W0 j+ ?                Session *theSession = Session::GetSession();" _& ?2 ]( [* c) w( C
                Part *workPart(theSession->Parts()->Work());0 ~! P4 e5 k! `+ s
                Part *displayPart(theSession->Parts()->Display());$ d( G) Y( k+ U: U# c

1 v" G1 z+ h* [, P/ V( r
) E$ I1 D  J2 P+ d$ ^
                Features::Feature *nullFeatures_Feature(NULL);
# n# C( C7 i" U- x$ W                Features::EdgeBlendBuilder *edgeBlendBuilder1;
% w' v. Z' B  ^6 k                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);: e$ P( @' L( j9 ?
: d* K: M) A7 ]5 B
& v1 O% i& P+ Y* F+ U7 T
                ScCollector *scCollector1;: D6 b5 b) d+ b
                scCollector1 = workPart->ScCollectors()->CreateCollector();
5 _! H! i, \, f1 i0 `+ ?6 e( c6 x5 x4 s6 B: o7 u

% V  j4 I. V9 R, \" Z$ f                std::vector<Edge *> seedEdges;- I  ?! Z5 ]6 p2 C3 T' n' j) b9 [: S
               
+ _; z! |0 N2 @( P5 F6 T( Q) p                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象0 G6 ^1 B2 ?1 ~+ l$ W$ y/ }: t& A
                for (int i=0;i<selectob.size();i++), f# p& ^. W1 {' \& f8 r
                {" c: n$ {$ z$ d9 W% l, V. p  T. v
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
! R) T7 w% d: J/ E  A! a8 @  }
% M( Z$ q/ w6 L/ R0 J4 R
& M3 V3 A. j* m% A, I( w  double dia = expression0->Value();            //获取表达式的值% ~- J+ |% t$ ?1 L0 n& s4 G( A
                stringstream DIA;
- i! Z* q. v# m  R! q& [7 _5 [" @1 l$ s5 ]                DIA << dia;8 I' k* ^4 ^6 n: t6 p  ?5 J$ ]

5 R) u' Z# ^, X9 L  D8 r8 \

; Z" p: e- W# `; K% H                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;6 f" c" a+ Z, e$ F2 U
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
+ @% ~3 o6 }' Q: N% D  l
+ }( b/ ^$ C/ Y* ~; N- _& f( i- `# G2 u

$ n" `  Q3 z9 L( Y0 J7 r) y! Q                std::vector<SelectionIntentRule *> rules1(1);
: J. l' e4 u; W) |* q: R                rules1[0] = edgeMultipleSeedTangentRule1;
8 o/ L% ~6 d5 \                scCollector1->ReplaceRules(rules1, false);
- ?! Z- r, h) v" S4 \6 S& s. |, w: C* h5 \

, f; a8 }# X' H5 [. R                edgeBlendBuilder1->SetTolerance(0.001);2 k5 l$ X# ?! J$ R
- Y, M0 x9 a; K. p

4 ]# u5 d0 t9 Y$ h1 O$ `9 Q                edgeBlendBuilder1->SetAllInstancesOption(false);2 v2 @% ^9 {2 U6 U3 c2 t
+ ~6 @4 L6 G* M4 f/ F! \' D# J
! v( E6 M* t# x. u
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);1 X% a* o% V2 }: |/ d
3 J& N5 F# h2 f

% n2 T; x9 P( D9 O9 w                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
% u) r; B: R1 J& A* n
" @4 J/ d- G! u! c8 e' v
/ F9 p% t) R3 [8 }) b- C7 K/ y
                edgeBlendBuilder1->SetLimitFailingAreas(true);; L0 w& i. V0 ]" W) G- Y" e1 x

: x" K0 B' ]4 y& j% W2 h
& Z: |1 }8 f* l
                edgeBlendBuilder1->SetConvexConcaveY(false);
$ s) Y; }5 o. T/ `. `( v9 ~0 Q
$ M9 o9 J% O" J" z) R
4 r! z; U/ U# V
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);# f6 Z* E5 k+ q! r7 v+ K
, [. Z2 X: m. @2 `5 t

. d) O) {0 U8 Z/ ^- h- Z- k. W                edgeBlendBuilder1->SetRollOntoEdge(true);  L# z/ E, j9 G* l9 ~, S6 k' k

: y1 ^1 ]5 @' D
& ?) S5 p6 m+ y! @/ u5 h4 V
                edgeBlendBuilder1->SetMoveSharpEdge(true);
# `4 s% ^( O2 B( V9 W5 ]4 n# i- A5 [  b; E
/ l) [: O3 I  k
                edgeBlendBuilder1->SetTrimmingOption(false);# M; f- a0 l8 N" v( ]5 N3 G- A
/ T2 t) F: y, @( |7 D
8 f+ F' v' q6 l
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
; s% a$ i1 ]; ?& k3 b1 j8 [* G
- c- o. s. ~! F6 j, ?( v% f3 q
* u' H  M0 o4 r& n( X7 @, b0 r
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
/ t) z/ e3 s" t$ n  i! @' H' Y) U" S
8 U; Z9 U- T- {9 ]2 h# T7 q3 R
1 g: |; |( l2 y( e/ ?
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);% d% n" _. X( e
7 S& a, B+ c" E; x' B

( [( N! u  j8 ?( l; Y                int csIndex1;( S$ ?( Q6 w" R0 E
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());2 }# d7 B( x8 v: j7 ^3 s! I0 i
3 P- y/ h' {" K# b7 P" m

" ]* K6 o$ m$ c/ @                Features::Feature *feature1;9 Y# I2 ?7 b+ G2 m* x; _! w( ^
                feature1 = edgeBlendBuilder1->CommitFeature();
7 E+ \8 `7 Z( o+ f' l' v' Y# F, [( }: B% l8 s/ ~4 C' X4 S
8 Y) V8 h; n" M/ F
                edgeBlendBuilder1->Destroy();
, ]; G" F( ]0 n* x, @9 T* B, R
* c# W8 f. l8 s  V5 i' I    }; {: P2 J4 L& V5 _5 q4 H  k9 {
    catch(exception& ex)
7 R0 F, u% p0 E7 g, f% s    {
( [2 |- b; c+ o% J' f) \        //---- Enter your exception handling code here -----
  n1 C+ t, d, X2 n0 `8 c        errorCode = 1;
% ^3 G4 A3 w2 o        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());7 {3 c$ U, J# E7 ~1 m+ V0 F
    }4 c  g- F& e/ H
    return errorCode;  n! I% W# n$ {$ U+ O
}
3 A  l# c; q' q% P7 g; x
4 y! u& ~  p% N$ I1 j
说明:因为字数有限制,这里只贴出关键代码。" ?1 Q* W1 a7 V
6 G$ A$ b; d, Q( y0 r/ y% c! A4 T1 l

, q& a6 W. s& A; S5 e1 M. a

( ]" H3 p2 W2 E7 H' 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二次开发专题模块培训报名开始啦

    我知道了