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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

2 y+ {( e) f* Ovoid selectedge::initialize_cb()
  ~5 X, ~" I1 E3 x/ J{
- z8 B, U) e/ d" g    try
3 u7 D5 L0 l* ^6 {2 j    {

9 m; n; E' q" i; s        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
9 s) X. X+ U( F/ ^% U$ a        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));- f  P- V; g% R0 V7 j
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}% _# v; n0 o' A( I
    caTCh(exception& ex)
/ h. N) e* K6 y& _/ G1 P3 l    {% j# K5 L+ y# \* ?" I- r
        //---- Enter your exception handling code here -----! ]! H* u: A" `4 r9 z% k
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
% b, g2 E6 e4 G. i9 r$ C    }
  A2 j( S0 n  v& M4 E}5 @$ X2 f* K% [- ]% }4 Y
$ b) L6 R% y& C) j
int selectedge::apply_cb(). e9 }+ r' c" B7 {* E+ \) t: N
{' b5 x0 p) g. `3 i7 D  J  ^" [
    int errorCode = 0;7 k0 ^( W5 G* M; d, o
    try: k: Y, ?! s" k- b. z6 I& f5 y
    {, O9 P1 W2 Y" q2 g. c5 i
        //---- Enter your callback code here -----, B. m  i/ c" [  |4 t
* s0 a! d" u' b

, o4 L% \+ |/ j! R. Q
3 y' V5 \0 j* R6 Y% R4 H
                Session *theSession = Session::GetSession();) v5 \4 d7 ~5 g
                Part *workPart(theSession->Parts()->Work());" e; n0 d1 y# {6 {: i2 m) f( s
                Part *displayPart(theSession->Parts()->Display());( ~9 o& }; r$ P3 M& F( p1 `
" R2 g% `) i2 k
8 y- Q, [( y7 Y
                Features::Feature *nullFeatures_Feature(NULL);6 L+ |, g. D' o, q
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
& x. r) \8 Q. A8 }# D8 s9 D  t# K% G+ t                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
8 m8 ~6 k: N, w( C
4 e+ B8 l5 g) T9 ]

9 ?* ~- I0 i0 E/ K9 ^9 v6 U                ScCollector *scCollector1;- ~5 U$ R/ @# n4 d4 z+ x
                scCollector1 = workPart->ScCollectors()->CreateCollector();* h# v2 {+ `  P

; M9 {; w% N% I4 f, \0 y
$ a# B. b) e/ Y  f
                std::vector<Edge *> seedEdges;( X8 V% F) H$ B( J
               
1 v6 J' @  A* ?                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象& q7 Y* n( p9 w0 q$ A/ u
                for (int i=0;i<selectob.size();i++)
+ C$ C$ H: Q' O! i( ]! U; |                {5 ~) L3 t, Z2 s* p, b  a" Z
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
7 J" C- A( u% }$ g: V  }
* U$ p0 ]4 m6 G! k  H- u
# u- E: k3 k) O$ h+ Q  double dia = expression0->Value();            //获取表达式的值
/ n: h$ e7 m) K) @) \" l1 ?5 [                stringstream DIA;6 A9 b9 X' h% W3 G7 y3 ?
                DIA << dia;
. S3 S( R+ B+ v! n& {
* ~2 i# [/ a) L9 S$ ], {

. }; e( P0 o- e/ K3 _$ a# d9 r0 `                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
3 }3 E, V2 E7 D                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
- y# p: V( I1 j# l6 T1 E, g1 j. A
* K' z  J# W4 i. B8 A9 u# Y
                std::vector<SelectionIntentRule *> rules1(1);) A8 e3 P+ M. L% ?' M0 L
                rules1[0] = edgeMultipleSeedTangentRule1;
; {& D8 O' g+ f+ {7 U) C' U                scCollector1->ReplaceRules(rules1, false);; N- B/ s% A$ `, \2 Y
, J& {, X# o4 s
9 D3 ~3 `% u( `& O! F! ^; m
                edgeBlendBuilder1->SetTolerance(0.001);9 Z% M4 }8 m' `  @& N
- k, A# I0 u% O1 X, D

3 p+ D6 x8 D. A                edgeBlendBuilder1->SetAllInstancesOption(false);
1 D9 u$ U+ e2 ?" s3 k$ z4 v
8 @( |5 d' v1 x7 i; u+ q
% R5 {3 Q: X3 p; ?: f- h
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);4 x; O. Y# L: _0 F' ?/ g- S& t

- N9 ?( H- I+ F6 f4 Y
! q2 ?4 m( D$ X% \8 V2 {* ?
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);1 `9 P+ E) e4 k: G  x. H

$ Z! `/ ?' h3 T& }% `6 w* Z, e

5 v; X. N' Z9 a' s; H% j1 M2 A                edgeBlendBuilder1->SetLimitFailingAreas(true);2 P0 @7 u4 k5 _0 F

8 [# o0 }5 l* g
! ^- q# s2 i9 L9 j
                edgeBlendBuilder1->SetConvexConcaveY(false);3 J4 `# p6 f- D/ x

' @+ a, s0 g! U* F

, T% N. U4 v' X- i+ l! t5 J3 o                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
( p8 q) E# [2 }2 H/ E& d% T% o& w2 R8 t& n1 Y% e
; r5 E* n  ^" P; I
                edgeBlendBuilder1->SetRollOntoEdge(true);" G- B* r- U8 A! D: V0 R) ^+ d

! i4 X) \# v" p* `/ ]7 f
; u4 P1 A& f7 I. \0 U
                edgeBlendBuilder1->SetMoveSharpEdge(true);6 v" C' n4 P: r+ \( H/ g
3 l0 W2 g3 n" v. N

1 Q& \9 G' z6 d4 D; Q5 Z- @" y% n                edgeBlendBuilder1->SetTrimmingOption(false);+ n' \* z7 A9 N8 N* E8 i/ V2 [( F. [
+ W) ]% D& {8 f  O

+ C) V9 ]- Z- S/ ~& I                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
$ [. A8 D6 s. ^3 M
4 ~, T- u  P- f+ h

! i% x/ F- m8 N! X  g. I7 H5 a* |                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);  m. S1 W, S. ~% p

* N# A! [! X2 \- l. B

7 Y: w3 x- H: S, f2 e- g1 S                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);$ u8 d& P- {, U8 ?/ M
! m3 D) J5 ]' ?3 _) ^& f, w; x
) t. j. h7 _& J( b% [, j$ N
                int csIndex1;/ A2 J& A8 w0 L4 g6 S0 `
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
6 i7 p4 I" B1 ?! M
" a  v' ^4 _- \/ ]9 ]2 ~

( y! m7 z7 i! f# [                Features::Feature *feature1;, e" Z! `) d, i1 x
                feature1 = edgeBlendBuilder1->CommitFeature();
- u( K3 H3 ]( {) S5 [; y* s2 I7 C; h, V! n8 `3 Y
, K5 ]2 x( N& c* N) S/ y
                edgeBlendBuilder1->Destroy();( X: s/ w. r( L! D
* k7 g; n5 t8 g: Z
    }
- z3 R6 e5 X( t- }* w" @& C) [( B- G" q    catch(exception& ex)) J- ?% K  L$ s9 `. S! \6 d3 z
    {: s% T1 V6 r, z+ U. b
        //---- Enter your exception handling code here -----% W# E( C; N! h' m- x8 {# v$ I
        errorCode = 1;) B: F% p) `# ?1 y
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());) z% }3 v  {+ ]; R
    }3 \- @7 i) D: M9 h# @* X
    return errorCode;
8 D( ]0 K2 m, r6 q2 b' I% B. c7 @}

$ u: u4 E! H2 G. q* O/ z
3 S+ L" d7 J+ h. u% E9 _$ {
说明:因为字数有限制,这里只贴出关键代码。
2 f; k& W  a" y/ c3 |2 A. v8 \4 |
5 {, J! U( E! w  Y) c1 F9 |- D% Q8 H1 ]$ v6 J) J; L: m3 W6 ^

- i4 g, V& j# w! v: ^7 u. M; o
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二次开发专题模块培训报名开始啦

    我知道了