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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

$ d( p, Q* k3 X0 gvoid selectedge::initialize_cb()
+ F5 k# V8 h! q5 p+ [{5 r. E7 ~0 B  H" a* G9 s2 H8 k
    try, f. [0 ]) d- ~6 W& Y& \( a
    {

0 H, M/ z9 `$ ?9 J* g9 M7 N        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));' E% l. Q4 O. y1 g+ ]# r
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));" H. |/ q5 K. j7 [7 F% ^* O9 c
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
! i( d7 i9 a- I( X    caTCh(exception& ex)
, p8 ~) y$ g6 @- |    {
% V. j% t! Z% Y, C1 h        //---- Enter your exception handling code here -----
7 P# `8 {! |3 F8 J) D) Q        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());8 k! b/ ]$ ^( Z+ z
    }& ~+ c( d# r, s+ S- z7 H9 d
}6 ~; z% Y9 e6 ~  V; T9 p7 f

( N: h0 @4 U" q4 w3 Mint selectedge::apply_cb(). N0 x! ?. u- ~+ V# ]+ J2 B8 P1 L
{
9 d& R! r0 J" R) @" e9 S8 _    int errorCode = 0;1 P# u0 V/ h5 c8 x$ O( ?
    try
- f1 z( |$ g5 x2 A& U" R. @1 m8 t& H    {# ]! k6 f; ^" _3 l4 U% A
        //---- Enter your callback code here -----: C  e, |7 N7 m
# n  t0 t( ^# ]2 k" ~7 o
/ o# c: d" q" ~" |7 C
3 {& ^0 x' A2 L) R7 c5 A; {  o' z
                Session *theSession = Session::GetSession();+ A- \- G' `3 p2 m
                Part *workPart(theSession->Parts()->Work());
- p3 q1 L7 }& y- r% L, b                Part *displayPart(theSession->Parts()->Display());
5 O0 F1 n$ m/ G1 g$ X  @& Y
( Q$ @# Y" x/ X- R( a, r# c+ [9 Y

7 d9 @1 @1 \8 @                Features::Feature *nullFeatures_Feature(NULL);# p9 `% S2 q. l. Y
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
& @: o7 _! b! i* R9 d                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);$ ~% j1 q' I' |

# L& l" e. P0 q7 R

5 D* e( n2 q8 H- F; @. ~( n( x                ScCollector *scCollector1;, j* I: u: c* t: u' E; O
                scCollector1 = workPart->ScCollectors()->CreateCollector();) g; z$ ?& W  O3 x& a

/ c" V5 v. M6 r8 L

4 |- `9 c4 ^2 @: u# d" q                std::vector<Edge *> seedEdges;
: ?. S8 r6 z' D* r3 |! s                " O. C: M* j0 S& e. X1 u# ^4 O
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
6 Q' e0 t* E$ q/ d% G! H' ]                for (int i=0;i<selectob.size();i++)5 _0 V  p9 B! z  p) Y6 n
                {
9 {/ q" s' g; s  S                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
- S! t) V/ L( {* L3 N  }, x% n, A$ m* m2 @  t
, w( i+ {: i/ _6 k. U6 @+ G
  double dia = expression0->Value();            //获取表达式的值
) @: r3 z! U" T+ T' C" S                stringstream DIA;) t2 p& x# x+ r2 k4 z
                DIA << dia;
8 G( S& t. o) n# c* L- b$ [5 i% P8 L) v7 `/ e, c/ W7 b$ c

- P# x  _( Z% t" k9 E* X8 y" n7 w                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;1 r4 g' \0 R" {1 o9 \
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
) \% F1 F: j: F
2 |+ q8 j  [+ t
( k4 k$ [" }, `" p" l' ]) @9 w
                std::vector<SelectionIntentRule *> rules1(1);1 K& @$ E- H" s4 Y5 _$ s
                rules1[0] = edgeMultipleSeedTangentRule1;1 r2 N2 M$ W  y4 j# _
                scCollector1->ReplaceRules(rules1, false);
1 A, I: T' `# J6 R# A
' U, `3 V' |; O* S
9 r$ I  h7 j" }2 s) d
                edgeBlendBuilder1->SetTolerance(0.001);( v9 R, }6 C1 X: q; q4 b
8 p3 m  ?: L  @. A* b# ~) `
- P9 T3 v6 h0 K2 x. ~
                edgeBlendBuilder1->SetAllInstancesOption(false);
' H" Q/ G8 x( X# H8 ]
" v6 T, N8 J& U4 e- F

, P' _7 h4 S% ?  A# N: [( d" r                edgeBlendBuilder1->SetRemoveSelfIntersection(true);, V! c3 v2 }6 R0 }$ Q
7 K0 {, T/ _4 H0 |% f

% T( o9 @$ z& u" I0 f0 ~                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);" H/ o* h/ \2 H7 y+ u# s0 m

# A3 q6 s+ G4 D* g# A
7 {3 f0 g* E  L( w# i
                edgeBlendBuilder1->SetLimitFailingAreas(true);
  g2 _+ M3 i* R
3 Y1 i( ]- g5 n6 P0 \; v3 V

! l9 h: S5 R4 {. e1 x! y# i                edgeBlendBuilder1->SetConvexConcaveY(false);' b5 x+ a; `! ?- `
3 W. i* b" \5 Z, ^

& V5 n+ Y* Y( y$ s$ I. K                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
- [: P( R& r/ J# g, i% i
3 W) L( R) K2 N1 }

% J  X9 C% J9 {3 c9 ^: a                edgeBlendBuilder1->SetRollOntoEdge(true);
( _! U" v7 ?" f0 Q- Y7 d4 ~0 ]' S/ W6 H2 l

( t0 ]- s( A: R# U1 \                edgeBlendBuilder1->SetMoveSharpEdge(true);
: d' K8 x' N) w+ |' J
- v+ Q6 [# c$ T& _6 o4 W
3 }, ?0 S$ N8 f6 C) y6 H
                edgeBlendBuilder1->SetTrimmingOption(false);4 h7 x1 x& g+ H2 X7 |/ R  I+ x

! ~' l3 S; ?1 u* w7 ^
$ w. K2 D) x" l6 i' u$ n8 ?3 u
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
! U8 l* l) G' Q: e7 K$ }$ I! @+ j! s' Z: Y

( ?: N$ F% \2 @3 u& j! R5 p) _                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);2 K& ]' X  T, v
6 F" M' J+ F" w& a5 Q7 q
+ @( v5 X0 Z2 h1 {. s
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
3 b6 ]! C1 Y, h
- @( l; p. N3 w; O2 T: ~' q

- J: w9 w8 g; q. l. N( ^$ S" w                int csIndex1;
' W4 w+ x* v$ w0 @1 f# U% @                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
# m  \3 v- _4 C3 T, z
( \1 Y  Y. z2 ^$ A1 J) q% r9 }

" Y, a! R& W% R6 G7 X! \                Features::Feature *feature1;4 K5 e5 i/ H+ I( Q
                feature1 = edgeBlendBuilder1->CommitFeature();+ L  j/ T+ p6 e( {& t+ t# q! K
3 E# g3 y9 {& w/ O) A% D
; d: y- ~2 j7 L* d$ W1 k
                edgeBlendBuilder1->Destroy();
* x9 t& ]/ d9 ^
& ^7 I) w3 N+ X; s0 a" {1 J    }5 U: I0 D3 W3 S' |/ x5 }
    catch(exception& ex)
* W: e* ~1 u1 t* F8 l5 Y) J    {
* W! ~% O# v1 @) R* O2 C  Z        //---- Enter your exception handling code here -----2 ]- c$ V( P9 v. I. J# Q
        errorCode = 1;
7 A% a4 a+ Y$ R% k0 J        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
8 M. |. {  ~2 }; ?& G% {    }
5 l1 Y9 B1 A; A" e9 n. ?$ w    return errorCode;
6 p' Z. f. D# F}

5 M" g7 p3 D- j8 H" D

" E5 g/ E3 [  c1 u. D( Y说明:因为字数有限制,这里只贴出关键代码。
+ z8 Z* r+ `. r8 k" P) e* a( Q
+ _4 u9 {5 h4 @6 C( u& {
' J. R* s! F- L# x8 E) S
# C  S/ ^. }/ z1 a5 p
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二次开发专题模块培训报名开始啦

    我知道了