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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

" G, {& s. m6 Y0 }$ q8 t9 Ovoid selectedge::initialize_cb()% ^, V$ j, E) L# H1 n7 U
{! m" `( I9 F! u3 P
    try
# F! C( S+ _# U9 \8 }    {
% ~8 e; Q6 ~1 e3 Q4 r1 i* h
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
2 K- E. g6 w% v& U, \5 z        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));. Z0 O/ O' B1 _7 x# |9 X8 J# v2 G. t
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}9 y7 t1 D# o, P% w1 W
    caTCh(exception& ex)+ i* X3 L$ m7 h2 X  Q) F% b+ O0 F
    {; f" E; }5 M! }, d5 `
        //---- Enter your exception handling code here -----7 g4 O* Z$ U; z% K1 e& L
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());6 j+ `6 [$ M& n, q5 I
    }( D3 R4 B8 i6 x5 V  y5 Y
}
# X2 h' [4 \9 z6 [
! h' i3 b2 x: E1 x9 Rint selectedge::apply_cb()- _  ]' l9 ]$ Q0 A1 D9 ?( f
{/ }% w. \& K0 ~& C
    int errorCode = 0;6 c) C' {+ K+ g+ y- w0 \& X
    try
* T/ Q. W( J6 h$ C$ n    {
4 c/ |8 s3 R( @/ y1 `4 f. Q" u        //---- Enter your callback code here -----5 U2 J. o0 \* E/ d4 o

, M3 D; C4 [: [4 D
+ r. Y9 @. J6 F& `. }# `
' g0 A2 g0 _# X  p4 Y
                Session *theSession = Session::GetSession();5 p$ w2 f% S) V* [5 h) ~% V
                Part *workPart(theSession->Parts()->Work());2 s1 e; B! C0 g: e/ a' T) M
                Part *displayPart(theSession->Parts()->Display());
2 H5 i: y% w$ l" t% n9 M9 C% p
+ r* Y+ E& o/ C% u# ~, u; H+ q

; s1 Q: p/ I. E9 P* Z                Features::Feature *nullFeatures_Feature(NULL);
- K. s2 p: r8 b* |1 }- V                Features::EdgeBlendBuilder *edgeBlendBuilder1;- n* ]3 b( b: c7 }& L
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);; M' ^: K" u# d/ b# f. ^; D

1 M+ L$ `% ~4 \) F

" a. p# Q7 S) V! U, G. O- H% o                ScCollector *scCollector1;
8 K. ~4 ?' v8 Q4 G& e$ M% W2 h5 b0 O                scCollector1 = workPart->ScCollectors()->CreateCollector();+ l3 E3 d0 U( r2 y

& v+ O! h$ H. {

* S1 Q5 {4 x5 [: j& I                std::vector<Edge *> seedEdges;
% M2 w& ~3 b/ D( e               
5 ~* h2 `, l" R                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象1 q6 `* Y) I* _, V
                for (int i=0;i<selectob.size();i++)& L" k* A3 q7 {5 L
                {7 C0 @( B- ]: `  H
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
& m/ ?+ ?  _  Z  }
. S5 V2 s  p+ _3 E. J" L
$ c% l' j$ V& }$ ]" [  double dia = expression0->Value();            //获取表达式的值- n. q: U& {) V1 V$ F! C+ M3 F& `
                stringstream DIA;& L% W9 Y  S# q# q: D0 M' s
                DIA << dia;1 P( a, Q. R+ u

1 A" }4 P. A$ |7 F, f! k4 U: R1 q

7 `) j/ X. w# p0 o                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;) \7 @! ]/ ]! D8 w8 @
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);% U) H1 r+ M0 g3 g
& A3 G  L* q. Y
+ u; \6 L; y8 a% D' k
                std::vector<SelectionIntentRule *> rules1(1);
* L; i6 ~9 ]* R4 E3 D                rules1[0] = edgeMultipleSeedTangentRule1;: ~' n0 u% U4 N
                scCollector1->ReplaceRules(rules1, false);
0 h* D% B  s" O6 R. E) |- g: |/ @0 Z: S

$ L0 F- j5 v' `  J9 l& W                edgeBlendBuilder1->SetTolerance(0.001);
) W% M# o6 W  z4 h: p2 H  L: L$ T. ]

4 D1 d8 y8 i, G% Y, @                edgeBlendBuilder1->SetAllInstancesOption(false);
/ M0 m+ ^3 F) d+ Z3 ?7 Y# m: W+ ^
4 X% i& g1 }1 S! @2 z

% D9 U* n1 `7 f1 _. G8 Q' D* O                edgeBlendBuilder1->SetRemoveSelfIntersection(true);4 v' L8 ]3 g% H2 v3 \( _, W* r0 |

$ ]- L! a/ x2 ]7 L1 t) ^

0 C! ~6 K! j9 v* e6 H# m                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);$ w$ G: Z7 z2 b5 }

0 [* z4 Z; S. t( N2 f
% i* J* V9 p6 Q0 F; L  E% }
                edgeBlendBuilder1->SetLimitFailingAreas(true);/ w8 I& l( u" F0 v$ d

2 L  X6 l' _, G) z) A- o* X

9 Y, {- o3 R$ a* N1 B6 U; ?, s                edgeBlendBuilder1->SetConvexConcaveY(false);
9 ^$ |5 D" T' |! ]1 Z4 U9 |# M6 u! b9 S) a
$ I! E6 n- l) |5 s, q
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);$ K/ Q/ i4 ~4 I' q& x2 u* {0 p

6 f' y( |/ b# \% ]& w% }
  k' @& k7 ]7 o% `9 q% s
                edgeBlendBuilder1->SetRollOntoEdge(true);
; w' `( Q0 a9 n8 u
) A& Y9 C' g% D' Y" A

$ B) |3 K" T( I% o* S5 d  E                edgeBlendBuilder1->SetMoveSharpEdge(true);
5 ]1 _7 @: ]3 B2 Q& R6 {( ~$ E0 @5 B" r  Q
2 g+ y4 n9 D9 U2 I0 |, H+ s0 j6 @
                edgeBlendBuilder1->SetTrimmingOption(false);1 F$ P7 C+ a. H, h4 U# J% I

- w2 x5 a8 d6 N- b5 k7 g
* h+ E2 R1 Z0 N+ o* e& r- Q
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
* G' y( x5 K$ b4 }" s2 [, S
: R  N- J, `4 O7 e3 n$ p5 }
' G8 k# C# O8 ]7 s
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);1 ^) Y1 G- r/ L1 A
( X( G- _. }4 G5 V
! z' G* a& T) B! ^; w% U2 z
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
& }4 j' W+ i. I5 |0 e% m3 Z$ C0 L4 g  w* ?/ {4 [

- ^5 Y: `- x0 q6 E: q' J4 S                int csIndex1;
7 d( x$ x; u+ e2 J4 `. z                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());9 s3 q; e7 ]: [; P2 r! X

/ M& P8 n# |3 z0 A+ g) Y8 [# N9 I$ o

* ]2 p* n9 _; w+ }                Features::Feature *feature1;% w) d# `. U0 j) a: s/ X
                feature1 = edgeBlendBuilder1->CommitFeature();; [# Y+ |- y6 ?
& _7 y: q3 Z/ M
7 x4 s& E% R% W
                edgeBlendBuilder1->Destroy();0 c$ @$ x0 ^, {7 k
0 H7 G3 }. a+ Y2 i# z. c
    }1 Q6 r% x9 G# o5 d" s% y
    catch(exception& ex)
% p/ j) R+ G7 \" I2 t, [# j( b    {5 j/ Y  T8 V6 G
        //---- Enter your exception handling code here -----* i: _. ~, F! Q& ~& `) k
        errorCode = 1;! X3 s9 \: a8 i$ C4 |
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
2 U; ^6 V  W5 [% R1 a+ [' U* h. m. q    }# M: t, ^7 Z% ^- |1 ]& E; P9 _. @
    return errorCode;
7 M0 ]! d7 B. L. r' q7 @5 i$ m}
  g! L% L) S1 P  d4 D# V  g

/ U2 Q* I4 v% f: J$ v说明:因为字数有限制,这里只贴出关键代码。
* Q+ B" `# @+ D$ w/ ^; ^% G0 x) w) {& B. U" m5 Y

/ T+ w7 f. J3 z0 p
3 Y& ^; h2 G) g! u) A) C
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二次开发专题模块培训报名开始啦

    我知道了