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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
7 Q8 s3 i2 F0 V2 R5 U- ?3 K5 D, j* v
void selectedge::initialize_cb()/ s& m' W, R# E$ Z2 F$ `
{2 f/ c6 c. ?2 J0 k% ?: }, _# F
    try
) C5 l9 G! t. o# \7 I' g    {
+ l( ^# S2 A; \2 y
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
/ Q$ ]* l& ]" r, j7 c2 U9 ?& y        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));  O6 i. R& _- ^3 h* y2 b
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}& D- q% T! r& S3 h" s0 e
    caTCh(exception& ex)% D/ K/ O6 R* i/ C
    {
4 z2 `! ^- i' v) P( E4 e' B        //---- Enter your exception handling code here -----
8 p  J0 @' W# ~/ l: m" U0 Z        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
, T. ~/ X! U( \    }
; V1 N8 ]3 n) L5 g2 p7 {}
+ [+ k, M# i" x2 a; x
: b; S. M2 n& w0 j) p2 |int selectedge::apply_cb()$ V: a" K1 T3 z0 v" k2 i% W
{* x( G9 w- A0 y2 ?( G3 |
    int errorCode = 0;8 B& b3 X! b5 z$ X. U1 s+ E7 k
    try
$ c  B) e9 H* b, a    {$ L0 M* {$ L- E- C, ]
        //---- Enter your callback code here -----6 q* ]/ K' L/ E$ c: S, Q/ p3 I+ X6 S! x
' D2 x: _6 R" `9 ~
/ `/ A& S- v" H% l2 _- n! H

2 S& Z, I% I( z8 l- A: W                Session *theSession = Session::GetSession();0 a6 z" K9 H$ V- N9 H
                Part *workPart(theSession->Parts()->Work());, F+ i7 a/ }. p
                Part *displayPart(theSession->Parts()->Display());0 l$ c5 ^% k; L) V9 B0 `

- M& ^  Q3 A3 u
" p- z& p: |) {
                Features::Feature *nullFeatures_Feature(NULL);
8 F- ^6 Y1 I6 X8 |- ^2 a                Features::EdgeBlendBuilder *edgeBlendBuilder1;; x! ]" ?9 s" e0 L
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
4 w( d0 H# t7 D/ W  I& u+ J' h# K6 e
+ O. a( v! w, V5 ?2 s& }

1 V, C3 `$ [( R3 I* w                ScCollector *scCollector1;
9 w1 g3 e: z6 c. n3 d" h                scCollector1 = workPart->ScCollectors()->CreateCollector();
6 K5 F) K2 L; ~9 ~7 c; D1 F/ S
/ n0 A3 s! v6 J+ {, i
# U1 w: m/ V' u  M% Z9 q
                std::vector<Edge *> seedEdges;
" ]6 D2 X6 J) |# E2 D               
7 H! c  ?- L5 m  [                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象6 Y0 M& L' v+ E7 c
                for (int i=0;i<selectob.size();i++)
+ h1 X: Z% u% }# |) F                {
' X/ h: u) [$ A; P, m# `) f0 _, c                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
9 O& w; k! M8 ?  }
8 i  ~7 p7 Q& ?1 n$ _2 a) \
: m1 O/ W) n! H0 J  T  double dia = expression0->Value();            //获取表达式的值
3 F( I8 k6 l6 w/ Z                stringstream DIA;8 t2 b( M8 o  w
                DIA << dia;
  _, C3 `# H4 a; s: t# p
; J9 @4 I4 W& C# D2 e. D

- l! ^" [; e( X3 n                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
5 {& @" T* i( I/ {* u2 @                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
% c1 R/ K2 U/ b' H  Q# Q7 b$ }5 }+ J. \. R5 v! Y" a/ u

  ~8 w7 `/ J9 [& P4 ~. ?3 ]# y; d                std::vector<SelectionIntentRule *> rules1(1);
- N3 P, G0 R+ I5 K5 m! Y                rules1[0] = edgeMultipleSeedTangentRule1;
' c7 a2 R+ Q: O3 z                scCollector1->ReplaceRules(rules1, false);
2 A- X5 n3 k: X8 O/ l6 x( U, q2 i, `
$ A/ K# o* ~* |- C/ Z) ~! W. K0 ~
                edgeBlendBuilder1->SetTolerance(0.001);
0 q3 x2 K7 r' @, _2 ]$ [" g. n# b8 K0 i6 F7 Q( c- H, n* W3 H- r6 }, ]
# l/ s8 m  k* l, t/ R1 k9 x
                edgeBlendBuilder1->SetAllInstancesOption(false);
6 d% Y' m* M; g' z
. Z3 _6 d: o3 B1 q6 h# O
, u3 }0 N# r9 \) ~8 X: H/ `
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
# U" C# l- S. @( u) e% Q5 T
. F; ]% f5 X. T0 K9 L+ c7 Q

4 m; A2 F4 A/ S4 T8 [: R0 m1 H1 a                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);  C8 x1 ~% ]! }9 ]9 C+ b( L

1 r5 e  X6 J2 J4 y4 W+ g* g) E
. N/ T; E+ {2 T- ~! x; O: ~
                edgeBlendBuilder1->SetLimitFailingAreas(true);
+ c4 O- B' X# ^9 a9 k
# B- D: x/ X4 q" W2 H

3 G  F% o5 G, U$ u7 u                edgeBlendBuilder1->SetConvexConcaveY(false);7 ~, w6 t( t* {* w( Y: M

" E$ H. L! C- `/ M

+ F5 c) R, T: P$ Z; |+ a                edgeBlendBuilder1->SetRollOverSmoothEdge(true);: j6 o5 j; C7 l- I

8 C/ m1 B4 c* ~0 d* ?

2 {/ B5 @0 b% }" f                edgeBlendBuilder1->SetRollOntoEdge(true);
& a  F" S- y2 Z' ?9 O- @) i  T1 ?9 d: o0 A; R2 Z

& b  a, P$ h) [0 b                edgeBlendBuilder1->SetMoveSharpEdge(true);' o- R% ~6 H& Y$ G! S

2 |; B# p+ F3 s9 v! v7 q" M
  F3 f; f9 n4 M- k; z
                edgeBlendBuilder1->SetTrimmingOption(false);
  h9 U/ f$ o2 y" q4 ?% K. d9 Q# P0 P

8 O" U4 M! z% p0 z                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);, s5 u1 E) J% F9 j
# O5 j4 ^4 r" V

1 t4 [3 O: Q: s% C" Q                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
: |0 `* E& A& x
! [' R7 r$ v- H. o% L1 ?. W) O( F
3 j/ \# l' V# P" T, P  q3 p
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
" ^% a+ T5 A5 P6 Z, [( C
4 [8 d  W( N7 [4 M( X
' m6 x' Y) D4 v  @7 v
                int csIndex1;. p9 ]7 |" A) ~9 I% U$ e, p( \
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
& d0 F$ C- y6 E6 _. W& F" }
0 V! m) F* E0 K
; \( E  a# z7 Q" Y- H
                Features::Feature *feature1;7 y' r' |5 E4 M" y- q  u0 A6 B
                feature1 = edgeBlendBuilder1->CommitFeature();
/ ~5 E  C0 s3 n6 X7 |9 p1 w# F$ c
; \7 s' ~" y4 e1 @$ T8 b: ^

: z  C% J  K& e& z                edgeBlendBuilder1->Destroy();* d/ j* Y0 G! g4 s
4 E' [" {; S2 a& P6 t' e  [1 n
    }: L( o7 n, a: a! ^0 s4 ]# o7 o5 y
    catch(exception& ex)4 j5 v" Q, C# b! l" s
    {5 ?7 j6 Q7 ~6 J1 \; ?1 ]3 \, x
        //---- Enter your exception handling code here -----
( e, E# @: A# e' {        errorCode = 1;9 v. u4 H6 s6 n/ b( @% p% {  x
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
2 H2 e1 N2 @( r8 N4 p; F! Z5 f    }
" J- L* o1 ~! F& ^* t1 u    return errorCode;
4 r- t6 e! x- v) r}
9 C3 x) k/ v) B1 a' ~

% U, `5 e; \2 {, q: P5 w说明:因为字数有限制,这里只贴出关键代码。3 J) J% e  w8 F0 H% T- x; \
5 P) E, M9 B% Q
9 G' p& I$ O' w
* z- g5 q6 h4 z  x" ~
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二次开发专题模块培训报名开始啦

    我知道了