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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
3 p. E  l9 A, z( p
void selectedge::initialize_cb()
- W( E  W4 j4 @* I5 T2 l, b5 o{; M% S& y, c9 {/ B% m1 |
    try0 M- x& |" x# h2 T& G5 O( l5 H+ O
    {
0 i3 m  V4 v' A  K; d  K6 Q
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));8 G7 k1 C5 ~& x. J0 G5 s
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));% g8 m- K2 y3 k- e- _; P
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}. u3 W) {6 s0 J8 k0 b1 t# J
    caTCh(exception& ex)& \0 G: L6 c, s* `3 b
    {4 k& u. x; [, _$ @" V
        //---- Enter your exception handling code here -----
* j/ y# }; g" V- p        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());' e5 l6 o- E- g: G8 b" H1 p
    }
: J0 d: A3 h. `+ n% a4 V}( J& H6 Z& u8 ^& \4 ^3 s

' ?9 T4 t7 O9 c/ ^. dint selectedge::apply_cb()
4 U1 W- }8 t% Q- q: Z$ [{
1 U0 x- |# N' y' A7 L& T' O$ `8 k    int errorCode = 0;7 |! E/ f/ e: l( e
    try
, Y" A; _) g* b# I" L    {1 u; s) p3 Q/ ~7 I7 i! W* ^
        //---- Enter your callback code here -----
3 g) C* a" K4 A: i% H2 ^* s
3 [5 ]' p0 Y8 g# r
8 m2 x5 m" a* K& h: i& Q' V% p. R

" _9 `* z. D3 @0 V                Session *theSession = Session::GetSession();* G* O/ |: J# n/ b# F2 d
                Part *workPart(theSession->Parts()->Work());
( D. Z/ w0 B+ R6 L4 @7 X$ x2 h                Part *displayPart(theSession->Parts()->Display());* s- y' l3 j/ y) X* Q4 x+ j1 m
$ v9 r% \% L7 n, ?0 v& a1 S+ I
/ A0 v8 \: t! B$ C* q% N2 n/ {
                Features::Feature *nullFeatures_Feature(NULL);, i# N8 a% ?5 V  r* [. L- v
                Features::EdgeBlendBuilder *edgeBlendBuilder1;) d6 H# K& \; C5 J4 z4 z
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);; n. A$ W$ K$ v& j* \4 V
5 v5 M- a% O9 I. e( h

, _! @  N( G$ n+ P                ScCollector *scCollector1;$ Y5 Z. l' O% ^% r/ y9 X
                scCollector1 = workPart->ScCollectors()->CreateCollector();
; k2 ~9 d  a: L1 h# x: n( t) t) ?- }8 o# z( G

: e3 o$ R: a+ n; a                std::vector<Edge *> seedEdges;
. T% I( t. ~3 f2 @* q* w& f                + k3 d0 u3 |! ?# [1 |" s* D6 J
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
; _9 W7 z" ~8 U- X* w7 X) s                for (int i=0;i<selectob.size();i++)7 _* A* B# G) h
                {
% F" C1 j2 H1 \( y7 N                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));1 {2 j. q% k' q
  }( U$ D8 M: n' g4 E
' I" q% }' p; u% t# u( |
  double dia = expression0->Value();            //获取表达式的值
- Q% e' C  f; L1 ^( V# _                stringstream DIA;
  u0 s; \' {' h) B, g                DIA << dia;4 J- X& Y+ u3 V1 H9 s" K  \
& T/ u# l! _' D  D$ N
6 ^+ H9 S/ i% c1 H  i* W
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
' z7 a$ H" S* O* I5 G" A" D' T                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);  M1 c$ a1 T; y) K' G

7 K5 N  i" B7 e. ?: ^6 X4 J
9 v6 |& _, f) O) q8 S
                std::vector<SelectionIntentRule *> rules1(1);5 D- v! c  U- q2 _
                rules1[0] = edgeMultipleSeedTangentRule1;
, \% Q* i: K: s" H' H2 E                scCollector1->ReplaceRules(rules1, false);: ?  [! Q% C. G& `4 W. _- Q

, ^' k! v6 e' Z4 j. C' j

9 O: ^: ?9 z8 X' k                edgeBlendBuilder1->SetTolerance(0.001);
  S% h4 Z1 X9 e( O9 @0 x: Q
* u$ H( p& e; g9 }
; j) |9 U& y3 D+ V$ l% L4 }3 t$ o
                edgeBlendBuilder1->SetAllInstancesOption(false);( p3 C. A  a# a; a

6 y; r3 R. S; h% l

  s0 w* a0 ]% F' {" s* n+ H                edgeBlendBuilder1->SetRemoveSelfIntersection(true);/ p! z2 \% e2 |( k0 T; @% h, Q

4 O0 G8 {+ q  M( f7 j9 |
5 _1 Y  A/ o/ F1 o1 p- @
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
3 \; r" p7 I) b5 ?' k! L+ R  k) x% V. l0 s
" T& L% t. m( q* I  p$ ^
                edgeBlendBuilder1->SetLimitFailingAreas(true);9 T' d2 z0 k7 n, \  A
+ S1 q$ X) @- u: I: H6 g( S

7 f! B4 `8 X8 e1 L& N6 I                edgeBlendBuilder1->SetConvexConcaveY(false);
4 W5 n6 h+ M* i
  M  \2 W+ z9 M

3 e' Q) `- j& J! ^/ C0 \+ Y& H- @4 d                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
( ^/ |6 I: b% p9 V; \  b
$ G2 N1 L8 e! O; e

+ I4 u  u2 ~. `+ ^                edgeBlendBuilder1->SetRollOntoEdge(true);
" J/ M# r6 e% X+ a0 R' d  N% e1 O: ]0 N. T

, d$ @. G8 ~9 u% w                edgeBlendBuilder1->SetMoveSharpEdge(true);
2 R+ \. }5 i- X7 k7 |* Z# o0 q* o) ]# q
8 L/ h( W; E8 F
                edgeBlendBuilder1->SetTrimmingOption(false);) e- h3 W0 i7 G0 q, O: h
0 x3 x( y, B" V& p' n1 R
& i$ Q$ s+ d" o( F) B- j/ z( n
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
% f% r- j! M- x$ L; d* m/ g& [
, }1 N- y$ B8 y; p+ [5 F2 P: i" p

) F+ |4 M: |; l' J3 B: Z2 N# V+ g                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
" b( m6 g4 ~: g. V
9 P7 D: R/ ?0 {1 d2 O% \: _4 M  A

0 f  K" g6 {# Y1 E) p, c2 Q1 r6 C                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
; j: D1 f) b% Z0 c: Y1 V7 }5 G+ v
8 f3 O' A+ i+ P' N; ]1 B$ x
                int csIndex1;" X% K5 w; o2 C- c7 i0 a" W) z4 T
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());' U9 U# |; _( ~: c) F

/ V  L5 V  M; h# \+ s/ v. R
" f) G; B1 Z( k
                Features::Feature *feature1;6 ?) T  Y: O( j' a  Q+ `; g- \) K) E9 I
                feature1 = edgeBlendBuilder1->CommitFeature();
0 G" G- h! R* D# t) {! ^. B) \7 x2 _3 @) ^$ J
$ u0 {- v, P4 J+ ~
                edgeBlendBuilder1->Destroy();/ F3 U- S3 m0 M- t8 g2 A1 v: t

' q* W# M2 j- u$ u& i2 H5 o0 P& ]    }
- ?2 d9 C9 ]! a. t' u/ G2 x- e    catch(exception& ex)
/ Y) @" i6 K9 T7 `0 z% K# y    {
+ F- R$ J6 E" I! U, @9 W        //---- Enter your exception handling code here -----% q5 P4 v' a( D# H$ x3 {
        errorCode = 1;
) A" l! Q7 F/ ]# M        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());$ _. W5 X& l$ _3 ~  M+ \7 z0 K
    }: j, t& R; l) @( ?2 A
    return errorCode;
( {( q1 }; S8 i5 {2 S0 r% b}
2 [9 n, G$ K( Q3 ^* a5 L
3 e; k5 B! a8 y  {* s9 N
说明:因为字数有限制,这里只贴出关键代码。( [1 b2 J) c4 x0 J& Q

  v, ~) M& X; X3 T3 F+ M- Z$ b3 o; k& P  j, J5 e* T, O) i% j
. X* R4 w& D' e7 G+ _  ^* A! C
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二次开发专题模块培训报名开始啦

    我知道了