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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
& A! b3 E% {0 \: d( \
void selectedge::initialize_cb()9 F0 v' X9 p! \$ {
{
; @% G4 V* H4 ^) g2 ~8 q5 n    try8 e9 l+ D. c5 A+ Q" j% B8 p3 k
    {
6 \  y$ y7 [9 m+ D* R$ N) S+ F
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
9 q' E2 }2 }! w0 Y8 X8 R: G5 l        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));- m  ]2 g1 A1 i( I+ j0 k/ d3 d
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}  D2 j4 P; e  D3 l4 @, `
    caTCh(exception& ex)
: H: `+ Y( g7 `' Z; T    {% M7 F8 I  v7 e) T
        //---- Enter your exception handling code here -----4 J, t7 i$ ?* g6 u( m" p8 O8 _
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
3 p: [# X2 F) }9 @2 P# S    }
3 ~2 v$ W& K9 M$ d) N# H}
/ J9 I) O6 K% y' R4 J& ]7 c& f4 k" h8 o1 r9 X/ s) x/ q
int selectedge::apply_cb()6 C6 c' }; \# `/ @
{
4 m# t: _2 W7 A    int errorCode = 0;
( o# t* V) e5 E    try) `4 c: t" P: S5 E% Y7 c$ @/ _
    {
  z" r  F( v' q+ M. P  E        //---- Enter your callback code here -----9 c( T; X3 F$ o5 m
, k' Z8 `( }4 ~: J: H. D4 l! U

+ Y/ e( C( A; H* B
$ r2 `4 F, f1 t+ I7 Z0 A# o* k! x
                Session *theSession = Session::GetSession();
: t' b4 ?  K- z$ r, C                Part *workPart(theSession->Parts()->Work());% S6 a1 N- t( ^6 I1 c3 l8 L9 n
                Part *displayPart(theSession->Parts()->Display());
3 m$ @! [) C& l- k; i
" z9 d3 m/ t1 I; P9 W3 ^

$ L. z8 G( [1 i0 \                Features::Feature *nullFeatures_Feature(NULL);
5 [! u1 R" N4 H6 U; `                Features::EdgeBlendBuilder *edgeBlendBuilder1;: l" b5 {  x2 D7 J% C. A9 C' h
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);; E' ?7 l( W% n( q8 Q
4 t' ?: X9 h% F' E! \/ J" f

4 {% I# @& ~" j7 T* l0 Y! |. h                ScCollector *scCollector1;
7 F& W$ G2 F" j6 n) I. L                scCollector1 = workPart->ScCollectors()->CreateCollector();, U' h/ z: l$ f! u5 A8 [2 o; `6 q

% I- ]' O0 I- E) W$ Z+ P

$ v$ _4 H: e- ]$ ^1 b                std::vector<Edge *> seedEdges;
" i5 A0 h3 y7 x0 [* w' v6 ?% n6 C                6 d, ~; e. t7 X  u3 L; v. o
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象) Q1 B- L: A' g# J6 I
                for (int i=0;i<selectob.size();i++)
0 t2 r8 s8 v  I+ X& E6 k- P                {. N5 S9 b0 X6 n8 r! B
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));$ h5 r# N  l0 A; A' D) n' U
  }
$ x3 J4 q( {; j- G  {
. Y2 E6 M6 W9 ~2 K: [4 Z. O' b  double dia = expression0->Value();            //获取表达式的值
0 V7 f. L, P( L. V" }                stringstream DIA;# l0 R/ G8 S2 P7 W* w
                DIA << dia;$ Z! j, H/ @9 Q. l/ Z* J" f) q4 l& X: P

; t3 c- J9 y+ H0 V

' r5 Z6 l$ W- L! H9 ?                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;: _1 @' g) \8 d' e
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
- @8 s7 i/ @, b' d
1 ~; O) T$ z! }8 c: m! A: t" k
1 [0 p+ R% N$ H5 w3 x9 h' J( L) t
                std::vector<SelectionIntentRule *> rules1(1);7 Q7 [1 G. Z% o4 K
                rules1[0] = edgeMultipleSeedTangentRule1;* n# M' X+ w& L9 B, L5 D; T
                scCollector1->ReplaceRules(rules1, false);
5 d9 a0 K* w( p" E' M* |, R% ?" M' t* h' L2 j+ B
# c, Q# v& G; c* t/ J% a: @
                edgeBlendBuilder1->SetTolerance(0.001);
8 A1 t5 ]4 a3 b" h9 U, Y
: O( F& _5 `2 c+ s0 g. ], ^  \

+ s" Q; j& H/ r2 d+ }                edgeBlendBuilder1->SetAllInstancesOption(false);
7 O; a' i/ a/ X) Y% t, e4 h! o
; D' n' U! }4 i  F5 o% ?5 s

! V9 w% v! T6 @( T* l+ y, E/ v% x                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
1 A+ I  ?8 @  u9 i
& `  i* s! ?7 I. o# l) `' @4 y

1 `, t. @& u2 ]6 X" m                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);$ p: J$ ~- @4 O1 H; ]

( N( C( x/ r6 F1 U  w) z

+ @9 L% q! e- P                edgeBlendBuilder1->SetLimitFailingAreas(true);  k" O* W3 N4 ^% z8 ~" `1 m; `
3 t# }% y: \/ N! f$ ~, h1 j
' B2 C# w4 Y. }7 _
                edgeBlendBuilder1->SetConvexConcaveY(false);
' V0 Q9 y- h6 A, N9 ?# E
, {- }' j; w" c, b3 O
9 Y/ @" h- l: `! ]1 N; l3 h$ Z
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
* q( S" J+ }2 _' f: j& E# B& `: T! `8 e3 O) {9 y6 H

9 m2 o/ A* n% e/ h# f! ]7 Y                edgeBlendBuilder1->SetRollOntoEdge(true);
" c+ G3 @! s' N8 g  j" n8 s/ F
$ d2 I3 N# C( O7 D8 _
2 L. s: w! U* Z0 R) s
                edgeBlendBuilder1->SetMoveSharpEdge(true);
+ a, h) F; ]0 J. o+ |" p" p  l; Z. h  U  E3 w$ g  T4 x  x& ]
) x9 T- t5 H& y7 z+ Z
                edgeBlendBuilder1->SetTrimmingOption(false);
; s& E0 J4 w/ j' {( R; B* D- P5 w" o& v8 q- |
. K7 c0 N7 P4 ]; n/ O" I% y; M. i
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);* d& [. p# y% u4 t

0 @4 _0 Q- d( r6 Q5 x% v

) s0 W' P+ N/ r% q% C  q                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
7 |* V2 A& Q2 e5 w; }
: T3 z2 m9 }* z4 |0 [

1 k/ y1 g# ]7 t( f1 F                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);  O3 @% z& _: q& P( f

3 f/ y0 p6 }/ |8 P- ]' Y

+ @. |3 S( Y" A0 f( [                int csIndex1;
$ C* T, [' V  B- G$ d                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());$ p- ~( l  q0 b, q. n8 D
& D* M8 H, n  y( N' _9 V
& k: ]2 E; S0 Q6 i0 |- Y
                Features::Feature *feature1;+ ~# V5 d1 l: C- I* P
                feature1 = edgeBlendBuilder1->CommitFeature();
) {* T, q) E# x1 k+ o+ T6 c% v% g8 d: `; q. G: n& L

8 ~% ]+ h) u4 c* Z: j8 J                edgeBlendBuilder1->Destroy();; g. L& C2 z8 n; g) {

& c+ F+ M. g) b% B5 I    }2 S1 H" v5 a( V7 D
    catch(exception& ex)$ B- a1 l6 K: I) Z# o
    {5 n* w; x, o+ W' `7 |
        //---- Enter your exception handling code here -----* L% ]8 K/ z: `  ]; `7 k* J& D
        errorCode = 1;5 L$ M; V6 V) Q/ m( e6 A5 m$ g
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());7 t! R% a, C' m/ O" I# ?
    }
$ ^4 b/ G2 W' T' [  u. J" Y    return errorCode;
2 f6 t5 E- B$ Z/ k& n* Y/ S; `}
: v* R9 q- z7 s, p6 d
+ N9 |& j. |1 h; E
说明:因为字数有限制,这里只贴出关键代码。! m- [- ?2 \- D5 t6 M3 i1 Z

) y% n7 V4 b1 L5 U7 l5 }+ P
3 b; @, g! p% [6 t7 N* D
* [8 \: m" o1 X. l' ^5 h$ s( Y
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二次开发专题模块培训报名开始啦

    我知道了