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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
" n7 L# S; n3 Y+ M7 G* [
void selectedge::initialize_cb()
! k6 Z# J) G9 o% q$ F{
: ^9 U4 l3 e" q8 v# e    try8 M" i5 x; T  D9 h, F- L
    {

. O, o' U8 y. T% U5 }; K7 x        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
1 r6 i  M6 ~; i6 h5 C& B        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));: u+ \" w) `2 u/ ~1 i- i9 ^6 I
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
  y: F  e9 g  M2 X# A    caTCh(exception& ex)
! W! ?& B- z; n* ~  N    {
& s9 _: O9 o! T! i- b        //---- Enter your exception handling code here -----
( ~- r$ s4 E- k        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());1 }4 `" B5 w" m7 O2 a' F! R! U
    }
% w' ~7 Q$ U4 M+ ^# x. {% ^) _}+ S2 Z# p" q% m1 D: o; O

; Z: n4 j2 F. r1 s/ n6 m! Zint selectedge::apply_cb()
+ y8 O' m  V2 l# e7 N7 c9 M. g' E! q{3 r' ?- a# Y/ W) f
    int errorCode = 0;9 l1 h! G3 }, O/ V
    try6 a$ O" y: e$ [, X5 T' ~6 G) P
    {, r# k+ c6 |! b& B1 |
        //---- Enter your callback code here -----
. t4 [* h6 k4 }: U& O& o  l/ |3 Q' i
. p& U; Z* z" Z& a; w
6 p! P! S0 J3 b3 B% w/ \
                Session *theSession = Session::GetSession();/ N% O6 d7 x1 y
                Part *workPart(theSession->Parts()->Work());0 L% k  U; h; _/ L% m$ j$ R
                Part *displayPart(theSession->Parts()->Display());
9 Q0 Z7 b4 N! |  Q+ g: u2 }+ ?
) ?' o& w2 `' r# K. y

7 R# g3 Z$ u, v; n. s+ X                Features::Feature *nullFeatures_Feature(NULL);
7 n4 u6 J8 @, G( |+ G" L                Features::EdgeBlendBuilder *edgeBlendBuilder1;! ^$ B  C' P' ]! v9 u
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
" H% n  s, c- A3 ]* O+ w9 R
; Y, t$ C5 e, Y" |

/ o* N2 l+ G! @9 Z* S7 m3 f4 c                ScCollector *scCollector1;  J  ~# r. A9 b. y* {0 Z# [+ x3 q' z
                scCollector1 = workPart->ScCollectors()->CreateCollector();& |0 J8 F' |" y8 K2 p7 i, s* g
7 i# o2 @1 @. ], [: p- C
  x# h  ~5 i) s: A& K
                std::vector<Edge *> seedEdges;
* U( v1 X2 W! ^5 @  H: O- G/ D               
: V2 T9 `2 s" j  t                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
6 R0 [( [- t: ^$ o; R                for (int i=0;i<selectob.size();i++), f6 K& _2 l: l! ]9 z
                {
2 P# W, @! R5 _# G                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
6 V; O- [& D2 e  }6 q- ?& O5 \/ [* J1 [
4 p) [' S+ o. z! p
  double dia = expression0->Value();            //获取表达式的值
5 q0 b5 T: P# ?" t                stringstream DIA;
, T: e+ ^6 e7 E1 H- v) R4 y                DIA << dia;
1 @/ \( T9 s+ T: k2 {- U" N
* J3 z7 v9 C5 V* j5 v' a3 L: c
5 Z1 U  H/ _! w# q& T
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
2 k0 q5 K& s- B  c                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);* O* f  q9 l$ r" I7 j5 e1 {

( j' b% L( ^1 @, M

9 L7 r) g/ h6 o/ U7 z1 Q                std::vector<SelectionIntentRule *> rules1(1);
0 D3 W4 Y& Q$ x% E                rules1[0] = edgeMultipleSeedTangentRule1;
: r8 Z0 Q3 d  U                scCollector1->ReplaceRules(rules1, false);" e( t7 q8 t, [8 n; t+ S* A

% v# ~9 ~, P0 v$ @4 w( J( W' g

6 h" Y$ e/ I; o2 x% s0 N0 R" R                edgeBlendBuilder1->SetTolerance(0.001);1 z; X) y; e& a7 ?5 F. X0 x

' h! \( g6 `4 ?4 B; F; z
, C) R( h1 ^2 }8 P, k
                edgeBlendBuilder1->SetAllInstancesOption(false);
; ], z3 ]$ P4 y: T# ]/ E
. g$ o* r# n4 s, S$ J  _

) Y$ p2 \8 Z, {  r# Z3 w! U3 e                edgeBlendBuilder1->SetRemoveSelfIntersection(true);5 r3 B5 z! V: E/ m

+ X1 s" X- }! V! Q' k0 L% _5 d

8 {* _8 O, _: d% Y+ @, f# W                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);/ B8 I, c" b5 F$ W2 q9 G  d" l8 W2 {0 a

: M' ]1 C; s$ B/ J$ }4 m& r
# C, W  {* w$ W1 ~( u3 `2 [" h# \
                edgeBlendBuilder1->SetLimitFailingAreas(true);1 X1 V% `7 @2 L9 J8 z) K/ o' E
3 L8 F7 @# J( _: e7 ?4 J

- P9 n4 Y# M5 ?- h0 L0 a( j                edgeBlendBuilder1->SetConvexConcaveY(false);; R/ g% y4 @5 b
2 z1 \; b, T: a8 }! E  M' M7 N

, Y0 s/ j* `# D  Z3 z                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
% o4 D& F& i; V6 g4 E4 H+ T" g$ i, Z/ n! n, e) P. S

  b4 w3 _0 g$ M# W  v$ I' @1 k                edgeBlendBuilder1->SetRollOntoEdge(true);" h$ X) `+ v% }. M' `' s

) r! w) `* ]/ v% ?1 w1 O5 f6 t

4 G" i" K: q" u2 D7 I                edgeBlendBuilder1->SetMoveSharpEdge(true);
& k0 k- Y8 q% J. t# c1 u9 }+ c" I, c1 ]6 F; n6 _3 J+ f6 \

1 j) w5 B! E5 F3 o; F                edgeBlendBuilder1->SetTrimmingOption(false);
; K! I# _# |3 q& r6 O, s# _+ R# J6 ]& Y% m; ^2 [7 [% N9 I

5 z) W, X- c) |' v: z, m. P                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);) y) e" ~% Z" @6 Y# C: A6 r

, \/ I9 o. H9 i8 s3 ?# Q. h

2 _/ n4 h) L/ a3 R- I" L                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);% m9 A/ B4 ^- p$ d$ ]: Q2 G9 s9 i

) e1 f' c/ ?4 P
5 {: r. b7 u+ G7 J! v
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);9 K% m* R5 e  m
# a, G5 ?! A0 N" s' R2 g

4 b* B4 }6 ?: }0 Y# U9 F# g, v                int csIndex1;( g0 m4 L1 ]4 d/ ^
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());& C8 c6 B- h& c; _0 _4 ^
8 X& o4 {4 g; w( g9 C1 ^6 k
% Q# {$ e, U' S: ]
                Features::Feature *feature1;
, |' T8 x1 ]' [; c                feature1 = edgeBlendBuilder1->CommitFeature();
0 r$ F$ |5 G) Y" H5 T8 z2 i
& c: o+ h: {3 r, a* l5 q

  b3 C8 b6 J- W: }- n( p0 L0 ?                edgeBlendBuilder1->Destroy();. }2 X) _) e$ ]9 j) \! h- J
" Y5 `  a% k) a- z! Q
    }# v/ c1 }. E2 n/ d: i0 i- N
    catch(exception& ex)+ W! W* Q9 ^7 R7 j7 \3 `
    {
6 m- i6 @  V1 n. E. v# x        //---- Enter your exception handling code here -----8 z, W3 V# \3 F/ d/ ^% f; a4 t
        errorCode = 1;! F9 ]& D, m# c9 j: l
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
2 r+ ?' ]1 k( O1 B, W! @    }
5 a! c* p. o; F% \8 Z  y* B    return errorCode;" Z& C# i8 T4 Q$ `- j1 E/ M
}
6 t- N7 a0 k$ _  c* ~6 S

2 a7 V3 w5 C; {$ F1 R$ s' g/ l说明:因为字数有限制,这里只贴出关键代码。
+ A% O9 j/ W' `) e
. [1 A7 }1 _3 Z( a8 f9 _9 d$ Q$ h- `( p$ m: Z) a
! ?. w- N' n% T7 L* b0 G" 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二次开发专题模块培训报名开始啦

    我知道了