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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

! ^# D( A# I7 y; Yvoid selectedge::initialize_cb()
9 u. s, A0 a# Q2 V( c  u{
* u( N$ d, V7 s- U5 l% e$ Y9 Z+ m* A3 k. U$ m    try' Q% k) w3 [) F( ^3 ?1 D
    {

0 I1 W0 K8 l" ^# Y1 F        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
" J% @7 ^) G- p" q# n- \# w% c        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
$ F& W6 {0 D. ^3 E7 e, V9 Q2 J        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}% _' a6 G: w( {1 F: X9 B7 I2 k# G! }1 f
    caTCh(exception& ex)
. U/ X3 n5 H8 y& ^    {
$ u0 \- t. D# J8 V9 P        //---- Enter your exception handling code here -----$ i/ g# i: m8 S7 L# O2 `7 d- J( @
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());. z  }4 @+ C; f1 ]# ^! t$ t* u
    }  v! S9 [( h/ f5 n, V2 h) x
}
0 l( E: r. k7 E: f
9 N6 |6 ~- ?& h! Sint selectedge::apply_cb()# D' s, ~* Q. |' x- O
{/ v0 x4 s6 Z9 D- }" l3 W) ?/ l7 p$ [
    int errorCode = 0;8 Q! w. j% t" y5 X' a5 ~' K$ [
    try
, _" ~; B2 F' W$ T/ y2 ]  k    {
/ ^6 M  {: G4 r1 I3 t        //---- Enter your callback code here -----6 v( ^' \9 S( Z. y8 }

/ z1 |9 c, K/ S7 W
3 o6 T# \( ^! N* X$ Z( W
$ g9 h/ H0 F" |. Q
                Session *theSession = Session::GetSession();
4 G* t; I0 ^+ Y0 g8 L                Part *workPart(theSession->Parts()->Work());
! n; o0 `! k( n2 ?, b                Part *displayPart(theSession->Parts()->Display());
2 D* m( P2 t( [& q% r! J& N( p* @! Y2 A$ i

2 l+ D3 y4 }% L                Features::Feature *nullFeatures_Feature(NULL);$ y2 _/ s1 o5 O4 G
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
& S, d9 f5 h$ ]  Z. t# g4 S' x                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);/ _$ [2 f  p4 g5 Q% O% V$ O

( E$ k1 r1 Q% H) j- ?6 L  y

1 D8 S6 Z5 H! \, k, o                ScCollector *scCollector1;) N, t  q* ~# H0 `- l2 Y
                scCollector1 = workPart->ScCollectors()->CreateCollector();$ ~; R  C: w- Y9 u. P
! {+ m, g9 U& @5 v* H

4 \# |& i$ a" y0 e; V6 E5 q                std::vector<Edge *> seedEdges;
& z3 Y' n( y3 ?/ x4 W: U+ i7 C                # `( ^- N) o& ]5 S9 T# P  {$ r
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象  G( m) [$ U: o3 s6 V
                for (int i=0;i<selectob.size();i++)( l; R' s* j* E. y, U# m
                {. k3 L1 R  ~& N- `* p5 Y
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));2 `9 ^. y- ?0 K
  }  c, r1 m' ?, K5 D

5 S, F$ G' F; H2 `# W, R  double dia = expression0->Value();            //获取表达式的值
8 Q( u1 ?  y5 g4 B3 r                stringstream DIA;
1 ~7 M# T# s, Y& r! G                DIA << dia;* x6 T, L+ l: h! Z$ I! {
% j! k# W1 a7 f! d3 W( r; X& w8 y( k, ^  b
6 q! ], L1 C. I) H2 M
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
0 b( R3 N0 j& ~9 b7 N$ U1 t: {                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);7 _5 |% m$ e; e( r& q/ i' {
+ |$ n$ ]; r- _6 l* r+ F

0 K7 L2 ]+ u& O. J/ A( M                std::vector<SelectionIntentRule *> rules1(1);8 S2 N  U7 B: l# ^- t
                rules1[0] = edgeMultipleSeedTangentRule1;
- J6 [  C2 ~# Q, |  u                scCollector1->ReplaceRules(rules1, false);
( h* ^! m# h# |6 x7 R2 Y6 D' p
+ ]( N$ _2 S2 t* i

2 L& h! k7 ?+ K                edgeBlendBuilder1->SetTolerance(0.001);
% z  S: v$ c1 @4 H- D. t  N# X9 h% F
* h0 j! q+ b( q- |, n
                edgeBlendBuilder1->SetAllInstancesOption(false);9 Z( ?+ H3 T3 A4 Q
5 {7 U8 t4 a3 N0 [$ c" W9 ~; `
8 @5 P! M4 u  z3 Z
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);$ G0 g0 v# c2 w1 B8 k# i
6 N$ K; y: Z/ C8 w- k8 O
; `0 A, S/ F( ~& @' s
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
2 L$ c3 v- _1 b3 _  i9 b2 J# ?, G. U
- o) q3 \2 m: D& V  z4 L+ J: U

0 j8 n: v3 i$ O! U% a8 W7 o                edgeBlendBuilder1->SetLimitFailingAreas(true);
2 U! k' e5 U' C1 c2 ?5 R! A4 X1 h6 g% c' u) [3 d

$ w+ `- f4 t* }2 v! u6 H                edgeBlendBuilder1->SetConvexConcaveY(false);1 J" n& }' k6 m! w4 D
. @# a# n4 z% C' H7 B2 C$ ?7 e/ w4 N

" l9 i% H- G8 Q( f                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
, ?# }5 L. L" j/ f
2 n" M2 c, M; Y. _7 w" e% g9 J

& f6 C  U: H" B: @0 Q3 V                edgeBlendBuilder1->SetRollOntoEdge(true);
9 Z5 e3 x' s2 P: ~9 |% y, ]4 K" J0 R* ^- s# [. y
+ @" T7 s9 c  g9 m1 `$ [/ ~9 ^
                edgeBlendBuilder1->SetMoveSharpEdge(true);
& s) z7 J0 Z3 E$ o1 d. ~9 i! C/ S% Q

; _% U0 u' o2 f4 H                edgeBlendBuilder1->SetTrimmingOption(false);& x) K6 Z# P9 O* j
1 K" a9 J3 Y3 g$ }9 M9 T  f" [

. y! B7 U2 F9 b6 n                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);. N4 W: l3 f* @

9 Y; I6 t' q  X: y

/ \* ^: Q7 s$ v$ D  e                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
. E/ ~- c/ K$ i+ Z' w6 j, V( k7 n
  r/ y; _* S1 Y. C2 D2 Y
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);0 D3 s7 _: N! N; i6 ~! n

+ \& f1 k4 B" {8 U* v

8 e1 |! V& d6 e3 |6 u) c9 c                int csIndex1;
2 m( p/ K" p2 R1 W6 P. Z7 \                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());$ g# O/ I* y: d2 T! e4 L' z1 I

8 K/ V! @# H* ^( K3 K# {7 D

$ I! E! U: g8 Q% D! B6 E( s                Features::Feature *feature1;
) ?) T( x- Y) I8 F% Q1 r                feature1 = edgeBlendBuilder1->CommitFeature();
3 q- I/ ^1 @/ t  W! x. d# A0 n, R( q3 B$ X$ V. w0 [

- K8 f% [& y% k                edgeBlendBuilder1->Destroy();
& n/ G% o$ l6 A* k
2 q- S+ ^+ _# }$ y' q9 m7 Y    }& q8 e* \2 I4 ?1 A8 \3 M# V2 D0 y
    catch(exception& ex)' c* X$ S* Y" r: o8 s9 l" D
    {% K& N3 n* G/ x7 j$ f  n" J
        //---- Enter your exception handling code here -----
8 l1 U' x) u+ e3 v& r% R        errorCode = 1;
1 a6 D8 R& L- o. x  i0 X        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());7 b2 d4 N8 r: n  d: ?& J& z2 ~
    }7 J  l/ R4 {+ J
    return errorCode;
8 H" h4 G. x7 S+ ]$ x}

) H9 o' ?6 W/ c2 |
- m  T+ {9 Q6 T/ Y" L- V
说明:因为字数有限制,这里只贴出关键代码。" }2 S! {( E* v- ^

7 y- T. D1 R0 M+ Q0 z" I% u, x$ h; B( W) o7 @! Q4 C$ u  _+ E
$ T8 [: f4 h3 a# |* D2 O
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二次开发专题模块培训报名开始啦

    我知道了