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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

& m9 y( H" T* `7 ?void selectedge::initialize_cb()
- I; O2 N$ v* |3 u/ E' b7 A{
+ v4 m" \" Z8 j8 A+ Z    try
4 y% ]9 j. o; h7 J6 _* l/ @, k    {

0 f& J! ]0 H, c. J! R# ~8 j# v% E( {        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
/ N/ D) E  H, k4 I" m        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
8 Z. ^7 H$ z/ P        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
7 m7 A9 {/ J4 z' U, I    caTCh(exception& ex)5 e, V0 I3 Q: L( q
    {- j$ C$ Z1 p% o
        //---- Enter your exception handling code here -----
- g$ M3 s& [) f        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());' M9 e" [. O' K, |1 p
    }. t3 }! E6 D: t3 t! B
}% v) W9 a) \& s% J" m& H

/ M) Y6 p0 l. @- s4 Iint selectedge::apply_cb()
" }1 j% ^# {, G- m. y{8 N2 b# X# a- j4 ?0 H: d8 d
    int errorCode = 0;( R8 Y% A6 S( Y$ Q
    try5 N2 ]  E/ g3 q# s5 t
    {8 I1 R  k" y0 l$ }8 W4 b& M- S8 M
        //---- Enter your callback code here -----& z3 u+ W* B* s( d) K4 J2 V

; P) `8 p+ Q9 Q4 @# t/ B" p" _4 {3 v, D' F

2 t5 {# x+ k$ ?7 D                Session *theSession = Session::GetSession();
, Z2 T* G8 D' a2 e2 `2 y4 ~  o( n                Part *workPart(theSession->Parts()->Work());1 b9 ~$ Q. a6 s9 N( K- E/ C
                Part *displayPart(theSession->Parts()->Display());
- P$ m5 h9 I  O) q
8 a$ {9 ?+ L- u+ l- {2 X

, l/ M+ W3 A# G& X( f                Features::Feature *nullFeatures_Feature(NULL);9 f4 e' F2 _7 w
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
6 J% A7 n& D$ T2 J6 c3 A                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);. p- Q. ^+ E. O( X) K
. T( x% U/ r- {3 r' L( t  i
9 E! H% {  N) O7 I0 g2 ?# w
                ScCollector *scCollector1;( X+ I( c. |- e; T: x* B) r8 i
                scCollector1 = workPart->ScCollectors()->CreateCollector();6 A& |9 d. G. F2 |% F$ L/ o
& o0 g) n5 \8 L, U" K
1 d7 @- W2 j( v9 r& f
                std::vector<Edge *> seedEdges;
- u% U- @9 k( s- N5 S5 v9 U                9 F7 K9 E3 ~/ y  n0 [
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象- d" h/ }# |. a7 U) a* c
                for (int i=0;i<selectob.size();i++)/ T: b3 H& f* a; `
                {& Z* r2 N, O! ~7 r8 S4 q; K- ~; |
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));' W8 h2 s- ^0 J+ |: T" z& @
  }4 l' F- [7 s, F( }( g% `
# Q) p: ~! L6 T0 o" }2 F+ o1 |
  double dia = expression0->Value();            //获取表达式的值* d- @% n3 F# J8 H9 P0 M1 ?
                stringstream DIA;
0 g( j* E" g) e5 p' d                DIA << dia;: ?8 b3 N* ]6 ~3 l* A: R

" D7 s& _6 E9 j: v0 Q4 b

' T/ n# v$ i% V9 y3 u* q* Y                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
/ _0 m* }2 H+ G/ J" }                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);, p2 x# a9 [4 J, y) ^- @( }

/ ^2 R! M7 I5 h7 `) s4 I( U4 K
- ~3 t: d: S. u3 U5 Z; ]: N
                std::vector<SelectionIntentRule *> rules1(1);. ]( h5 p/ G6 D) f+ D
                rules1[0] = edgeMultipleSeedTangentRule1;
2 F# v) p- G% I9 R                scCollector1->ReplaceRules(rules1, false);4 y* ]/ w' O9 U: U; o  J4 ?
; \  [( j! A$ j, W% o6 O& Z
& f0 ^# G0 G, |3 a& _, ~, `. N5 m9 e4 |/ B
                edgeBlendBuilder1->SetTolerance(0.001);
- @3 q1 A! l- E/ [& }2 m- y" c8 B+ L

0 F5 q, S, Z% Z0 k( {( a                edgeBlendBuilder1->SetAllInstancesOption(false);, j- c# w# _( K$ g+ x

% c* Y0 U! C* Y6 c
0 r) o; W) v* _8 U7 w
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);* O4 W! h# [+ B+ l2 H

) m5 G( ?6 ~) z3 u: t

; n% g+ {- l$ N" z% Z                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);" Z4 I2 P; Y0 }
# q- m& B0 W# f% N# Q3 O  B( q
% h" v8 g5 r( [+ ]( N2 i7 r$ Y* d0 Q
                edgeBlendBuilder1->SetLimitFailingAreas(true);
$ ?  [1 V) j3 J7 l- P6 G
. Q% ?; ?) G/ Z9 U5 G4 T  K
' H# @, F/ y9 J" ^& @
                edgeBlendBuilder1->SetConvexConcaveY(false);
4 x' }; K; c1 v" n! X
; p. j  m: ?  `- ?  M7 U* v
" T2 `* |% e8 K0 a
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);7 I' N: f, `" \
' z1 s6 j9 J4 A6 c# H

$ w& u4 @* b( Z5 W7 w- c$ ~                edgeBlendBuilder1->SetRollOntoEdge(true);
& A% W, G, p+ G: J$ _+ X$ E
3 t' w; p7 P/ m7 A

8 ^7 e: b) {( B! T& m/ q6 B                edgeBlendBuilder1->SetMoveSharpEdge(true);
5 g; Z' D% V, c' w4 H5 g: X5 ]! b  Y% `

9 v  X0 M* O" `4 u  T) j                edgeBlendBuilder1->SetTrimmingOption(false);- D4 @2 |7 M( F# h* Q' P. }. W

* D' d3 v2 E4 N: l  F

, q' D6 u% B& _                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);! G5 c5 z% F3 O4 c) i( y; F% W

+ T+ }" w! F( e4 Q* {- j
: S$ B3 W% f- |1 r6 Z' P
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);: [2 O8 \, c: {9 R* W) e  \
7 G. ^5 ]1 L3 n
! o3 v8 r0 o: z7 r2 b) A
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);/ G7 E: @/ L4 V. \, j3 P
' C, I. b5 x/ b) u
3 Z4 b$ W; ]( J) V) ^) }
                int csIndex1;8 }) M- G  @" I' J3 z% Z0 @. }
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());' E  w  G& N! _7 ]/ ?% ~9 ?$ O

& p- c% \4 S' S. k; {6 e0 V3 R
0 P) b2 X! o  G8 @% U" z! w1 y: F& ]
                Features::Feature *feature1;2 {9 }' h$ F0 S: |8 K7 s; \
                feature1 = edgeBlendBuilder1->CommitFeature();0 Y# t4 i7 N/ B" J- b

* x5 l" N" @* l8 {; j. x% _

0 J2 h0 w3 V5 t, k0 v) r                edgeBlendBuilder1->Destroy();
" o( F. g9 U/ e8 K
  r- A& |: r2 i    }
9 g- e" B' f9 C% m1 D# P) w, `1 w    catch(exception& ex)
7 i* d! C" q; `' F+ y, X    {; t# O7 P( l( p- C
        //---- Enter your exception handling code here -----
  X& \* ?* _1 a$ T7 Z) t8 ?: N% ^        errorCode = 1;
6 D. Z. g# Y& R        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 W9 M  G0 H. K
    }- _2 l: I  V8 a# x, u- P$ T
    return errorCode;& `3 F5 F) [& |1 @
}

9 d+ Q# Z5 J# H; ?1 a; M

0 V; F- i. [$ p$ Z' F2 F: L说明:因为字数有限制,这里只贴出关键代码。
; f  t& C& A: T4 r4 V# g  X
1 l+ X' T& t. A, [: _  I& r9 a; z+ D) s1 \, Y" [

% w2 ], G( {) h
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二次开发专题模块培训报名开始啦

    我知道了