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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
% X, Y  z3 W. W8 }* F
void selectedge::initialize_cb()+ r% g/ x. f+ w$ |( }
{' S  b3 R0 x7 ~2 i$ j3 a* ?
    try) O7 U9 A/ H; @6 s
    {

. T! v% ?# S7 D; w. s: B* @        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));+ E5 {9 O# v9 Z: L1 R
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));0 _+ n: @# O5 w  `( x
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}3 v- U& `# q$ ^3 J
    caTCh(exception& ex)( u* T# _: O9 X1 b$ k, G5 b
    {
, _# A- [( N  R* Y" G        //---- Enter your exception handling code here -----2 ]1 c/ Q8 U6 F) i6 J0 U4 p, P0 R
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
6 J# O0 i4 q! g0 j    }
0 u2 w: m! q& |}- \0 e* N2 @2 E8 Q' m! v5 h

( {& Y% F! e. i2 `! hint selectedge::apply_cb()
7 M1 r& Q' m3 g3 ~, ~{3 w; {+ j* r. I+ a, ?; T
    int errorCode = 0;5 g/ h  k, _0 M1 V" b5 [
    try
- ~# M0 K9 N& i    {0 ?$ p8 ~( F* c; [, n7 d
        //---- Enter your callback code here -----4 P# z# k0 Y+ s" L0 y- p8 m) i
- }/ m8 v: ^# X/ _3 w( o( T! N

6 I* T$ r! T+ I$ K( ^; F

, q: l+ u$ `" ]  [; Y4 d                Session *theSession = Session::GetSession();! j' o, N' X* i0 c- x7 R- Q5 {
                Part *workPart(theSession->Parts()->Work());
' K: W3 ^$ ]1 M6 l: o! T9 o                Part *displayPart(theSession->Parts()->Display());/ W' R' {: w1 B; _* L$ y8 A
. @8 ?7 J& ]& t

' d- r( J" O9 ]( m8 v                Features::Feature *nullFeatures_Feature(NULL);
8 P2 b  F/ q7 r3 [- B3 w' d                Features::EdgeBlendBuilder *edgeBlendBuilder1;
" @5 p" f! H8 a                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
' f6 T7 h$ u; \4 N- i, [& a) `
$ Y$ E5 ^" g: S

5 c! q  M" p9 K: e; l                ScCollector *scCollector1;, E* f9 m4 c+ h% H: P
                scCollector1 = workPart->ScCollectors()->CreateCollector();; A: p$ O5 f8 x/ E! k3 C
, _2 w9 v# j+ ~
' h. E- a; ?* U: o- f. l/ d
                std::vector<Edge *> seedEdges;, A9 ]3 w' s* N2 A( E5 Q
               
% h/ l' m) h9 e% N; F  l! v                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
& b) e) U; H" }! x) |+ _                for (int i=0;i<selectob.size();i++)5 A4 A. I& d3 h6 C9 a+ ?9 t
                {- ^) I4 O. q4 b( |) A' j
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
1 z2 A1 ]) n9 a- `* Q  }/ n9 c  O7 B# G+ h1 F9 I' B
' A' u  }& K2 k  O; n4 F
  double dia = expression0->Value();            //获取表达式的值/ ]6 E8 Q  K- }3 n! Q
                stringstream DIA;
5 y: a/ @+ r( ]6 X) I5 ~                DIA << dia;) C; W. l& z9 O! q/ E
5 o4 P8 A& ?6 V4 h/ B, D' y
6 m1 u) r( [0 s% V1 V
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;$ i0 x+ Q. ^! @3 W2 ?0 a# ?
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);. D, [+ W7 h# q7 |4 Y/ }+ v

. `. F9 E7 L6 Y3 W6 \* M. z6 h

: x0 t( ]8 b* R' l5 P2 a6 ]$ C! ^                std::vector<SelectionIntentRule *> rules1(1);
4 D' G7 b1 Q5 G' B$ V  v9 G                rules1[0] = edgeMultipleSeedTangentRule1;, A6 v* L; I! ]- b
                scCollector1->ReplaceRules(rules1, false);# X/ E# `+ F5 K4 c3 r
% n0 }6 E+ S/ Q- y# p2 U: J

% e) z+ F; o3 d, H                edgeBlendBuilder1->SetTolerance(0.001);
& D1 D+ ?/ S2 P" i' {$ L0 M) T$ U' _5 \' r. k7 A7 \- Z

% T3 n/ L" q( d" d                edgeBlendBuilder1->SetAllInstancesOption(false);
3 g: B) J# _7 p5 t9 K
0 p% ~  `; y4 W0 R* X
! d0 E1 z0 Q. }0 _' @  i+ T
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
# t$ m- j2 j: l2 v1 U# z! V# E
8 \2 e4 H2 t$ |; h6 R, O
0 O9 ^4 i6 j! L+ {# z
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
, `. i/ ?9 v+ W& p# F. X5 L% a% a* a0 O5 l8 Q* z

8 ?/ [7 u, B3 I- n" c7 r% ~2 ]- d5 t                edgeBlendBuilder1->SetLimitFailingAreas(true);# Z. a7 ?5 g5 F; t4 t5 M
: K. c" S8 f! g' O

) w* Z( q4 g7 P- K                edgeBlendBuilder1->SetConvexConcaveY(false);- Q* R/ g/ }+ O7 I* p
, D4 \3 }/ x" d. ^0 f

) e- ~) C% b& G                edgeBlendBuilder1->SetRollOverSmoothEdge(true);$ ?+ X9 \) i& K9 ]# f

7 o$ `& F5 [3 I% R, d! ~
; M0 l( E* f: h5 w2 s) }
                edgeBlendBuilder1->SetRollOntoEdge(true);$ k. A, l2 O0 ^5 X
6 x2 N  C$ y- w8 n4 O) v& R

- }  G' u3 G- N; S2 |" m  g' ^5 Y                edgeBlendBuilder1->SetMoveSharpEdge(true);, A4 b+ P8 a# [8 k# }0 r
- m3 i+ _7 V( G) T3 D

9 B: i3 ]3 P. W7 ?                edgeBlendBuilder1->SetTrimmingOption(false);) N7 ^+ v, F% l, N

4 W' ?" W3 b' l3 l7 C
5 ?- Y+ e6 t- ^" B) o+ d
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
7 W9 G$ p6 J5 n3 s9 H# L7 s4 r9 C
8 u4 ~2 y/ X2 l8 Q: a

3 V& J' s. @: Q- c/ S% L                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
9 d7 ~% |$ M# Q* k! J. @2 g. ~! f

  h* n+ [" M: e* h1 }                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
8 _) r1 b, t* ~( ?! b4 [& a) u7 |: k% c* O' L" p

" d7 I3 P3 [6 p1 j+ I" H# O                int csIndex1;
% U, E+ B. o$ \                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
5 e$ D, s  U: t3 B3 a
0 c3 t* G% w- o0 ~
  {  Z7 a9 k7 T2 g% L* V
                Features::Feature *feature1;
$ h/ Q7 k2 W: y                feature1 = edgeBlendBuilder1->CommitFeature();
# z2 G0 K4 s# x) ~% |! ^8 [. T* P. k2 ]0 ~8 s" t; G8 c
5 h8 i0 o- ~5 a$ I4 g1 n
                edgeBlendBuilder1->Destroy();8 N  x: r2 z/ n: g8 R
  [- T  S( j! q5 t1 @
    }# u- j1 ?' t0 D# M
    catch(exception& ex)
, R6 B, z# M/ w+ W6 E    {- K  P0 g. x- r& ~) \# c- _
        //---- Enter your exception handling code here -----
) i2 y& |9 N, p        errorCode = 1;! {. G1 P/ O9 G
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
9 V/ G5 V0 g& j5 r    }; X- G4 J" ]# q% R, e
    return errorCode;
7 U+ q5 P  q% Q1 Z4 h: `# }}
; R5 S" f4 L  _" r$ w% Q  ^( r
( Z" E& W2 \' `- s8 m
说明:因为字数有限制,这里只贴出关键代码。# S) L- c- y- P

/ W2 y7 B: z; f! I6 q, _/ C, b' Q" i# B

# z; _! ~  t" R4 y3 t9 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二次开发专题模块培训报名开始啦

    我知道了