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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

! c" ^6 ^2 d) x/ ^3 Y; svoid selectedge::initialize_cb()* [. _6 y( k; G. c
{
7 D# e3 ?9 {/ |. H6 H+ \( I1 `% J    try
! W8 E  }* e2 w; I1 |# s    {
" {9 c: {3 j* F  [8 {0 i1 w
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));1 @8 f5 v* R4 |0 h
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
/ z, e; ~9 {0 s6 _, L( B5 q! {0 l( W        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}+ Y$ y$ v( P  g) |% h+ b$ o
    caTCh(exception& ex)) A9 X+ R. y# I- v+ C
    {
( ^9 C! ~& |# a" \' C: m% u! C- ~$ O8 n        //---- Enter your exception handling code here -----
( I( N. E& K, r' c/ `7 ?# M        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());8 R) a, W" C5 M* t
    }
- O. }; \# p* u$ G}( A9 U) h5 `5 G4 ~* c
" D( E6 w2 @" U& R) ]. v+ t
int selectedge::apply_cb()0 ^( i8 }" V2 H% Z" P
{1 O; e2 \3 O/ I) t) X# p% G6 J
    int errorCode = 0;
' j* t- b/ g& {1 Q$ ?2 z" `    try
8 w6 I, ], U: G" ]- }    {! z% p9 _6 r9 ~0 G
        //---- Enter your callback code here -----" `+ E$ C6 m7 _+ h7 }  }5 B

4 }3 K3 k4 P( X  O: S( o! j- K
1 b3 e' Z. y  `

5 d) P: |7 E. s; ^& v                Session *theSession = Session::GetSession();# l3 u( O& }0 X
                Part *workPart(theSession->Parts()->Work());
# z+ D& {! @0 F; x7 Y                Part *displayPart(theSession->Parts()->Display());3 c" v: {6 L1 V' p2 d
3 ^/ o& u$ ?1 ^( ?" G6 V
7 {% o+ G- q7 |8 ?3 R5 h' m
                Features::Feature *nullFeatures_Feature(NULL);: X& j: W+ n3 Z, N4 v" f
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
' K4 i5 D. C6 e  ^2 @4 m2 E5 O                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
/ ~/ i8 h! b1 y: n2 B$ m  ^. E. J& `9 o, H' L3 l/ N2 _: _

1 U  e; h. d0 Z5 y% }0 K" ^                ScCollector *scCollector1;
+ x* k! ?5 V* F! t                scCollector1 = workPart->ScCollectors()->CreateCollector();
' u) d. E2 N# a0 d+ Y/ s6 h+ U; f. g+ H: O% F7 V$ |

9 V1 U( {8 n, i: ~) }0 g/ d/ K                std::vector<Edge *> seedEdges;; s5 E/ |3 }# V$ ^* C
                . X4 A% M: ^3 g) W! q% Q0 d* ?/ P
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
9 i! A( C' I# I                for (int i=0;i<selectob.size();i++)
5 N6 S7 N; ]; q' l; d                {- a9 U# _) q! _" M# @
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));. u& A  n- V& b% G
  }. a0 [3 g$ m+ }( p8 j
$ ]: Y* S4 x2 m/ v4 l! l: ]; P
  double dia = expression0->Value();            //获取表达式的值
3 I! ^- |- P: [, l& o& o% G                stringstream DIA;
9 @5 D; a7 X/ _* ]                DIA << dia;4 {8 ~$ L1 N8 X
2 m+ Q* V9 R" ]' k1 P

/ {8 i) e2 ]+ c$ C                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;+ r- R4 w8 F, s, }3 {6 T; O/ s
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);' _& f; h) V! v% B. J
$ M3 v# p) \6 Z+ ~" F- b  v

1 `3 q8 R9 j/ f" g' B3 h0 r& J" c                std::vector<SelectionIntentRule *> rules1(1);2 H2 h' r  ]+ {8 |) y& f
                rules1[0] = edgeMultipleSeedTangentRule1;
/ H7 F0 O0 ~1 w7 z& ?! n3 c                scCollector1->ReplaceRules(rules1, false);* m$ I% n& A! _6 T+ P0 R% A

6 `9 |, C; W6 ~/ t! F2 `6 s6 ~
4 k/ k& F+ |3 t0 h5 T' q7 B
                edgeBlendBuilder1->SetTolerance(0.001);
- ?8 `8 Y( d4 U0 P
5 q: T: K8 W& b* W; ^$ x
5 k7 u6 I6 {5 B1 Q) x) ^( x
                edgeBlendBuilder1->SetAllInstancesOption(false);# L% y! W1 {# h) N
& l. Q$ Z- S  a/ r  ^5 J

: K: M8 |3 y# N" u4 Y4 [                edgeBlendBuilder1->SetRemoveSelfIntersection(true);6 @. g' D5 r2 |+ w

9 _# [( |* Y$ j' x

( i6 N; u. X4 ~1 v) ~. ?6 L                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
9 [3 z( H% P) h# ]1 [
& w# d) Y7 B9 R1 j! `( L

! C3 `' H3 b* A) G( h  g, q                edgeBlendBuilder1->SetLimitFailingAreas(true);8 \2 X2 H( R  g7 z# R9 d( d  A
& W+ A/ D% ~# r+ q5 B# D/ I
7 g$ f; p4 B" z$ L5 m9 ~
                edgeBlendBuilder1->SetConvexConcaveY(false);0 K; N0 F/ S5 d7 y: U5 x6 j

7 ]; a7 X! E" r* c: a* N* m- R/ F
. M( k- w( p$ S2 ~: E+ W
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);, I# I' I) h9 I! z( }( Q4 H) J4 o# X
, p* q- K4 L, ?" N1 N
- q( _  G& z2 r4 l
                edgeBlendBuilder1->SetRollOntoEdge(true);
# n2 S* e5 l/ e& }1 B$ B" i+ y# \3 X8 _9 d1 W1 F: m$ P  g

0 X! }+ \4 S. S& \' V3 o                edgeBlendBuilder1->SetMoveSharpEdge(true);, j' S3 R* r! Z, n0 m8 j! e6 G* O2 y
* F" d! M7 j) r/ G* M9 T
. z+ S4 y8 R8 }8 f  G' A
                edgeBlendBuilder1->SetTrimmingOption(false);
7 _, {" B( \% X2 `! @+ f. M1 r7 }. s5 p
4 K7 y' c6 u0 [2 F* V+ T
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
5 V0 @4 E' s: t. U3 V7 p& a
- q  D! M( [4 \( ]% [, O6 Q- f. R
/ P7 q- E# f- p0 |' m+ B
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);1 A6 b, m4 a7 B) p4 A
6 |" L! z7 |! n. c8 X( o

1 R) G) ^7 o' `                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
, z. w( ~( j; `, b- H7 M) ]+ O9 Z* A
+ T0 M% l% `& y1 O# o! A
                int csIndex1;
: Y# Y( \& O1 M  _9 Y1 x- t! q                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
- E9 e0 R6 d8 x0 w7 R3 w- f# a' u2 h" b0 n8 \- G( r
; d/ O1 ]. o" p. w3 M- F- N
                Features::Feature *feature1;
1 B% p0 W& N$ _! [: H6 U+ C1 l                feature1 = edgeBlendBuilder1->CommitFeature();1 A, k$ d0 @& W$ w' A
- j9 U6 W( J2 [+ d
, ?% V* z. Y, x  J0 M2 h
                edgeBlendBuilder1->Destroy();
3 O$ E1 |* q% {/ x0 G3 w' U
6 Y' @2 V# ^+ F8 d- ]- `8 D5 `  z    }6 A' K( C4 C1 k+ {
    catch(exception& ex)+ g7 ?8 `  b+ p, b; I5 f/ q
    {4 ]0 F/ {3 @: X( `; Z/ x
        //---- Enter your exception handling code here ------ M8 i) h$ @" b; }9 C
        errorCode = 1;; q7 _! B9 q4 I( E) M8 K
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
' ?6 w$ u0 c4 j% Z, _    }' f; c5 Y7 a! K9 U& b  b3 \7 W
    return errorCode;
% o+ N* g* s0 ^' ]}

5 E2 {$ i* n+ I: B. |
% Z: c  f1 q$ J4 D4 `5 m" D# Z
说明:因为字数有限制,这里只贴出关键代码。  _. d& \, X* s" v7 G, Z* `0 h

$ ~& b5 G8 g" ^7 T" V0 u+ O$ S* b! A

! ?! c  z  y- o; D* a  Z7 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二次开发专题模块培训报名开始啦

    我知道了