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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

2 y( h4 g, ]; S2 bvoid selectedge::initialize_cb()6 d: q5 V8 d+ D: _) l
{
  Z$ p' C3 ~2 z' O4 E    try. [4 r8 e. p* `( ?7 z
    {

" i6 A: |( h8 p1 X6 r0 G        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));5 h- j5 H* O7 `6 ^, ^% g" e( u  }
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
+ C% x3 ?' R( c  e- M9 H        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
6 J2 @" s; P0 m. D9 C    caTCh(exception& ex), Z8 O- h. x* v9 w
    {8 L$ i; T' @/ g1 w) _2 T
        //---- Enter your exception handling code here -----; v0 F) O/ A2 `' v
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
0 q$ h, l6 f3 Q. {; y2 q    }
) ~, ~( _5 b8 e/ O% q% @}
1 R" a+ f9 }3 s% \  w
1 i  b. e1 x; G9 S0 {1 |( pint selectedge::apply_cb()
8 Z9 f, {# E; A4 k- l{6 c! n' Z( z. s3 ~8 z# n( f4 o% ^/ ~
    int errorCode = 0;
2 u4 z0 O3 m% D+ M0 m3 S# ^- \    try
. X& e4 y+ ?* I    {( w  R1 K0 X. ?: x0 t
        //---- Enter your callback code here -----
7 J+ G; q) a7 W& A5 U2 p
6 ~; o3 ~+ ^3 Z, _
( [% v0 {9 Y* v. o. T: }
4 R7 B, y9 w+ z  m
                Session *theSession = Session::GetSession();# x) B" c+ G) I; E& n2 v3 \
                Part *workPart(theSession->Parts()->Work());( K6 o) m+ y) Q1 u4 l
                Part *displayPart(theSession->Parts()->Display());3 L4 @% @6 B1 v2 S/ J9 D) ]
* m8 v6 P& Z: X7 ~/ P
! `& G3 p+ r' z# y; G9 ^0 j, n' a2 x
                Features::Feature *nullFeatures_Feature(NULL);
4 A& _" j" J6 x2 j" K* b                Features::EdgeBlendBuilder *edgeBlendBuilder1;  a# e) j  I' n7 c( D2 p
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
" Y9 @; x( A/ M; Q9 M
- l/ S3 B, S# Q( h% g, C

% u8 p8 M) ~/ w                ScCollector *scCollector1;
, u: B' C, N, R0 ~$ c8 u                scCollector1 = workPart->ScCollectors()->CreateCollector();
' l7 [6 m8 ~0 X4 E, y, v( }9 H1 b5 }, T) ^( W# `2 c5 n
& r" ]$ k/ p: C# T9 c
                std::vector<Edge *> seedEdges;+ d; Z4 }  V* @# i& t
                ! H1 @6 \# x' L
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
! B) ?5 Q" X7 ^6 w                for (int i=0;i<selectob.size();i++)
7 Z7 @4 ?# l1 f( {+ X; e                {% B8 _( ~& H1 O& T3 y' \
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
8 ?- o# B. w. C, S  }
, n. V/ q' c  g; e" z# P9 P# [- E7 q- Z# a* K
  double dia = expression0->Value();            //获取表达式的值7 H) X0 o* w4 t5 f0 r$ Z. u" {5 Y
                stringstream DIA;
0 N% c/ C2 e2 k& n2 D2 J                DIA << dia;5 C$ o7 u/ E$ b; ^0 N8 u% k, y
& ^! c" Z& V& S  z; i7 Y
" x8 c( ]8 z; I
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;! b" H3 v  m: \' I3 ]9 G
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
% V. Y/ {! Q+ g" ~4 u) o) K
; ~  r5 J' Q1 Y8 V3 b, `
- ^0 D6 L' E5 `) Z: J
                std::vector<SelectionIntentRule *> rules1(1);  B7 K0 C; ]3 t, L* v- ^  g2 \
                rules1[0] = edgeMultipleSeedTangentRule1;
: {6 i  }3 H  c6 n  ]# c                scCollector1->ReplaceRules(rules1, false);+ W# y' i2 Q6 y( I
# p2 j) Q0 b, C

3 U8 r1 H  `; @6 }2 Q5 S                edgeBlendBuilder1->SetTolerance(0.001);3 W, |1 A6 C6 o% ]" l

% E& Y/ y8 g8 G. h3 P
9 V/ a( q! U  }/ R1 A0 a1 ]
                edgeBlendBuilder1->SetAllInstancesOption(false);
) Y4 x( M$ ]# t
& E2 j0 d1 d8 \7 _8 \( z/ C1 T

. i1 }  x5 G) _, Y                edgeBlendBuilder1->SetRemoveSelfIntersection(true);" a: x% z9 s& a- L9 n* m$ _$ O

+ V. [& M! ^' m' N1 V+ N0 f

, o, U7 C$ b( D* n                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);: [+ E+ X- t8 s" e
" l  G& ]: A3 N. N+ r1 h9 }1 u& N6 Q- I
) N- }! J: A7 I1 l- d! N8 p& _
                edgeBlendBuilder1->SetLimitFailingAreas(true);+ |* S2 \5 x& o5 i
' D7 N, i; F4 o5 D
; c  X2 p* L( ~. K' j
                edgeBlendBuilder1->SetConvexConcaveY(false);
0 d, _2 Y! K2 k; V* B+ t6 P0 E  u% y6 m: K! x
5 ^% e1 p* z) a2 V0 u
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
: G$ {3 l1 X  q  O( f
- c9 O  H/ Q5 Y/ l- g" S5 G, h; u5 t

7 o, I9 d/ ^% ?% e: A& l9 w5 f                edgeBlendBuilder1->SetRollOntoEdge(true);
' O" W5 M* ^$ e, d. ?- @5 K0 D! L1 Q8 i, T- r4 a. ~# y( ?5 B7 L5 F- t
: T4 X) M1 H- i6 v% S/ h
                edgeBlendBuilder1->SetMoveSharpEdge(true);
& h6 R+ M1 Z# q. r! S2 a/ i
# I& \9 e# d3 a. @

$ Q3 b# e! f1 ~  L) T: U" L; H                edgeBlendBuilder1->SetTrimmingOption(false);* K9 |7 _+ E$ G, @& u  Y3 D/ H9 H
+ F; G9 k# G( ]8 `. n& b
2 e$ v9 P0 w" q# H, f& t
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);  ?' j# _( ]5 p8 n  R/ }
% \/ l( p$ A2 }" w

& @+ T- m# }+ j- ]9 ?, L$ z9 P# s                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);5 B/ k3 B9 K" d, S' g
' |) O( n& F# k

6 R2 M1 G3 R( }; d& R                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
( V- b  w5 }2 Y% @, O% h1 z' [) o& H/ n( g4 s' f
9 ], J: y2 L3 s; W
                int csIndex1;7 |$ h: @8 b) {2 i! |. C& e
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
; E, o4 y- j* ~3 `$ T8 A8 ?; P$ [! ?, L, _: D8 J" n

% R6 D% k4 U- N& \                Features::Feature *feature1;& Q! b7 z, V8 Q, a  I' ], T+ u0 s7 R" n
                feature1 = edgeBlendBuilder1->CommitFeature();
9 ~/ o/ D* d! }6 L
2 G4 A9 a# v: |8 @6 T% p6 y& v

4 @" V7 `6 ~7 D/ U# w! i                edgeBlendBuilder1->Destroy();
2 _7 B: M5 }9 ^; c
2 |/ b3 X* e  m3 k  n9 L6 A" i    }
; }) H) H' [7 ^    catch(exception& ex)
/ ?; T# g6 H3 i    {1 T; ]4 `, G) f/ B: C  V; e4 {* x
        //---- Enter your exception handling code here -----, J, A0 @- }4 p( b8 T
        errorCode = 1;
  B( L# R" P5 |  P! C        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
; m, t- W2 _  y8 R" i    }
% h0 l1 ~3 y9 }: B7 l- E; v+ H    return errorCode;
7 n3 S  `3 y0 s' i, o) y}
& @2 G5 p3 B% r+ s& K

9 `0 q% l/ h$ D说明:因为字数有限制,这里只贴出关键代码。5 ~6 }' t1 }& R7 a; f* r, l- N

5 x. q9 E5 x# a: F4 C
7 q9 r6 y) `+ `: d1 ?

  q0 n- J1 A' [$ m
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二次开发专题模块培训报名开始啦

    我知道了