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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
/ _" G: k5 c4 h/ q* J  \
void selectedge::initialize_cb()
' g8 G+ g! P* Y2 g! G+ R1 q& o{
2 U+ c5 W, s* P9 B. p. ?! t    try% |% _  W$ U) z; A4 O: @: ?9 U
    {
9 Z8 P2 E9 z* x3 D, o% n
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
) Z( U, ^( u5 g( Q" ]. m        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));1 G* W; ?! f% J) h
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}0 T5 w" g4 d4 a5 ?
    caTCh(exception& ex)* Z3 p; m* X! K' n
    {) y/ n6 a" S% p5 h( N: R
        //---- Enter your exception handling code here -----, h0 f% u4 L# I( J0 c
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());! ?2 H. T1 D# @) N% y
    }
4 G' _8 q! ^9 h8 z8 n5 n}
; S3 z: Z1 N5 d" P/ a) i9 M
# w1 H+ ^+ ?) C. D% B3 L( `2 l) \int selectedge::apply_cb()* U& a4 V8 Z4 v5 s
{
0 p$ e6 _8 K1 a    int errorCode = 0;
; l1 i7 d. N* l+ ]9 ~# V3 n: S& I    try
4 R5 a+ X# D, {    {2 i+ `/ ?5 z+ A+ e" O8 Q" @, u
        //---- Enter your callback code here -----
8 j9 Q! K+ A5 s4 ]/ {* H- i, u/ b. }0 ?( x6 `* K
( J* R1 p( |$ N" h/ O# w3 @

/ z2 M1 p; ]/ `4 f' m4 i( @                Session *theSession = Session::GetSession();
. f( G5 O- m4 [9 Y' A# W                Part *workPart(theSession->Parts()->Work());
! q/ f# S* o" |7 T4 p$ _, X8 n                Part *displayPart(theSession->Parts()->Display());
0 Z8 ?4 L" u, d3 I! J3 N8 G, b
* O" T4 A$ Q  @! r4 r0 N; ~; a. a
9 I& A- J) {1 L: q
                Features::Feature *nullFeatures_Feature(NULL);! w, b) C7 r% H5 y$ u. x9 n
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
' P: h5 v$ r& }( {+ s. @5 p                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
2 z* x5 @! m! H
; F3 ^$ e( ]  D% d- ~+ B
4 k' S: g7 g+ }$ k0 l
                ScCollector *scCollector1;
( C% X- f, a/ N) ^  d  ]                scCollector1 = workPart->ScCollectors()->CreateCollector();) q5 P( {3 ]) |
6 ^1 U% Z$ i. z
) W% r/ p, ^8 x
                std::vector<Edge *> seedEdges;3 t0 ^/ n/ S1 }) ?" G1 b
               
8 r  T* T1 {& ]7 e                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
9 n3 P" Y  o8 b1 y: x                for (int i=0;i<selectob.size();i++)
) k# T% P: k& x$ ~                {1 q  p0 z, o9 l- @: P
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
  i: O! l* J% X( \* @$ I  }6 @( Y* |6 f% y# Z" o
/ H; F+ N' t! L7 V
  double dia = expression0->Value();            //获取表达式的值6 e/ x3 q  N' B7 J+ U' l
                stringstream DIA;4 [8 p! `" J- ~3 j9 Z
                DIA << dia;3 Y7 k8 J3 \5 K4 p2 ~" B

, f& }3 a7 R& _$ D& ?2 o- B

7 S2 t9 f0 |- W( H, h8 c; n                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;8 t  d' z: b* x* Y
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
( }3 g# e2 q& `' }7 n1 W5 Z7 R9 ]) T# _3 G2 P1 v+ ?1 d1 M
/ e2 t6 ^, b$ `" g# r
                std::vector<SelectionIntentRule *> rules1(1);
+ N1 z1 J. M' ]# [6 G: i+ O, P                rules1[0] = edgeMultipleSeedTangentRule1;3 ]) N$ L; W3 P# R$ I9 A( T
                scCollector1->ReplaceRules(rules1, false);
$ X- Q6 ?+ T1 x  ]- l$ ?
) b- M/ G, b; t: N5 R% D

( S+ s1 g& r) r  @                edgeBlendBuilder1->SetTolerance(0.001);
3 v- f; U4 ^0 |4 Q$ Z% X, U, Q- f  l1 M6 k4 q
) K% ^7 X4 u2 M$ p* S- r! m
                edgeBlendBuilder1->SetAllInstancesOption(false);+ ]! O% V" G' i# i# L
- M1 \. R4 b6 g$ ?5 A1 n
/ |1 M. U2 D  j
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);; [$ H  b# Y$ ]% u+ @; N
2 S: G. x: l4 c6 U

8 w8 ^, Y4 o7 o' t0 Q8 z                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);1 [* A  r2 c1 c. G1 y" q

. V$ Z7 v0 t. z# T+ N- c& {- S
  A4 T5 j0 D3 z; p
                edgeBlendBuilder1->SetLimitFailingAreas(true);
1 G/ Z1 x2 k; t/ a1 |, @9 e9 W
  V. R  J4 @" f, I& y

$ h# I. N, f" v) Q" ?8 ?, L                edgeBlendBuilder1->SetConvexConcaveY(false);
, U6 S/ |2 l2 U1 [/ h
3 |9 j- U) J3 O( o6 A8 l
* ^) R/ r1 V* j  `2 S- ^4 Z
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);# M) S5 a$ p$ J
6 E1 f0 q! F" O

# F. f! J! y8 a* p                edgeBlendBuilder1->SetRollOntoEdge(true);
# K% r6 ]$ W; a" ?" M' `% I2 }4 u2 d6 u8 V* ^6 L5 ?6 E! a' i* Y
5 _0 K8 X/ K3 I
                edgeBlendBuilder1->SetMoveSharpEdge(true);
, l' V6 g& J  r, r" K& B1 C# L
$ I9 X! d% G8 H! W$ S) G

5 y+ B  A. n3 M' j$ R                edgeBlendBuilder1->SetTrimmingOption(false);$ v1 e9 i8 R/ H

5 Y8 a$ S2 J* N; U, d8 Y

4 L2 p0 Y9 W* ~) p                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);+ r2 y3 K! o# u& R; A

/ u7 S/ g) ^, F7 L3 r
% r5 m' C0 `3 }7 s
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
- L; }$ L/ w/ p7 e$ f0 ?. p! w1 O& h
! E! d. _9 x1 @+ h9 G# H  L
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);; `# ^( Z" S4 W* m; P( A6 U& D
  \2 m: t& V) z, Z- S. x
6 d# V' \- s# x& }* f+ {: M! D& H
                int csIndex1;  I/ k: T. D( y1 u( G1 y' p4 H
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());) t0 ]  \% M0 y5 s, y2 Z
$ X  H. l. E* T
% ^. O. _& @2 _/ X* l( z2 I% g1 [
                Features::Feature *feature1;5 N; t  F, J( M( t8 v# g
                feature1 = edgeBlendBuilder1->CommitFeature();5 j# d3 T% u, _( T# L5 W

, v. q  E! ]; P

6 F7 m* }- z5 T7 x9 d$ f' f- O                edgeBlendBuilder1->Destroy();: C" q. d0 A. Z

' `6 E4 K" D$ t9 P    }5 R8 ]$ k3 F8 y( {( w) h+ k
    catch(exception& ex)% z2 y) B' p7 ^4 n# [
    {+ i3 A5 O3 b% L. z. i: N3 b
        //---- Enter your exception handling code here -----3 r% T2 ?) C0 `  t7 n1 b# j
        errorCode = 1;% g; |! D: g' h$ {. C* k
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());, U7 t+ V  G1 |2 ]! V0 u
    }
# j3 u4 M3 g% m, G( A4 s0 q5 N    return errorCode;
+ B* J1 x/ M2 C5 [: f}

, A5 _# `5 `9 \  _$ r# z" J8 o

) w* ?1 I/ l, V1 d  C说明:因为字数有限制,这里只贴出关键代码。' y' b* O& o, [5 t

' p- N+ J! v" A. x
3 \3 e% F. }' C1 V4 J

8 ~! @% h5 o8 n7 Z8 q! l* z9 X7 W2 r
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二次开发专题模块培训报名开始啦

    我知道了