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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
: _8 c# N! [9 T& A' S" W5 q
void selectedge::initialize_cb()0 J8 s4 }' c- ]4 y9 w
{( f; l0 \) ^- B( q7 `5 i
    try9 t4 u# C( ?6 Z8 K8 m# }* {
    {
) N, D' [, N! y* i) a
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));1 d$ e+ B& o, x% ^
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));9 Y. Z/ A5 a' u" f
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
  c- G! y0 {8 L# V- N+ R    caTCh(exception& ex)
9 ^% k% a. F1 X- w2 V+ P. S& t3 \    {, W) l3 \8 r3 _  b( `6 B' c/ v0 m
        //---- Enter your exception handling code here -----
: Y' H  s, o- t6 G& p. ?        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());: x. q/ K7 e4 o; r1 {
    }
$ X; N6 u5 E$ C}
; y5 P% T- v. o3 a% }, n( [& o, Z5 }7 V, c& b( f
int selectedge::apply_cb()" L, e! E" v2 }) w/ i
{
8 [3 B. V( p& f1 h, O/ z! ~    int errorCode = 0;
2 N  _  y6 z% D7 t. _$ G, N+ f    try
4 f- L5 V+ m  N- S2 w# j    {
) `* U' Z. Y! W/ q1 x( n9 T        //---- Enter your callback code here -----
/ r& U; `0 Z4 Z; l" S1 v5 Y/ P( V) S$ \
) ?; P) r8 N2 P" z
: j* s6 }+ `6 O# z" B
                Session *theSession = Session::GetSession();. ]1 `% V3 C4 x, A3 G1 O5 q9 F
                Part *workPart(theSession->Parts()->Work());
2 b1 q, c' {8 L1 M* ?$ H                Part *displayPart(theSession->Parts()->Display());
: u1 R  d) j1 Z4 h( y" ]
' l3 n. y. T* O/ o

% |. U* `2 w; ?                Features::Feature *nullFeatures_Feature(NULL);
# ~- d& W) d7 e                Features::EdgeBlendBuilder *edgeBlendBuilder1;. p. S% r% F9 e4 k: C) Z6 c
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);. v8 t' N+ j" M7 _
1 K  o1 j- w, F* Z
+ X: Y5 E: D. Q9 i" u- G. c* r
                ScCollector *scCollector1;1 N, n# v) l4 X/ i" Y- y3 ~# K
                scCollector1 = workPart->ScCollectors()->CreateCollector();9 s& m7 @2 _* N2 Z; S1 J% W; K7 I: i* l
0 x7 Q* S$ \3 |& G; P
2 C; c, D3 C! o3 _1 `
                std::vector<Edge *> seedEdges;
) T* n. V9 R5 n* K" C1 A               
: l/ b$ Q) T) @# L5 N                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象# t3 l6 I9 ~) a  U- p; V; b5 E
                for (int i=0;i<selectob.size();i++)$ x" q8 t+ _. T$ E- y" i
                {: y4 l: [) ^4 p! S8 q
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));1 b  Y$ y% l* z5 A3 ^0 t' f
  }
1 d! }4 g6 x  y, j2 n" F, t0 E7 Y( j) \3 e. _  D1 m' W0 V7 w5 z
  double dia = expression0->Value();            //获取表达式的值
( |" A. B/ Y% Y! Y; k) g                stringstream DIA;
9 z: z; V) s$ J  _                DIA << dia;
* Z- K. |+ _' ?1 `3 G  p
3 N7 X  }/ @: ?9 W0 r

% f+ U" I4 S# w  N' Y; `& Y                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
% W! U& t7 H8 K1 ~- A7 ?                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);( }6 c, \9 a6 ^7 |( d. o" H. Y/ o

% A( T9 U5 t5 O7 Q3 X  o
- ^8 @, Y$ A" j9 J1 K7 M  L4 w
                std::vector<SelectionIntentRule *> rules1(1);
# s8 m; |* ^' M9 w                rules1[0] = edgeMultipleSeedTangentRule1;
9 t+ B2 f: x' ^% b7 s                scCollector1->ReplaceRules(rules1, false);8 `+ o- U* Q! s/ N. v2 I) l
# S7 ?! r9 b. T8 B/ f& I

' r0 B! C6 L" Y9 a+ k! D                edgeBlendBuilder1->SetTolerance(0.001);# C* b7 \3 }. W- t3 y+ D: Z# K

+ j/ I4 y+ T. W* ]: ?9 W" w

. h6 {0 w0 K! ]; s                edgeBlendBuilder1->SetAllInstancesOption(false);
) Y! j- V6 F5 A' l0 s7 x8 a+ l7 Q: M! Q0 V
# S) P7 F% W: C$ G8 h" y3 P3 y
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);( ^  ]1 U2 b+ ~6 M! r  n9 ^

7 r* Q* h1 [/ r

& H# ]( f/ B" y6 z4 y                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);5 u' J; N- i( f% u$ ?) @, t. `- G# e

8 J- {( A% Z- B% {" s* g
4 ~! K; s* d* U* \2 Q) h# T
                edgeBlendBuilder1->SetLimitFailingAreas(true);) C* n: M* D+ n, [: _8 d( M2 L

7 b* v* @/ V! E: X& f, ^, x

+ G8 I1 ]/ d) r; t                edgeBlendBuilder1->SetConvexConcaveY(false);
# o* h1 d/ R" k4 O) P& y& M- j7 k* Y. c( q' L) K" c

9 ]1 u+ m, N- x* T0 \                edgeBlendBuilder1->SetRollOverSmoothEdge(true);$ V  {2 q- P" `( |! C: J' G
/ \+ ?# B6 T( n, J" K& L/ P$ ?. T

( h, u+ x* i+ I) A                edgeBlendBuilder1->SetRollOntoEdge(true);+ Y6 c$ w4 v9 {# g% P

2 d0 K# j5 o% o5 \( b2 |

2 M3 I7 A- o+ Y/ v                edgeBlendBuilder1->SetMoveSharpEdge(true);
; Y9 w; `# @5 s$ b( G7 O
8 P! d& y7 r' i. M0 K
/ X1 i6 X& |. d5 X, R
                edgeBlendBuilder1->SetTrimmingOption(false);
7 ?, D/ ~7 s2 W1 f/ U% d! w9 z2 \1 P1 `1 P! i+ |9 C( m
, A- W( M' `  C9 E4 @1 A! Y9 L
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);' l; d. r( t5 Y
- X3 h% z$ Y. q" v- o
8 J; Z) _4 M  q% Y% M
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
) O1 R6 e% D, o" x1 b' q4 _7 G, X7 H) A' x4 z
6 Y! ^; r1 c0 @5 z6 f; D3 X
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);5 r3 k6 f% @6 n) X1 i3 {
. P2 }2 r/ J, j3 _) w

, M) U" ]" i7 ]$ A& i8 F$ C, d                int csIndex1;* g" H  l/ ~' k3 z
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());. K' ]$ {2 O+ ]7 t+ p
' p! h$ e* A- X

! j1 \  T, e: b0 A9 R7 u2 O, J                Features::Feature *feature1;
6 D7 a/ P/ d+ c                feature1 = edgeBlendBuilder1->CommitFeature();
& k& g1 h  R8 R; O" n! ?
; r/ l7 \/ ?+ z9 h

# y. ]6 d3 y, K0 h/ @: S9 l6 p                edgeBlendBuilder1->Destroy();, S; d- m, e# V* N% T, C

- z) j& T. _/ U6 P1 I    }2 d6 o  G2 U6 Z! J4 S' W
    catch(exception& ex)# i6 ?8 f' x8 \6 W
    {
( J: ^, V. b4 f8 }4 x        //---- Enter your exception handling code here -----
: u3 I0 a! k' s' o! k6 ]        errorCode = 1;
1 a8 G: b9 ^- p" S# K* i( q        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
7 Y* [4 k! p. G: Z    }
. O3 N8 v- K7 D9 u    return errorCode;3 v1 n) C6 G: B" Z2 r8 e- H
}

& f3 e/ K" E0 ~2 k# Q1 t

5 s# U) b: O+ K7 z" m说明:因为字数有限制,这里只贴出关键代码。6 i; J$ q5 F6 P( f3 }- `% |
. S! ?+ g4 _2 Q2 L) d8 B0 L6 }' |" H

2 b+ u+ ?, K8 x! ]# ]1 J

: D% F  {  j0 \2 w7 o
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二次开发专题模块培训报名开始啦

    我知道了