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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
& t7 i6 Q+ g" c4 [& R. ?/ S
void selectedge::initialize_cb()2 U% W) r2 f0 P' h3 j& U
{
$ @5 {. ?+ e& C) I    try
8 C+ |' v$ o  R9 U. ^$ ^    {

6 f% `( F# z" s; p- k        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));: c8 h* x) E$ H# r: m1 T) i5 {
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
7 G% B  R" _; ]        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
) \3 j; i. w6 N7 H    caTCh(exception& ex)- h- L' L6 @+ d) a4 J% @* m
    {$ ^  p% e" e+ ~. |
        //---- Enter your exception handling code here -----* o, b$ g/ U. P( @5 J$ A4 h: e
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
& o, d- N! h& T2 H+ B& n/ A% ?; h    }( e. K. N" v) s8 t
}, \8 S3 r: y* H0 h( f" I3 }% E$ w

* E2 n8 U0 d# Tint selectedge::apply_cb()
8 a5 J4 _+ ~$ h+ y{2 e/ \+ ~' b# x7 F0 q& L
    int errorCode = 0;( T# Z. G2 E9 j9 T( B0 ^
    try" k- ?( [9 t  Y1 e8 `
    {
: m. p. ~8 {5 M0 G        //---- Enter your callback code here -----
, Y/ Y: z% p* b; L4 ^" I0 |# K' w, z3 y$ L$ t5 O. [" _  H
, G3 Y1 A; g. j" t; L, d& A
- p; q* {; i3 O  Y8 D3 Z: y" W
                Session *theSession = Session::GetSession();: [* K- M  g  c5 T, I1 F
                Part *workPart(theSession->Parts()->Work());
0 ]0 p$ w* f$ {6 W+ f, p2 H. R4 \                Part *displayPart(theSession->Parts()->Display());
& |' e, {% a1 E, d2 h* X, C. t' o. y( B3 V% X. D6 A6 ]

) ~: `) H  a  V( V                Features::Feature *nullFeatures_Feature(NULL);1 ~$ ~/ ]& d; A* D, x& Y' `+ d# k; `
                Features::EdgeBlendBuilder *edgeBlendBuilder1;( x  u1 j9 o1 T5 W1 F1 a4 q
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
9 d+ Y0 k3 c* l3 e7 Q1 Y( |% {* [2 g+ u) O8 c: c, A
) c" e+ }0 P8 P; Q( |3 \
                ScCollector *scCollector1;. F+ S( u$ d. q6 h) i# G
                scCollector1 = workPart->ScCollectors()->CreateCollector();
  Q+ ^2 g# I5 D9 o7 c9 X2 q) g& j! C$ w1 m- `5 ~7 i
, F6 e) a* @8 Y* R# T
                std::vector<Edge *> seedEdges;
3 _$ ?! m. u9 X/ H+ D0 b# R7 f                " s2 O! D0 z1 Y! Q9 ?, V) B% u
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
# y6 ^. H% h( |4 ~                for (int i=0;i<selectob.size();i++), G# V/ ~+ ], R  t& Z" X
                {) _& J6 _, V; d# Q& Y
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
0 o+ G) u# d0 s2 d* p/ ^  }
% V) z9 }; e& D' E/ W
/ u" ~& u, J9 `6 M. M, s7 U2 v  double dia = expression0->Value();            //获取表达式的值+ r9 |  N7 y+ Q+ ]& _' c
                stringstream DIA;8 k/ _& k3 T2 c  i% b- |4 ^
                DIA << dia;
! {3 V6 X+ Q* ^$ R& \7 u7 E4 ~1 F* e- L$ U* C6 \
- K  W5 A) g9 r7 I+ i1 r7 f; @- f
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;9 c2 f9 g( i% n+ k+ D' s$ ^
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);9 `2 I. ]: Q6 T3 F; T. G

, A8 J# e: _( e6 v' \
: B* [- {* v6 L( u( J3 f
                std::vector<SelectionIntentRule *> rules1(1);
5 Z% _8 l1 [* P! |) |                rules1[0] = edgeMultipleSeedTangentRule1;
$ U+ S+ P5 h0 s0 n0 u- k0 v" C                scCollector1->ReplaceRules(rules1, false);: H, H  T* b8 Z# C' p
1 |- k1 B5 J3 Q
9 |. V3 `- f5 v* Y4 G4 s7 f
                edgeBlendBuilder1->SetTolerance(0.001);
( d% I: a1 e# D3 S7 w8 N) Q+ r9 H  n* B
4 W6 g/ }0 c! L, [8 A1 Z' G/ |) _3 N
                edgeBlendBuilder1->SetAllInstancesOption(false);
, J( x  \' }) J6 y& Q1 i. ~
3 C- r5 |6 _$ M2 c( p( T0 @( T
; n. T9 n9 ]1 i$ s, f9 G5 y% {3 W/ h; K
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
! x1 {: D. E+ l8 @1 T
$ T% B9 @& y. p- T" o6 m9 ]

/ L9 \6 U( x$ N- \  M% Q& y                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
- m3 ]9 E9 t/ b& L" m) T8 k2 p6 ]3 ^" i8 _* M% N" u' _) ]

' E) M& A, t5 E6 o+ y2 S% d                edgeBlendBuilder1->SetLimitFailingAreas(true);
8 `/ N  v2 P4 G8 z2 k8 n  A3 @6 {3 [9 `' U

; S* \: n& U2 s/ f, j* d                edgeBlendBuilder1->SetConvexConcaveY(false);
: ]6 e+ F# P" G% Y: u) n8 }6 Q8 t! ~# Z5 n

  M5 M6 C+ I$ F8 o1 U* |+ J                edgeBlendBuilder1->SetRollOverSmoothEdge(true);0 t5 _8 i" G* E7 T

  W9 ?: w2 W) d, _8 Z

* C. p1 ]) g: `5 ^) Q3 p                edgeBlendBuilder1->SetRollOntoEdge(true);6 U4 \1 a8 _6 b: l% a: @8 ]3 i: F

1 a9 r- E7 j+ u1 w4 r' N' l

% B- n/ \, L1 V  k( ^7 X                edgeBlendBuilder1->SetMoveSharpEdge(true);
) `& b5 E4 S& h1 z) [- V
. l6 q7 w+ |/ i* f& q; ]; k

7 K  a6 n: D9 `) g6 _2 S. P3 |                edgeBlendBuilder1->SetTrimmingOption(false);
+ {* @' g9 c: o7 D$ b0 u+ H) e9 A0 Y$ C7 c2 O

) [7 b( e; f# W3 T& v8 d- i6 m2 t                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
: r3 ?; ^7 b5 Y7 q; c9 O( I5 }
& `; z0 f6 z! d4 [1 B+ \( u
: b3 i3 I9 L4 C% p
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
& E- M+ k  k9 b* D- _  o6 F3 f0 b( J

1 a, e- J/ T* w0 z# a( F                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
; U% o$ t" C: E# @% [3 P( @
* y; I9 j1 d" `& R& o* `

. K9 j7 v+ C: r                int csIndex1;2 U! z) L) S* z3 I, K9 y
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
$ ~0 ^7 D/ s" _: ~2 q! z, q- L  C  ^. ~0 m. o/ p

% e$ T' B7 e" Q                Features::Feature *feature1;3 |/ L6 w4 y5 @' h, N/ `; d8 T
                feature1 = edgeBlendBuilder1->CommitFeature();( d% P" j' `) m, e0 C2 X

/ s# k% {8 L; `7 t' ^+ K' a2 v6 {8 T

# c6 [! p' d$ ^, J                edgeBlendBuilder1->Destroy();
: t6 v4 A' ^9 n( H& S- Q6 w8 y! q5 R7 H! e3 l
    }
! o, s3 L* \6 N    catch(exception& ex)
+ w4 Z1 A( \+ e# i0 o    {/ ]( _- ]9 p# f$ E
        //---- Enter your exception handling code here -----
0 z( @2 [: ?* ^3 ~+ [' \* J        errorCode = 1;
* K1 l7 q5 a6 z8 P$ ^; j        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());  K$ V0 u7 D) [  T/ G' Q3 L% k
    }
: H' R5 f! {" y0 a8 d8 E3 o    return errorCode;
1 Y# X5 d3 E- m}
3 ^  S: g0 K5 p$ S5 I2 z+ F+ i9 B

1 b/ ?; [9 O* P1 i- [1 r; o说明:因为字数有限制,这里只贴出关键代码。# g9 c; G9 I3 m% z! ^7 f) b7 f2 j

5 W# b/ r, g' v0 u7 J+ m2 l" s( U
4 \8 ~5 t% o8 f4 E) d5 P! o, E3 a
" t; Q0 a. @2 C( p7 z
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二次开发专题模块培训报名开始啦

    我知道了