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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

" ~4 p9 ]: x% W* ]6 f. yvoid selectedge::initialize_cb()3 C3 g) k5 }+ Q; C6 W1 \& C$ y& y
{
( C7 A" ?2 D- a+ v( h0 T" N    try3 K: l8 G4 s' b; V( P  l7 S
    {
1 f$ V$ t* ]; {; c; J% t
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
( k2 C; E  T( Z; @. S        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));7 X7 B0 A" x7 x5 X
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
9 N- u& x" m/ ]    caTCh(exception& ex)7 F" Z2 B9 ~* o0 g7 w
    {" D! \0 y5 F$ I3 D3 T( ?  {
        //---- Enter your exception handling code here -----
% @" s) [/ K6 T( o        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());( G( o- T5 R8 `, {9 m1 r' x
    }: [4 t  n$ R, R& O/ {
}
8 S: w, ?" b" h5 k6 z* P+ J: G+ _5 @$ `1 ^- M
int selectedge::apply_cb()5 Z: Y1 O" h- Z4 \4 x& `
{% W( O7 y& k* u. Q0 i4 B, v& s
    int errorCode = 0;( ?4 t. h8 o* u& u' L
    try
% e6 o. S9 U/ w5 i; E, R5 y    {+ ^. i3 B! Q# y/ l# f6 m0 L9 X
        //---- Enter your callback code here -----+ w* L4 ?8 l0 e6 E% a6 D
7 U) M6 V* L9 I  g2 ]- k4 c/ c

% i& S5 {/ j, Y5 c+ _

, p. r' d  ?) @5 C3 q                Session *theSession = Session::GetSession();
7 f1 J- p  |+ w) z                Part *workPart(theSession->Parts()->Work());# O( R- e2 r3 C1 h1 t# \) H
                Part *displayPart(theSession->Parts()->Display());
1 x; K+ a8 G) o/ T. k3 ?% D0 t1 c( n: l, b' v9 m9 D- R

5 ~( |* R1 U  ~3 d$ D: A$ X                Features::Feature *nullFeatures_Feature(NULL);* K# N; X3 A+ K5 k& z
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
" d$ D0 [. T; T9 I                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
$ p, `0 A# F* T" u* I4 s
8 J9 ]0 u- R( N# T- K2 Z1 ^

5 J6 Q$ s) k- X+ o' }+ f/ m3 e                ScCollector *scCollector1;
5 A7 k* ~6 `# h1 p                scCollector1 = workPart->ScCollectors()->CreateCollector();( E0 ?( @0 v; I

8 h  t0 \: t0 [0 i; m

0 w. O9 d4 C" y, @2 A. r( {                std::vector<Edge *> seedEdges;  s9 J- m& d  X) O# O9 b2 v
               
- F) T; u; Q* p1 D2 J2 x                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
+ J2 }, S: S; R( Q: P  h" o                for (int i=0;i<selectob.size();i++)1 N7 l* q1 `9 L' s; y  Y( e
                {
6 [4 S! B3 o& n* U7 X2 F- I                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
! h, Z; y( \/ h$ O  }
" Y6 M& c. D0 @9 W2 q: l% P0 p/ }/ m
* r2 O9 h- S% y7 }+ [  double dia = expression0->Value();            //获取表达式的值
2 j( J% D6 {* z, P1 S                stringstream DIA;8 g% i9 o" W, K
                DIA << dia;
$ ]0 P* c! O( c$ h1 g# W+ v; Q3 C

: [+ l$ ~, E$ S- [8 |                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
1 |; Q$ u$ s4 J+ m: W                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);$ T; H. ]# h$ D3 [& T
- p" O9 N2 r/ m: {" G
) i. _( M& O) h& ?2 d0 y* \( Z
                std::vector<SelectionIntentRule *> rules1(1);
5 C8 n6 T$ |0 H3 s8 S. h                rules1[0] = edgeMultipleSeedTangentRule1;
( j! a" E; ^2 n6 c9 W" ^7 s( o9 V                scCollector1->ReplaceRules(rules1, false);
/ l0 ~! `. T; z( n2 T+ A6 c9 e' m/ V( b: K5 c+ }/ K
1 i4 M2 l( ?  W( X
                edgeBlendBuilder1->SetTolerance(0.001);
/ H' J4 T" a/ A* u7 D. F+ w2 y0 q- B/ G; ^" H6 G, ?

4 i" m: v+ K, A5 w6 e0 A                edgeBlendBuilder1->SetAllInstancesOption(false);1 Z3 T2 |9 d7 O  T6 d  T

; h2 c6 j# G* i4 R
! n. T0 S" j5 E1 u
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
; f. T# z) n: I2 M! N: T) z1 G+ b! }8 [, q+ E) B8 D; \  S
$ m' f  u1 a4 p) i+ x
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
' o; z7 A/ ?9 V- l, u  t* z# B, q2 _1 a+ O- [7 h! p. m
$ Y+ Z9 T+ p6 R# h% c" ~
                edgeBlendBuilder1->SetLimitFailingAreas(true);
4 W/ x% j$ k4 J5 x* M! y
  Y8 z/ k# {$ U6 m$ \

  `; F8 c: K% N# B: J                edgeBlendBuilder1->SetConvexConcaveY(false);
2 u3 B% B- d# e5 X1 T
! X* ]! T# M0 E2 n/ q( w- ~

! G/ \/ O9 z8 [9 w, F# b* ~                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
& K/ F( x. b2 G  N: m# q2 I5 u7 I7 o8 y, r

8 X+ C# x0 A( o9 [2 C6 ^1 f                edgeBlendBuilder1->SetRollOntoEdge(true);) s4 b7 J4 d3 U/ |

9 ?, a7 h# D4 x9 @8 h
, D- X) k2 D. f! ~% \/ K' C+ b
                edgeBlendBuilder1->SetMoveSharpEdge(true);" ^' @* n% O$ H1 `

1 W9 |' _" C4 |, U% z1 N

9 H6 T& v3 J& @6 [3 V& O. |                edgeBlendBuilder1->SetTrimmingOption(false);* u! p$ }  |5 n; [
) X! X# W2 Q) j, @- g+ ?
. c! t: {1 f, i/ ^0 s1 f
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
" U( x. v" S. r7 P# V! O% U7 O) R* A! P& T; c: O5 m* @1 u+ T+ o

3 k. w; U. z/ ]& V9 X& f                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);& p. \3 h/ S/ B; T* {( L
; q9 T- W# \2 D: \8 x2 d
# ]. p1 }$ p' }5 j+ }8 A: \) _
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);" c% w5 L1 a6 ]8 e1 K+ Z
3 {' J/ w. P9 t' ?* [" G& L  a( Y

( }* N. n1 b8 G                int csIndex1;9 M; A2 z7 d, [$ M# H' [
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());/ V  s9 Z+ ~4 N/ o; b

* N/ H# ~$ t5 E6 y/ C* s6 y

) E0 N; z  X' a0 r' F0 Y                Features::Feature *feature1;$ ]$ i2 q& W" ^! E" S" E9 {
                feature1 = edgeBlendBuilder1->CommitFeature();
% z5 ]% B8 l+ }; i& O, c% r/ x/ \3 ^- \" W1 O+ f  Q4 a

6 E# ^9 V5 ~4 J% v' d                edgeBlendBuilder1->Destroy();- [4 ~7 N7 r! f- d0 w- Q
; L, a6 R6 i% P, q1 L, H. S, t
    }
; [8 d7 M$ h6 s0 d+ U    catch(exception& ex)+ n/ O( @3 W+ b& ?
    {$ ^- Q2 `/ H) E6 _
        //---- Enter your exception handling code here -----, {6 Q5 _. V5 h8 y. v
        errorCode = 1;
! _- ~& s8 {0 ^8 ?        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());' b3 w# ?% R4 l1 [) r
    }
( M, o  w3 |8 T0 `' i! K    return errorCode;, ]2 i( B$ G+ d4 L' b, a4 w
}

8 [5 D" D8 d8 q
% B- T/ |3 K  d8 |
说明:因为字数有限制,这里只贴出关键代码。
. M5 r2 ?# N% \" F2 y) O; {
/ `' q& i) ?# O  H) l4 U+ ?: r6 f8 f7 X2 p# o9 V, {7 V

- X; n# R# j" [3 `1 v
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二次开发专题模块培训报名开始啦

    我知道了