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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

" W: j; E+ g; x( r3 u* zvoid selectedge::initialize_cb()3 K# g! J4 q4 z' A  I, a: S7 Y
{! f! q" T5 G4 ~) H0 a; \- J: s
    try
: H5 x* i+ z" X1 K7 T0 N    {
; y1 d* r% `8 K6 L+ g; C+ U6 |- z: p
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));! \  q* I8 |! ~* E' t/ C. T. D0 l
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));: b  {5 T8 A4 G4 G
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
3 q. w" W; i( K" N! s    caTCh(exception& ex): e% L9 ?7 Y3 }2 h) z, t  Z
    {
- s5 E0 e6 y  p: Q        //---- Enter your exception handling code here -----
* k# p9 v2 I8 ]: G- v7 W4 W        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
, Z3 Z  h( D5 j/ B9 g" ?    }; n1 a% e0 E6 U7 y# c& _9 `
}9 o/ ^7 `0 ~1 n8 o) o+ r. l8 r: @

& z# ?* b9 ?, z* mint selectedge::apply_cb()5 K) a! x% R' s$ ^( r
{5 a8 H* S* D$ Z7 r* J) s# F4 ?, p" b
    int errorCode = 0;+ {. m( \1 I: h0 U# c
    try
* g  J! E" ?  K    {
1 ]1 ^$ P  P. `/ j        //---- Enter your callback code here -----
+ q% |" m. {1 P: c- |" Q8 s9 P8 c( u/ Z: \2 [# O7 c

  V$ n, Z2 m! m( G8 D" C8 m
; w& J2 B6 w6 Z/ ]3 U; B# n
                Session *theSession = Session::GetSession();" i# K  `$ X( s
                Part *workPart(theSession->Parts()->Work());
' Q: s' T6 ~: ^: w& E. u                Part *displayPart(theSession->Parts()->Display());! u8 ^0 x/ N3 l: t9 `
; i1 J% E( l2 ^1 e5 ?
4 l7 A3 @/ [  n9 H) d
                Features::Feature *nullFeatures_Feature(NULL);
; Y' R" o# i. p4 X/ Q0 h                Features::EdgeBlendBuilder *edgeBlendBuilder1;
9 N. n/ M% u$ S                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
, F% D0 ^: r9 v" m- L
8 u, a; _) P( @, N3 Y! ~8 N

1 B# q0 y9 |0 d4 b- B                ScCollector *scCollector1;
& p4 ~! v0 d5 Q                scCollector1 = workPart->ScCollectors()->CreateCollector();$ W# M; d" \3 u" e* K, X- ?

% K% U6 m8 A% {% E) n$ Q2 E! ~

9 H/ |/ E+ ]" {" i! s                std::vector<Edge *> seedEdges;6 f% y+ A' o% b( S
                3 A  I& B) C. Y- u+ f! j
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
3 b; _( o" i8 t0 R+ v+ L. ~                for (int i=0;i<selectob.size();i++)
  a1 J/ c+ Z3 S3 _. v                {
6 {( z" P- M, j% a                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));: _* c1 Z& ^' R: j
  }8 S# H2 c7 ^4 W8 z; @8 k- c0 \0 D
* @0 q- X# R  g2 t
  double dia = expression0->Value();            //获取表达式的值
% `. U# P* m/ Z1 {( l' m( k                stringstream DIA;1 P* Y9 y9 ^4 ~, ]3 B* O9 g
                DIA << dia;
5 m( U' Y6 e, Q# o3 B- ?/ K* k! ]
% m% p  k# A" J+ _1 X0 G
5 X* y) _; A6 z  U
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;5 d$ K9 [2 i2 S% u
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
3 m; P5 ~+ R2 e* h) U$ B- z" s1 A
1 Q6 o& R. z5 P# y- I9 l2 C5 L

* x  y! `6 C% [# a                std::vector<SelectionIntentRule *> rules1(1);$ F% E. T4 d, ~, t; z
                rules1[0] = edgeMultipleSeedTangentRule1;
" B2 L! {$ t, s$ g3 W! u                scCollector1->ReplaceRules(rules1, false);+ ~) a5 \/ S# X
4 p  L" `/ s7 P# u$ U) s" R
) z; A4 n7 H7 q3 c
                edgeBlendBuilder1->SetTolerance(0.001);
4 o# l# J' a( j; i3 u7 p
# Z# w, R$ S. d( k

' j+ }5 T& ]. q, X                edgeBlendBuilder1->SetAllInstancesOption(false);/ O5 p. z4 T% n6 u% V/ g

' \3 K/ Q4 n: R3 {' b- `

4 B9 O$ \* j: y2 m% w% x                edgeBlendBuilder1->SetRemoveSelfIntersection(true);9 s+ `: ?! h# L" h8 `' {

6 N/ b4 ]5 T( p# K$ v! r

* s9 u4 @& j1 t& y" t& F/ @, R# i  f                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);4 Z) w1 o& ?/ M* w

! Q' n& f* K: x( r3 f  C7 ]1 v
0 `) M% D8 `/ E! G3 @, @
                edgeBlendBuilder1->SetLimitFailingAreas(true);! a! m8 _( {8 I8 U) _

& B7 K1 h9 |0 u" W' Y$ t( c& L

: z) Q, |. ]" s: d% \) ~& v8 a0 L, N                edgeBlendBuilder1->SetConvexConcaveY(false);) G% x, |  [( x3 z

4 F, R0 I- |8 p7 Z

' i3 n( I, t5 W4 H1 u: e' Y8 o                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
1 _/ l% t: B) {# h" T
' k. h& T; a3 b- S" b
7 @! O, t- u' U5 l
                edgeBlendBuilder1->SetRollOntoEdge(true);
" T0 w5 \  G8 \) e" E8 ?9 h' F0 i3 j. H3 ]! M

$ w2 ]) S, ^4 O; ?                edgeBlendBuilder1->SetMoveSharpEdge(true);. @, s7 k6 V( H1 e& p2 h

1 _3 f) L1 Q8 @$ ]. [1 \
( Q" j) n( ~- Q$ T3 T) I$ j
                edgeBlendBuilder1->SetTrimmingOption(false);
* v4 G& Z3 z) `1 E( R8 J2 |" M8 u! ^2 l2 w( E# H

8 w' s, A, g' j) \  d                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);- F5 y1 W- y$ H
& u9 P) N5 k6 Z9 ]4 G' x+ [

3 K  [& H2 u& _1 I& F7 h                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);. v4 R$ U- m. ?+ b: q4 F; @- r
0 r; O+ Y4 k  P1 Z' H6 l7 I1 R& L( B
, }9 [( ^; h6 q3 A' a4 d
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
6 I+ y0 n- R$ e3 J6 ?' O. z! F% q* X- s, A( a2 ?
  [/ v6 @" w4 D$ }
                int csIndex1;
! L; G2 a7 F  W) W                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
5 C7 F4 u4 R, u8 \
( P! O3 u  I2 X# d( u

( w9 S9 r5 S8 J1 Z0 c* t                Features::Feature *feature1;  y' ]9 F. B& s
                feature1 = edgeBlendBuilder1->CommitFeature();
% r* V1 r  m6 A0 @
/ r1 a! x2 h5 }- _: H

+ s4 t& F9 y& l: q5 f8 s$ d                edgeBlendBuilder1->Destroy();
6 L: S. E7 }1 c( `$ l4 Y$ Q
% A1 V2 T. }9 ?9 c$ Z    }
! ?+ I+ m+ p0 t* _    catch(exception& ex)8 ?  j$ v2 f5 I6 W
    {% R# s6 a2 X  F! B
        //---- Enter your exception handling code here -----
' |% H7 L' M: t% b8 ?* j: x5 e$ W        errorCode = 1;
1 E' L% H/ ^3 ~# q+ l, E9 ?' J        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());! t% H# B9 s, A: [) i/ a3 h
    }, p8 I& F2 x+ }. |1 l
    return errorCode;+ V9 Q# K% N6 q4 a
}

( G) U( G( D% n  }& r0 J$ C
6 @1 G9 }$ u' Q/ d" m
说明:因为字数有限制,这里只贴出关键代码。0 s" z4 ?2 _0 i$ B) G9 |0 X

8 x6 ^7 I0 N3 j
) X% q8 k, h% s3 y. e1 T' w+ p
) Q9 r  M8 U' X7 V
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二次开发专题模块培训报名开始啦

    我知道了