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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
8 x' s5 k- R% L( ~& T5 Q
void selectedge::initialize_cb()
# t6 R7 N4 v+ w8 f( Y% m{* z0 I3 j0 @6 A4 p3 M
    try
6 [# z: o: b6 S    {
8 ?6 E$ ]# n" T8 S: e
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));) ~5 Z. A- O* U6 L4 d1 L* m" R
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));+ C3 D7 [' @3 K0 {; K
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}1 N* g. E5 c, k# P7 \0 q. f
    caTCh(exception& ex)2 o2 X9 J- K( I9 o. s
    {
% A, \" F) [+ U& F+ \        //---- Enter your exception handling code here -----
$ @# S$ `3 N, j1 S' F        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
# n: d2 O# I; T8 L. m    }
' I: q8 N  W! M}
- [2 H& \  w% @4 z/ V
6 i! X$ f( t. ^4 l0 m0 u, n% Kint selectedge::apply_cb()
( {8 U% H( U9 [$ T' H{
. L& t& R4 w" W" P9 G    int errorCode = 0;* d% i5 G3 r% Q" h/ O
    try
+ K  U9 Z% r" a  u. z4 v3 ~    {2 `$ l0 s1 u7 E  u* t0 d$ x8 X
        //---- Enter your callback code here -----" c1 e, w7 ?/ f: {3 ]2 Y

/ s# Y6 ^9 o& a1 Z/ J+ C0 [3 r- T$ `( e- w' ~0 m5 d
) q! e" p$ U' N
                Session *theSession = Session::GetSession();6 r" p9 Q2 Q6 Q8 K
                Part *workPart(theSession->Parts()->Work());  g2 t- C6 W) D+ N( F* g
                Part *displayPart(theSession->Parts()->Display());
/ f  q, Q- s" p) D
) Z4 B5 A* D6 t

- i! g6 |7 x2 A3 L                Features::Feature *nullFeatures_Feature(NULL);
1 s* t7 K* m/ R. E' n* B: o                Features::EdgeBlendBuilder *edgeBlendBuilder1;
$ O' ?: E! e# J; U1 d- ^! ]                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);8 L" N$ ?/ P  q& ?$ N
9 Y' c3 s; n- j) l. d* H6 e

" H( E% F& H6 z8 C/ ^# M. k+ {                ScCollector *scCollector1;5 p2 I, t8 f8 z: j% d0 F
                scCollector1 = workPart->ScCollectors()->CreateCollector();
) X! x7 i/ h7 J, b" c2 G2 W9 [) |# F6 N( D+ L" E8 ^
" \4 h. k7 g6 D; c! d5 v$ ]
                std::vector<Edge *> seedEdges;
6 c3 V3 ^# L4 u                6 B6 k+ n0 G( j& A9 D
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象/ E& N% \* k5 J' u& k
                for (int i=0;i<selectob.size();i++)
2 j6 j3 t+ {7 M: v, ]0 R                {
8 {! `8 S4 ~5 X: g  q1 \: n6 `3 H                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));% \' l, A' z" z+ l
  }
8 [3 o, E7 Z6 I2 L4 [7 Q( g- [2 U/ [' S. f
  double dia = expression0->Value();            //获取表达式的值
& u4 j+ n2 A6 ~% V! }; f                stringstream DIA;
# v. I& H& Q/ [' C+ l                DIA << dia;! t- ^$ W5 J9 I% b9 ^
7 H& g: s9 O/ P( s* w2 O' D

1 v/ h- W3 B1 F0 l% l" D                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;! ?# c4 {/ V2 D9 b, y
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
" i- ]5 j# R- \* T
1 u0 u8 D! M" H. o) Y

& m  d$ o$ w2 x& N. K0 f                std::vector<SelectionIntentRule *> rules1(1);6 d) ^# n/ O9 F9 l+ A9 y/ T
                rules1[0] = edgeMultipleSeedTangentRule1;3 r0 U) E0 l( P7 c$ h) A
                scCollector1->ReplaceRules(rules1, false);
2 T$ n: z! x0 m) W0 B' t7 X/ L
% \2 L2 h- ?0 n0 }! k. f

0 R! L0 C, s6 U                edgeBlendBuilder1->SetTolerance(0.001);
* }/ t: u4 ^0 F. k: l, M4 \4 x" ~* |& @( G. i5 R8 G8 U- R
( G) \! k3 M7 A6 K3 e* s5 w
                edgeBlendBuilder1->SetAllInstancesOption(false);
% q& ~0 p2 \$ k- ~; R* J# K7 Y" u8 ?; U9 s1 p2 L5 z$ s+ m
2 z6 L# p- U. H& G, y
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);4 z) G  Q, U  l2 j
5 ?- k3 u# M& J& g% W
& A1 ~' v$ h% T" _
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);4 Z. _% W" z4 g5 C5 J
2 ?- e2 ~3 R4 @0 q9 N
5 B9 R( O0 x1 d" }# X
                edgeBlendBuilder1->SetLimitFailingAreas(true);
. y/ g9 p  r" p9 Q2 E8 c/ U  b* F+ M( N
; g- T0 a" y' e! z. m
                edgeBlendBuilder1->SetConvexConcaveY(false);$ D' q0 ]+ h- ~1 r1 {- r: R3 C+ W- E
: ?/ ~. g4 g& [" J3 O8 r  U  L
$ ?1 _, i$ x% e
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
+ I& d7 `7 K! m) a: q2 }" ]
9 u1 o" R- `  q. U
( E. G* t5 d2 k
                edgeBlendBuilder1->SetRollOntoEdge(true);: _- o* B/ T9 O+ p- _, K/ [: w: t
* j) P% A# Z8 e5 G" a3 |, F$ z7 u
& b( y; E- d  R0 K! G5 L
                edgeBlendBuilder1->SetMoveSharpEdge(true);
) L' q0 ~  `2 `0 f4 Y& \
# s, ]. `! O2 ^! X' {5 B. W

2 [8 L* \- Q* @( C. C3 ]                edgeBlendBuilder1->SetTrimmingOption(false);1 j7 x6 {" u$ q" l/ P

" A, s2 j, }0 O# w
( [5 Z" X) m! ?2 o( I% V& s* O
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);' ~3 O  c+ M4 R- d! d* B

: B; ~& }7 z4 {8 h! I& y

9 `7 `& ?" J9 Y3 c; b7 @% ^) U" J8 v4 L                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);" U3 ~. {) h" K. k0 A

' A; u6 a1 g' z! e4 Z5 p

8 l  \; `; K- Y* d8 X; J                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
1 D! {  _# g, A6 c6 [0 t
3 x- i+ ?7 R* \: _0 b
" r6 f4 ^. a' x
                int csIndex1;# m9 }& a  d4 W# D
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
  F" e1 o' q+ ~$ T3 d, X6 I" s4 L5 `  n1 q2 y. h& [

) K: l3 E/ [: I                Features::Feature *feature1;
+ `% n$ Z6 P) B$ Y: s' W. ^" X                feature1 = edgeBlendBuilder1->CommitFeature();
6 R, N& B  O. Z3 q- }
/ T. y0 N1 `" {: B

) g5 I6 I3 f, L9 C2 T% V" v- o! _                edgeBlendBuilder1->Destroy();
- ]! D& x7 j, {( e( _0 Y6 r
+ r; ?9 i4 R+ t1 {6 D5 ^* [    }
* n  t0 y4 {, M0 ]    catch(exception& ex)* I% U$ X3 h+ H3 \5 h' q+ V8 i
    {4 M8 K! t2 D3 I, L- s& o* ^
        //---- Enter your exception handling code here -----
7 K. q( `# B( }6 d' d' D# D' M/ H        errorCode = 1;7 Y. K& ~/ h; D/ J& |. l' i" q! }
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());# }- Y8 E* P# V1 q! W. c1 k- i! |: {
    }! x  M  k' N* e" T$ m0 b
    return errorCode;
( v, T2 J6 i- j1 d% K}
* ~1 P$ a: Z# V* b5 v3 }; K
) @5 l4 m6 Y' N! Y+ e: h% S  H& H
说明:因为字数有限制,这里只贴出关键代码。- h# k' r! _; s& @9 \
: \; Q. \( Y% e9 {

& s4 B  a; P; M4 s/ y# q) e, s

3 U! n) N: g& W5 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二次开发专题模块培训报名开始啦

    我知道了