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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

6 h! i2 s8 u3 J% ~6 r. uvoid selectedge::initialize_cb(). I# P/ x( c+ y2 G
{) i0 M% a. ~9 F# f
    try
5 z* {. m2 y2 y5 S    {
! Z8 ]/ B5 b8 T- `' P, H) n
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));+ W/ ~" k, `+ f: `+ q) l
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
1 x" l+ b8 k, w        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}2 m# Z9 f" a2 q* u# n
    caTCh(exception& ex)
/ O: G4 H8 h' A" u% B    {
! j6 ?0 I% G, l        //---- Enter your exception handling code here -----6 N0 f; x( p' R$ u+ x
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
3 H$ }9 x! _7 U5 r    }7 f5 k4 o* @, N% [
}% x: ]( P* O7 x- Y; i
- E; S5 C: ]  v3 R/ J! Y! r
int selectedge::apply_cb()
: G0 J) b1 `6 v* F0 E9 p) P) {' M& _{# \6 I' x9 n/ W. p0 l3 k& C+ v
    int errorCode = 0;, ~9 _& r) |# x% Z
    try
; V- z& g) d/ Z7 N/ \6 ?, }    {3 ~7 n. J& g/ J# H2 u9 m3 b$ s
        //---- Enter your callback code here -----
6 m6 Z7 b3 `. {% n* I, I: D
3 U/ d8 I& h2 g+ e) i- g8 W7 x4 M, U
# W7 W1 o* r5 W  X9 S9 ^6 G% ?

4 |1 V( u5 Z! n; f( q  m) y1 _6 |7 n0 a                Session *theSession = Session::GetSession();3 A( {# S% `- u+ r" Y
                Part *workPart(theSession->Parts()->Work());; y4 I+ P1 z% Z2 v. S3 ^- J
                Part *displayPart(theSession->Parts()->Display());/ R# k6 p" l* [4 A

' d( ]$ x7 ]- {# n- t! B# w6 h! Y3 V

& y+ K1 L5 n; U                Features::Feature *nullFeatures_Feature(NULL);
3 H1 ?) L1 t$ G. [                Features::EdgeBlendBuilder *edgeBlendBuilder1;
1 _+ r3 N! ~+ p# Z- ]% R                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
" V: @* X1 w* E3 K! S! R9 J, ?- B2 b5 @4 w+ g+ k0 s6 N6 D

: n3 J% k. w) @1 v( e                ScCollector *scCollector1;2 U$ ]4 o6 g3 }4 ?: G4 j# N: N5 [& @
                scCollector1 = workPart->ScCollectors()->CreateCollector();" ~  p7 }! d5 H; ^1 y4 U. r+ I; S

/ R& d. I% o( H  _

( z% {4 T' Q! n6 z6 u5 f                std::vector<Edge *> seedEdges;
! s: a5 O( y/ i" |# I7 L# _                " m: L  V8 e& A5 Y5 }% j
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
' S, {+ {8 Q- e: L. G1 h. q                for (int i=0;i<selectob.size();i++)
4 J+ u: j: Z0 g                {! H# y1 Q4 v& Y2 }
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
: S5 a8 c9 s, \. N8 r) L: U- _  }0 C8 g5 l8 o# e1 K1 B6 t

. k  ]+ Q% @+ c6 [/ O# O4 J) ]  double dia = expression0->Value();            //获取表达式的值; ^! j4 ~6 I( i4 |
                stringstream DIA;
% R" m  }2 e/ I# s+ R' O, d: P                DIA << dia;" C" |9 N, ]& }: m

0 ?0 e7 @% G& \. \; T/ I+ i0 Y3 n
& h0 [7 P0 p) B- b  J& ?3 z
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
7 g6 ?# m1 d. ^" t                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);) ~( v  p, J- a2 ]7 P. p
5 l3 O, A+ g, y7 _

, V' s$ R9 D  m; L% W1 E                std::vector<SelectionIntentRule *> rules1(1);& ?8 R+ L2 O& W6 p4 Z& ?
                rules1[0] = edgeMultipleSeedTangentRule1;. Q* N2 q. u8 F$ M( c7 o8 J6 [
                scCollector1->ReplaceRules(rules1, false);
' c% t9 I' }/ z9 o+ O/ j2 |" r; J" J8 F0 V/ Q3 H8 f! ]5 L
- T5 v5 k0 \& |
                edgeBlendBuilder1->SetTolerance(0.001);6 \6 I- C' G" K( i2 R

9 A5 B8 P3 P6 s
8 e" O7 |" k9 b0 R! |3 T* S0 d
                edgeBlendBuilder1->SetAllInstancesOption(false);
2 V: [7 S8 k) b! V$ h6 q# q7 c- d, N$ i% J3 C1 A. v
4 O* ^0 k( B9 ]- d
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
3 O  m2 ?5 \* V0 k% G5 ~: ~) j, S3 X4 {4 N

3 k* g+ Q6 J' O! F                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);/ C! _& t1 V: P. ~. H2 T! \
2 U4 q# ?6 x' i9 s9 z. @. D0 P5 e

' P; i, S, X: Z  D9 D                edgeBlendBuilder1->SetLimitFailingAreas(true);7 C5 @8 }: ]# m8 X) G6 }
& D& {0 J+ L" l6 ?, _

1 Y! K, D& [, g" O                edgeBlendBuilder1->SetConvexConcaveY(false);$ t) E2 X4 \6 d3 X: @  G! P

" l6 r; Y; r7 A0 C( c7 y0 ]

( v" X3 W9 |+ M. N. {; n7 q                edgeBlendBuilder1->SetRollOverSmoothEdge(true);$ X/ H( G! V; J& F
# t8 B. B: b3 t: B. U8 U

1 ^/ Q4 m+ L( R: ]                edgeBlendBuilder1->SetRollOntoEdge(true);3 `# u5 s1 m# i1 \4 b
. K% b2 o5 @& g; \, ~5 Z# F, T" o

/ J! q6 w9 m; A0 k+ _                edgeBlendBuilder1->SetMoveSharpEdge(true);
# j- d  i# J  d
; m# U( K4 Q, Y; C$ b: H& K
1 R1 _/ S$ h0 f# t2 b
                edgeBlendBuilder1->SetTrimmingOption(false);1 R7 n$ J/ m8 e; z8 H: y4 e

: A. z, |3 J6 f( @; I" w
3 K+ \- G& q- @8 ^& E
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);- l+ ?' k, c. Q/ ~

& f( ^- C- {+ e8 R# D
# [# C4 g/ o" V2 ]
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);1 X$ z+ T8 s8 C  s# l- ?

; }- z6 N1 X1 _  P  @
7 L( r3 n! U" k* S+ Q; H0 m  q
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
% d6 J7 w& [' |, W! ?" G: n) q1 j  y5 M- _4 n8 o: g
' L* `% d/ y/ G9 @
                int csIndex1;
. s0 _- z. X% q4 l2 `                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());7 T$ M! F1 Q0 v. k0 k5 @

& g$ `/ [, Z+ l0 \
8 t( |" O+ g5 r% b8 ~9 j
                Features::Feature *feature1;6 @5 I/ ]2 c/ O! J
                feature1 = edgeBlendBuilder1->CommitFeature();
* i# E( n; J; A; i' @2 M  w9 ^' o6 R. c9 t' r( t

, G2 T$ k3 B4 F  p9 |4 W: w& m6 e4 n                edgeBlendBuilder1->Destroy();
4 b  j+ q6 T" ]6 g
6 V9 q- i1 {$ g8 m' {/ w    }
) T3 B+ h) U. \  [    catch(exception& ex)$ y/ b6 k5 t8 M& E1 [- J
    {
2 ~4 x, e8 ]: y$ T. s        //---- Enter your exception handling code here -----
$ P" w! P# [) ~2 a1 G- X        errorCode = 1;
) Y9 e  n. o) q# _+ b        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());- E! H1 {9 r* Y2 e; F
    }
+ ^0 Z# E2 a  K, r& W    return errorCode;
* \6 x# z) e' ?3 }& \}

  [, \7 W) T4 R; C  @
" S: `- v0 p9 U! h9 n* `" d
说明:因为字数有限制,这里只贴出关键代码。5 v+ Q9 V% r; @

  D3 n7 G0 X7 V$ T) L! ^  w
" U! U, H8 q" S* ?

. A; k1 {' S/ T: G- N- F
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二次开发专题模块培训报名开始啦

    我知道了