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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

# |6 |4 y; \) K! i0 l* n. B5 S3 lvoid selectedge::initialize_cb()
) [. w  t' e. b{
; `5 m7 n% j1 R9 F7 O    try
' p$ }% I( k: i. u3 S( X3 p    {
3 [, F6 w! Q) i( w6 a' l, H5 k
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));* H2 W8 d5 [7 I  J2 j
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
9 _& n% l) H5 y9 H0 j" s8 N9 j        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
( p8 ?5 O+ h7 b  c    caTCh(exception& ex)
! G4 ~: E& H; _" t& S! m    {5 A# H" ?' M& F4 T
        //---- Enter your exception handling code here -----
7 X( g4 d6 H8 g6 i        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
! m5 e3 v+ M; G0 w    }: I; |9 Z7 e' B3 F( A
}
* T/ c5 k1 V9 ^4 Y5 S; I4 ~" G5 A' ~: O; ~) i0 Y/ J
int selectedge::apply_cb()
" g! y; Z' b0 R" \* G/ a) P{& z) q; |* y" s3 H% A* |1 R+ z6 n
    int errorCode = 0;" T! _" r( _0 X, g6 I! Z
    try/ U( z: t6 w1 R/ j) c  A6 i  T
    {
. B) ?4 u: j6 D* ?6 T! |8 W        //---- Enter your callback code here -----
$ T; s/ H, V5 m" g" T& G# X, N5 p7 A1 }3 J% R1 J7 S7 k+ `1 D* Z
& d; P$ O& L$ |/ L

3 m: f/ v- V( W6 K3 M2 D                Session *theSession = Session::GetSession();
6 \9 R+ p) |: I3 ~* n9 ^6 `                Part *workPart(theSession->Parts()->Work());3 S  n3 q4 [7 c% y& I
                Part *displayPart(theSession->Parts()->Display());9 I9 A3 n0 l# r$ u0 X. d; j

# Z- H7 C6 `5 _8 g7 P" |' _. A
3 n# t( G* j+ U" y9 ~' E7 W
                Features::Feature *nullFeatures_Feature(NULL);. {. }/ j2 ^6 g9 }
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
8 M, }" r+ u) f$ R0 V( y7 u6 k5 x+ y                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
( C7 x- E$ `7 e9 o5 b& r1 G/ n  E3 S" h4 n' X
( k8 b- u" i: |5 R" T/ D$ L' `' Z
                ScCollector *scCollector1;/ I6 B& j2 r1 d, j# W  `* K
                scCollector1 = workPart->ScCollectors()->CreateCollector();) G/ e# }9 F1 X+ |$ s9 P: l

9 I) C  r$ ?+ O7 u) p
+ F& ~6 K7 F/ p# u
                std::vector<Edge *> seedEdges;
0 E; F7 f6 T# m               
8 [0 r$ p; g2 f2 N3 w                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
, E( R/ s* e* U8 b9 S/ t+ f                for (int i=0;i<selectob.size();i++)
) A( a& h. C- z                {
6 Z6 I# Y9 l1 x5 Y) E                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));# F2 M8 @8 Q& e" v) ~; y
  }
% F8 ]7 }/ t1 C# Y7 k/ O# i
9 P) W2 C9 P/ f0 n1 b; |# z  double dia = expression0->Value();            //获取表达式的值
$ f6 }. D$ }. F) L6 g1 j                stringstream DIA;- `% Q! k/ u, J
                DIA << dia;
) A7 }1 y6 S% Z% Q$ h0 ~2 E4 Y5 N. g% |

3 d) a; g: {0 g  Z                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
5 @& z# }& K! D) s                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);6 O# ~9 _! ]) E' Z+ v, ?

7 l# r8 R% J) R
  h, ?2 }6 v9 ~- K$ \# N2 y. Y
                std::vector<SelectionIntentRule *> rules1(1);1 x' G3 @" ?  F9 y5 B
                rules1[0] = edgeMultipleSeedTangentRule1;. E7 }& Y8 ]( ?2 R' `6 |
                scCollector1->ReplaceRules(rules1, false);
$ o, X& C* ?9 S9 t- S
# E! |- m: J8 E5 h2 J: ~

7 ~% k% ?6 o' z                edgeBlendBuilder1->SetTolerance(0.001);
! P0 F* A8 O; D2 @; f, K. S
4 G3 r# S, R7 \4 D8 u  g. k2 X. ~
2 C, K  |& i7 u6 `6 b' p
                edgeBlendBuilder1->SetAllInstancesOption(false);* p6 m& ~/ B/ g3 M! h; G7 y7 u4 @

5 U5 L0 y" `$ ]4 F4 q& D  T
4 |$ G8 E1 f( H+ B, }
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
  `" K3 G" }0 g$ n0 D
. _; }, o; V: q
) E2 K2 d9 x1 h" }
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);" a2 g" b7 X, U' |3 w, h
+ Q" i9 X+ @& r: r- }" c" x1 D

: l1 C+ z2 c1 U2 W# H* `* h                edgeBlendBuilder1->SetLimitFailingAreas(true);
9 G9 s, r0 g3 j  @5 ]$ L4 }
3 F% ?/ T3 j- i% W
& x8 u  c/ q* N6 g" J- d
                edgeBlendBuilder1->SetConvexConcaveY(false);
( b+ L, Y1 B" W, J6 c9 |: u7 g- Y9 e! u

' [# g% E3 N% j, t( v! Z  D0 q                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
/ a2 ~. M( @6 a. H+ Y- ^4 X0 G2 |% Z5 }7 d* p0 a, _

' d9 h( a& Z7 g7 Y% q- K* q                edgeBlendBuilder1->SetRollOntoEdge(true);9 j) J% K5 I# r$ Y8 O# e

2 f* z  l) B5 S- V; p: d
% a  s. x5 |. v! Z* i
                edgeBlendBuilder1->SetMoveSharpEdge(true);
: r7 P6 |3 ~: F6 ]% H6 G; P) F; F4 k' ^& `/ h3 @
5 \6 P# T% @" h* i, }4 E: J0 d
                edgeBlendBuilder1->SetTrimmingOption(false);; [  I* p. g) F! D* T

  w+ j& ?8 s- S, s1 U

  }- o! B( Q9 Y/ d' G                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
* u; f) u' p- }5 D. ?4 L
8 `( S* N% O* p, P. Y: _

3 x0 ]8 {0 v5 Z  F: d, m/ E                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
( n" q( l4 Q) h! ?' R) F  R% n$ c8 @5 V5 b. e6 x0 p
8 `9 z; C' @- f6 d1 T
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
" m# Q. [) c; n8 V1 d2 \; a
/ n* M. v0 E$ Y: U. N: P! n$ F

7 ?$ w. F! }. p% S, i; \                int csIndex1;
# [+ D% t" v: ?                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());5 L- H0 ?* |2 g, i* s

5 T7 M8 e1 N: `
3 J7 u# |  x& }1 [$ l7 L
                Features::Feature *feature1;# O& g7 K5 e% O
                feature1 = edgeBlendBuilder1->CommitFeature();
; I4 f1 s0 H3 t+ x8 q) C+ f& S, v3 L# [$ J4 C6 C# N+ {. V" h8 Y
2 b3 @& Z! y  W9 Q& o. w- U+ r; y) ?1 \
                edgeBlendBuilder1->Destroy();) Y- q$ ]( e! R% H5 F

: Q  v' D, v7 J( E; C2 R7 e    }9 ~. E* H& D5 i( Q3 s+ T8 P
    catch(exception& ex)
  G  o3 J. g2 j6 o( o    {2 H! ^" y8 w' i# W1 @+ u
        //---- Enter your exception handling code here -----
0 O- j( e2 f* r# O+ l5 p/ H        errorCode = 1;9 c: ?: P6 _  _1 q' z
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
( E  N1 m1 [/ w    }  y5 X; L; g5 }" S; P
    return errorCode;/ t0 p+ n  a: D! ]) a  y
}

3 _5 Z; h; H0 y: \7 k0 s& h

6 P/ o$ X. N. P) y2 w6 h% e+ ]说明:因为字数有限制,这里只贴出关键代码。1 l$ w0 y9 ~% S8 n2 e' ?
7 X- Y  p$ |% P' j6 F4 r$ i2 ^7 K/ l
. J! m+ Y( C# ~" C, Y1 }' W

- o) u) J, G5 F9 n) B
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二次开发专题模块培训报名开始啦

    我知道了