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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
/ h& {: J% o# `! V0 _$ e- z, ~$ P, M
void selectedge::initialize_cb()
% s3 y+ B* G9 k; k  ?{
" P9 T3 v$ \, z1 t7 ]/ m    try
* Y: |* y) ?5 x/ L" O: `/ ~0 P, l    {
' |2 o- n: j5 t+ p/ _9 a
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
5 L% Z* ?5 m' |        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));( d- `3 @9 O3 p; B
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}9 B' C! Y& r; ^8 X0 s3 b
    caTCh(exception& ex)5 u6 w9 J  t. M: V
    {
: C3 O5 ~# ]$ c7 ]1 L. T& z        //---- Enter your exception handling code here -----" F, W# ?. i& @1 G0 V
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
# X% M$ o' B. B9 Z    }
& E. a: Z+ Z3 m3 w& Q* N}
+ G/ \1 @/ E$ T5 _: n/ L6 U2 h4 Y5 |- ^
int selectedge::apply_cb()
7 c3 t- J& P- o{, ^+ m+ s5 u' S9 O* Y
    int errorCode = 0;8 a9 Q% v: F" B, k& P
    try
) o" w0 ?  H* V0 I) D    {
' b2 K6 q0 c2 T9 C        //---- Enter your callback code here -----$ p3 R$ g: L. X3 j8 u; _) W# U

+ f% e' j- r$ f0 s8 p8 T, ?0 T1 u' x9 m6 n  P; i

% b* C3 p2 ]1 J                Session *theSession = Session::GetSession();
3 o% [5 ^& I1 W. D, J  D# u                Part *workPart(theSession->Parts()->Work());
! o  ?3 {+ P, s  A& T                Part *displayPart(theSession->Parts()->Display());
( p, |2 h3 ^3 E5 o, v) H
  _9 m) ]* D: O  M/ Z
) C/ }; x  L! d1 G3 X
                Features::Feature *nullFeatures_Feature(NULL);
5 ^0 C" b0 k8 A                Features::EdgeBlendBuilder *edgeBlendBuilder1;0 \$ J0 W/ a$ _$ E! E$ c: D4 s, ^
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);" Q, R$ g. w4 m% N

5 \- v: L$ ]0 }# H3 m4 I. j
4 F$ f- ^- I# m- t- K
                ScCollector *scCollector1;
/ |- y1 r4 ^+ X. N$ C, g                scCollector1 = workPart->ScCollectors()->CreateCollector();
' _, P' a5 d! e6 g1 S6 E
) X( T$ ^' m8 u. X5 b

( b' Z, W2 G, _. ~& v                std::vector<Edge *> seedEdges;' H2 Q# r* `; b
               
" E  u9 o* [; {) ]                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
9 Z0 a" O1 q* Z! |) `3 _2 M                for (int i=0;i<selectob.size();i++)2 c# _0 E  A9 K& M  M: ?
                {8 Z5 ?& T- D3 Q$ C! N
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));, Y& u* @& P, r/ g3 ~% n
  }7 g/ [( j% w6 @# V

( L/ g: K# e$ s5 I7 Q9 c2 ?* V  double dia = expression0->Value();            //获取表达式的值" `# [$ U( @( D
                stringstream DIA;
4 f9 N. p' J  b" V0 |9 X% S                DIA << dia;2 h+ _$ X# X. t( r- B. `$ r

/ m7 ~  @3 ^: K# q1 q8 ~" r
! g3 i& j% x  r* U. n
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;4 O9 e/ v+ h9 j
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
8 f/ m. q& Q$ x# c1 i8 P+ Y; C
% T2 N' N0 ]4 M8 R" n
) v$ g. [+ f3 A0 M/ k/ u2 P
                std::vector<SelectionIntentRule *> rules1(1);: w  u+ x; g9 F4 }6 j3 m: \7 g
                rules1[0] = edgeMultipleSeedTangentRule1;6 h, ]1 P) Y, D5 {9 _
                scCollector1->ReplaceRules(rules1, false);
* Z$ [$ x' `% M! A$ y5 P/ x( _3 p( _3 z
- o* k9 Q  u% V% @9 o; S
                edgeBlendBuilder1->SetTolerance(0.001);
: j, R# p9 ~8 P6 H8 p. e5 `9 S  Z% X, `1 Y
$ u# ~5 j, p8 K$ J5 g! a: E
                edgeBlendBuilder1->SetAllInstancesOption(false);; ^4 Q6 t2 I7 A2 m7 j5 e" v
' A  c3 K  L: E2 [, h, D  c7 [; W

: ]" i/ q" k+ ?; p0 c) R4 q  P                edgeBlendBuilder1->SetRemoveSelfIntersection(true);  v. L. K/ U! @5 i+ E5 ~6 a

4 W$ i, d+ w- V7 t7 t

% l2 q: v  R7 t6 o                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
8 i2 S, b4 m7 p8 e. `" q
& E- x: k* Q4 N% [

; X. V/ ?! m3 k/ H                edgeBlendBuilder1->SetLimitFailingAreas(true);- X, u* n4 ~6 W. ^/ J( y3 g9 @0 Q0 E

2 J& ^- d: A# O, P
+ ^& C; g- x% I" y" `
                edgeBlendBuilder1->SetConvexConcaveY(false);
/ D8 y& v2 V5 O+ t6 x6 D' J$ l& R$ G* x7 s) P5 f& x7 t

. u2 E5 a' y- }, I                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
- K, x8 V$ i) j5 i; B' n1 e, Z
2 H2 V; B. m3 J8 ~' ~! y
: \& E" ^; i' N( [4 n
                edgeBlendBuilder1->SetRollOntoEdge(true);
! M7 x# V' H' Y4 c' l$ K- s$ q8 ]+ V. V  [% \
; k7 ~3 S# ]  G
                edgeBlendBuilder1->SetMoveSharpEdge(true);
" u4 z+ u3 ]# D/ m) F9 o' M, k+ n2 J
) Y0 D5 o+ I& p& O# T# n
                edgeBlendBuilder1->SetTrimmingOption(false);& ^" S5 z( y5 G0 E) c  }1 Z
! y) ?3 v- w0 b6 R! E
- l- y" V( Z7 [4 W, h$ z3 Q
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);0 l3 C2 |) ~, n0 S0 b, a; F$ L. m

/ F* I3 ?% u; `2 J$ \& M7 Q% c+ u# S

! S  q, |5 w( u& e) l                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
7 G: i) S3 X6 X6 r" q
- ^, A& e' B* ?/ @) [( n7 ~& j
. C# h6 L: f/ R  s. g" B
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
$ G& f9 B& x) Z7 r  g4 G/ D3 Z: G( C; L

# P& G+ X7 v& `* l+ G# u% Y                int csIndex1;3 n$ ^' _! j' N  q0 W
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());& z% r2 n8 ?" y
, a$ t/ C8 ?! t+ k8 P3 ]( e% M
* B6 a' g5 [; B9 K& V/ a" ^9 l
                Features::Feature *feature1;- D8 H; q' X$ j3 Z1 C: ]7 T$ e
                feature1 = edgeBlendBuilder1->CommitFeature();
9 M' s; w( U  U9 Y  A
1 T& R, L; W  S$ C! S0 ^1 T$ r: d% C

' g- r0 C) p, g$ v7 p' u                edgeBlendBuilder1->Destroy();
2 ^$ g5 {' |0 Y
& ?1 h. I! D& K' o    }
9 f. T4 l9 W+ g' ]. g# T    catch(exception& ex)4 N" ?& ~+ M6 m6 o% [6 o2 c
    {
8 i! |( B' u+ h* `        //---- Enter your exception handling code here -----
1 i  c% ]  x+ b        errorCode = 1;
7 R9 Z1 `( m  }5 D7 @        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
$ |& v  ]0 o. M2 h- h0 c$ \5 A    }/ @  m& o5 v* H) c
    return errorCode;' Y- v5 p8 h: x' o' ?, T7 U
}
; ^/ F+ a; s( _8 b+ m1 S$ g3 M

* E+ R5 ]8 A3 l) [# F1 z说明:因为字数有限制,这里只贴出关键代码。5 f7 B1 }- M7 S2 Z9 a
5 s2 P4 O) d& R, @
; M/ x5 \$ j, [" b( y7 [, M# D. ?; i6 V
" ?  x. Z' B$ _1 ]- {. [
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二次开发专题模块培训报名开始啦

    我知道了