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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
. g; b/ j+ Y2 S
void selectedge::initialize_cb()
0 ]0 o- |. j; r0 ^1 B7 ^+ ?{& ?6 {- x: `! {/ J0 X. L
    try8 V$ \! @( ]4 J( }# B! [) H- a
    {
/ N& m) }$ ^; E' i3 }0 L
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
* }8 E5 \. I# a: {' a- i, [1 u/ k' K        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
: C9 e/ c0 l+ M  j! O6 p& }5 ~- T2 r        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}/ I6 p, _8 P& z  }4 P3 v5 z" `
    caTCh(exception& ex)
4 y( z. E; a: M3 H; a    {
% f) Q0 N  ~9 V5 P$ u& }1 h3 v8 _        //---- Enter your exception handling code here -----
- m. M  Q$ J" u        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
: X5 @' q2 |% ?$ {' e/ D- s1 [' h    }* p% X  n; Y1 J% Z% i9 @4 |
}
# W& O' r4 `3 R) a  o
) `! |6 n( d2 h6 d* Y) J1 T' yint selectedge::apply_cb()- O! {# w* q  p7 q  U! E8 f) {$ H
{' _0 `$ q$ E7 S
    int errorCode = 0;5 V4 Q5 w0 F6 o' k9 {0 ~2 T' Z
    try
: I" N" @* H, F# E- x* D2 l$ j, P    {
1 U! J- {! D3 |% z        //---- Enter your callback code here ------ d2 t* A( d& M5 j' R  H4 x
5 n) Z+ g3 b2 l. u6 Q- P/ F
0 \- x; F  g- |; q

" g% e- T; ?) }3 K2 z7 i! x' G                Session *theSession = Session::GetSession();1 |. \/ R( v) m: m1 j5 L. t
                Part *workPart(theSession->Parts()->Work());4 `3 |: ?  `! z1 Q/ {* r
                Part *displayPart(theSession->Parts()->Display());/ A, _# N+ d6 Q

% n/ L6 z) w- Z/ R1 |* X9 ^4 X

' F% S9 z; a$ D+ x                Features::Feature *nullFeatures_Feature(NULL);" k( w6 v1 p. B& e2 A0 t& @
                Features::EdgeBlendBuilder *edgeBlendBuilder1;& V8 L- s5 I+ C4 T
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
5 ?; ^2 }/ y8 x9 z
; G( U3 {( M+ E0 O# N; F

+ ^, W! Z. H( g0 ]; q. p' r                ScCollector *scCollector1;  u) s% P* g* W' B' C: Z9 U
                scCollector1 = workPart->ScCollectors()->CreateCollector();( L3 T+ r0 ]: y( L+ ~6 I2 d
& [2 B4 R7 K! ]  J2 o

# y0 o. a4 z' {9 N; P$ ]                std::vector<Edge *> seedEdges;
; y+ z2 W  i7 ?) F1 U- f" x               
) |5 b5 a/ |3 _* g6 E5 D                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象. g- ^3 q9 \: \# P+ B- T
                for (int i=0;i<selectob.size();i++)
. c2 D3 q6 H# {, A$ H  t                {
- A) ^0 B5 j2 c; O+ s" P. E                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));3 a# k% M% a; r, [( v' A5 Z7 j
  }
' ^8 @4 y/ P' j1 x
+ i  f: f) s% i6 T; G/ l  double dia = expression0->Value();            //获取表达式的值7 e: }! @  c, n0 d; J, W, j' j/ s
                stringstream DIA;3 B/ J; _% y3 K) x6 v' [
                DIA << dia;
- l( h9 i, ?# `: M7 M, U
7 E- \  F" `- B2 v5 k' d
" ]2 `* F2 Q  Y2 o0 a
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;# G$ `' F* S; s
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);9 t! n4 I$ N4 Q" O: Z6 T7 I
: O, h8 m' ?) m
" M9 l. N# G- Z6 Q; B9 Z5 |9 b6 Q
                std::vector<SelectionIntentRule *> rules1(1);
0 i/ p" ^; A3 \- h$ C4 B' q! @                rules1[0] = edgeMultipleSeedTangentRule1;
7 O1 f  t  I; |                scCollector1->ReplaceRules(rules1, false);
" D3 T- A/ R$ L' I0 W7 \- L$ H9 l
) H3 c; L4 x4 M3 G
                edgeBlendBuilder1->SetTolerance(0.001);1 m, |3 B$ M2 b! V0 ?5 D5 N

% x% _9 Q/ G; g3 H/ b9 u( i3 c

$ Q6 ?% S7 ]) n5 i' t* G" ?3 i                edgeBlendBuilder1->SetAllInstancesOption(false);9 \* @; U; V' Z1 ?( O0 d

3 i6 W) V9 d) V0 e

# O! r! S0 ]: m3 F$ Y: b' o                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
3 P  s9 U" C( X8 C
& Z! `/ {4 m. C( O/ i
- ?4 M: Q# q$ {+ b+ `" w) H
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
' Y4 T+ A+ n: _+ c* f  z
0 F6 b" s! I9 G: s) p* \
! t- R% k# _; L3 Z* a, C' {; k' y
                edgeBlendBuilder1->SetLimitFailingAreas(true);
- R3 b- a6 X9 c( Q' u5 ~. A0 M$ E3 s3 _* k& Q) w% }' F8 ~
. L( W" [- Y8 u
                edgeBlendBuilder1->SetConvexConcaveY(false);
9 g) |# b6 M+ O9 S
) S/ n2 j" c! ?. c- b8 b" a6 g

, u$ c6 a# I+ b) o: e- G3 b1 t                edgeBlendBuilder1->SetRollOverSmoothEdge(true);. J3 m! n5 N8 ^1 z9 I- s

8 U0 ^4 L! e* {* Z8 P( m- t0 U
4 i0 d$ z5 Y" C2 _; p( l" C
                edgeBlendBuilder1->SetRollOntoEdge(true);' ?6 G8 y; A" \1 v: F8 G
% o6 j6 Z, Q5 P

: K1 X1 d& S$ I                edgeBlendBuilder1->SetMoveSharpEdge(true);7 e1 N. \6 i6 ~

" a6 I( N& n" s3 r% t

# p1 x  m: s# f. f) X                edgeBlendBuilder1->SetTrimmingOption(false);
7 |3 _, {; K& j
+ n! w2 M1 S/ X1 z/ h8 u
/ A+ z9 Z# k* P
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
% S. ]/ G2 `8 A- b5 ?1 {( J
9 w2 Z; d0 }2 w4 O( H

! l. V& a/ ]3 ?8 j9 ~2 o# f. Z                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);% h, V6 x1 s0 ]! j) q
3 {0 I- ^0 \$ L& N, ^- O
7 v# n$ I( m4 M
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
- i- i" a4 P) ~. ?0 A- M7 X$ s0 \- Y; w# p; d: V! Q+ G% Z$ F
) T/ M7 G4 ?7 C  O
                int csIndex1;
) @: l4 g# C) }$ R                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());+ r1 G3 c0 c5 a3 V  m
$ w% Z  X3 M9 @1 S# b. u, a/ \! }

& T8 b, v! g' i. e; T6 d                Features::Feature *feature1;
% Q6 {$ ~% u  u( m' N                feature1 = edgeBlendBuilder1->CommitFeature();
% k7 N  W/ A) z6 Y6 q; a" E6 |" _( ?; `3 v

, W2 k* i" v8 L; L6 G                edgeBlendBuilder1->Destroy();- T$ g) `# j" q& y# N
: Y8 m* M( `  g6 N/ B/ T
    }
/ D4 ?& c9 d# n    catch(exception& ex)4 c3 ^9 }8 i, r( I; |5 L& I
    {
% Z# ~- M: k2 l" w0 W# C( s- k        //---- Enter your exception handling code here -----
6 {0 e: ?7 E$ |# @  l6 L        errorCode = 1;
6 j; [! B& w# L' S# m        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());6 j: i" Z' ^# j$ W$ G
    }
; G( \$ |' Q8 ^4 S2 a% [    return errorCode;7 t4 @$ g9 o6 Y9 c4 r
}
% T6 T. F/ n9 [' O
: u) A0 M. }) b/ a: [, V
说明:因为字数有限制,这里只贴出关键代码。
) P, T2 M9 |1 ~& p3 V/ h& K0 V, k2 g" a8 M5 Q7 {) {4 Q7 ^9 b

6 u. \, P2 x9 `2 y7 ~
% D, Z8 ~) ~! X3 `
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二次开发专题模块培训报名开始啦

    我知道了