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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
9 {: K0 }) f5 o# l( ~. i7 |" c% z
void selectedge::initialize_cb()1 Y$ s3 N* Y, j" J' |
{
4 l1 t/ R. ^/ m    try( H# r2 D; R4 z$ Z+ w7 V
    {

9 t6 y1 }+ e# G7 ~        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));. k1 D3 O& z! Q( J9 q
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
1 ]) N- g  n: H" s        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
! g  V* Q9 W4 O    caTCh(exception& ex)
$ U1 }! A1 T6 Y# T- n/ V    {3 b& r- a) O6 j: K
        //---- Enter your exception handling code here -----" O# x, F% ]. `8 e& }
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());5 e5 B) N" q! |2 d
    }! y5 L5 `4 r5 \4 j. v4 z5 r, e' _
}( O% Y1 ?2 i! a  c: o1 ~* U

! ]# o" B6 y* Q5 y5 eint selectedge::apply_cb()
9 y& \# q# A9 @5 H{
; l7 |' [( W0 r- z3 x, A    int errorCode = 0;
/ y5 J7 x7 M" ^7 ?" |; Y8 F    try( B0 g( ]& ?! O/ N! h1 C* n5 i
    {
7 s. m6 u: V1 Y" H        //---- Enter your callback code here -----$ X) L' T0 W- H1 |  {& X

0 Q/ ~2 ^6 [" y  ]/ v8 h1 C$ e( _) I8 n" Y- j6 w! X. y, `

2 D6 D5 _/ ^) K                Session *theSession = Session::GetSession();
" C7 Z9 @" j7 v4 P5 p& p3 _                Part *workPart(theSession->Parts()->Work());' T4 D- A* C+ m5 Q4 b
                Part *displayPart(theSession->Parts()->Display());$ d0 a: D/ u0 J# p) T  P5 V% M/ R
3 f% v) n! K- w/ G( k" o5 |5 F6 z
. `$ Q' J+ g2 y, A. a* g- N
                Features::Feature *nullFeatures_Feature(NULL);- t9 q5 W0 |. p. M- ~" ]
                Features::EdgeBlendBuilder *edgeBlendBuilder1;! g9 |' w4 y0 X( [8 N1 f
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
! L3 j2 M2 A4 C: d0 }" b9 h. D" L( P# T" ?( e. J

* @9 F2 O& y' u. B7 M                ScCollector *scCollector1;$ Z' {4 b: A0 x! H  g
                scCollector1 = workPart->ScCollectors()->CreateCollector();6 o- B7 V; j9 h# s) _- Y, ~
3 r$ f9 |2 @- t. l

% [5 A  x% Q4 [                std::vector<Edge *> seedEdges;* K- u  x6 h1 ^+ D1 y& E% Z' B
               
! u$ Q- T$ A- d                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象5 y1 M2 V: E( L8 i( C4 x8 x7 L8 ?1 `
                for (int i=0;i<selectob.size();i++)
, V# z( V; V0 B- x' ~$ U                {: ]. ?9 J! i: D5 Y# d8 I& `9 e9 a
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));. \( w$ y% a, q3 o6 I
  }
" h! J" {% M5 x8 \; V$ i/ ]
. }' P+ c% ]0 p  double dia = expression0->Value();            //获取表达式的值* @  Z; |# e- F0 f; n( T& O
                stringstream DIA;( U6 V$ X, G' O+ ~
                DIA << dia;
% o, D0 e6 ^! i- d6 G2 x5 d! y7 l5 p9 v9 B
. d" [, X$ k  ^/ v# ]' C/ {
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;7 J/ A! H5 f: z# u9 F& s8 P
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);3 ^! b$ m- b: j5 z5 o4 y
; S: s$ T) y/ @0 N# R2 ~3 U
1 n# q7 u: c7 z- L5 a% O. I
                std::vector<SelectionIntentRule *> rules1(1);
0 k8 l4 S9 ~2 Y. E6 b" U                rules1[0] = edgeMultipleSeedTangentRule1;- D/ g& ^0 P3 V, x* [0 o" ~( N3 V  }
                scCollector1->ReplaceRules(rules1, false);
$ k1 G9 h7 M5 M8 b' m
1 K& i3 ]/ ^* f" }, W" q
1 }6 U4 F+ a$ I5 e, I9 @* V/ e
                edgeBlendBuilder1->SetTolerance(0.001);
* L2 A! [6 i+ u# |
; I# ~+ M! G) V& C1 [& P

7 {! n- R3 @7 z0 t                edgeBlendBuilder1->SetAllInstancesOption(false);2 ^0 Z2 c1 V* \8 q7 U

! J# x$ k5 O6 W! k- P

! v& W# F, q- F2 D& w6 M6 i                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
+ c% n9 \. j8 {& z- r4 v
. C+ g4 Z- m1 c

7 B3 a: j! C+ i& |- K4 @9 f                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);2 M+ d. H% e, F; V- h4 `+ [( c
3 m- F# X4 A9 B0 B
( Y+ k+ W3 h, O6 k
                edgeBlendBuilder1->SetLimitFailingAreas(true);
# g& {# F: n8 u2 c7 E; \5 e3 D7 @5 \! F" _& H7 _. H! j
1 j0 m; _8 ^' p! s$ H1 R& m* N) c
                edgeBlendBuilder1->SetConvexConcaveY(false);
$ a+ s0 S& Y" }3 P
# U4 ~8 _  z( z' i% |

: [3 L5 r* Y  F                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
) y& Z; T' [9 G/ |4 Y6 ]& H7 W4 V$ j: {3 Q4 u
" I0 x& J: ~( k2 G! p! p
                edgeBlendBuilder1->SetRollOntoEdge(true);1 Y  b# g) K9 H# S, z3 F7 A* w/ X
# T; x) h* A! u1 T9 W

; a8 ~6 G7 V( g( b                edgeBlendBuilder1->SetMoveSharpEdge(true);' W9 f# ]8 v  l. @  O8 r

' j9 W8 e; r7 G. O: u% k; w
& b) r' h  W2 W7 H3 n' v" g
                edgeBlendBuilder1->SetTrimmingOption(false);  W0 o8 f6 `( P4 q" Q

+ s2 ~/ E  x" Q+ K: A9 I

0 t5 B* k( O) w/ g* T                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);( A+ V) [  v0 p) U0 S' I! |6 v

; b0 z# I8 q9 e& B& F% B+ h# s5 _
( q9 s$ H4 i: w/ g$ R
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);$ X4 ~* B+ l. |. L4 {7 u4 x+ S( |

8 i2 e% R& L- Q  i" q. _& i
& v8 [, q" b( C" G+ |. f6 t0 d$ d
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);, E+ K, q5 R# n6 D  X: @
* P2 T& s' g: z3 Z

+ F7 J* X4 E- p4 {  q                int csIndex1;
7 g$ M& K- n, k+ w9 u% p3 @1 a! r" x& ?                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
6 o, ^$ A8 H0 ?# U. V/ _  q8 O* v2 T
! n- n$ @6 @5 J+ N* c# e
                Features::Feature *feature1;
8 W, G7 q# a" x4 |4 C0 E                feature1 = edgeBlendBuilder1->CommitFeature();
8 r# Z" n+ L# V0 K
  D0 J7 N- a# W

7 ~7 u# ~( P7 i                edgeBlendBuilder1->Destroy();2 X, W- v& y0 o6 P0 _! D9 P

4 n3 T; |/ y9 y' K    }
( d" V1 R2 G5 N% p    catch(exception& ex)) A6 |3 v  @0 l7 \% w
    {; `" I  o; T) b5 _. x
        //---- Enter your exception handling code here -----2 \' r! F. l  y& j
        errorCode = 1;
& v* L" C# L2 ^  F; g5 C/ q        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());6 V3 i( x$ P" j
    }  H% E0 t% f# Z7 o6 Z1 c" c
    return errorCode;
+ Y" _2 R$ X, E& o) B; b}

+ D- [# B7 k+ k: l% a1 k* x- u/ }
( Y# s: ~. a0 O! q  _
说明:因为字数有限制,这里只贴出关键代码。! R8 x" P& I7 F* M2 u

( P* j0 Z2 {# |: {4 ?& Q, E
  f0 P1 r$ p2 V: @- v6 S
) y/ u2 U6 g4 Q2 F' \6 k1 B8 |
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二次开发专题模块培训报名开始啦

    我知道了