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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
/ w  b% l6 p! z
void selectedge::initialize_cb()
+ F2 Q. x7 [" S, N' Y$ c{
, K" g( A: R2 C6 B6 p0 Y5 `2 @    try
4 I% p% P  H5 j' {+ V    {

& e) M! v) j8 i+ @3 b        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));3 t% ^; T$ Q9 J( j8 O
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
1 @! P& N7 G, U0 [% @        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
9 }% n8 K9 ]' _/ f# \( @2 f. C    caTCh(exception& ex)
$ H  _+ ]) S; r! O    {8 v) h) y8 u9 w) A
        //---- Enter your exception handling code here -----% H0 B3 `4 V' @! M( B
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
- k6 F  S1 D1 J0 R    }
; h7 t5 \* T0 C}
1 p) g5 f" A8 _* h5 n% \( L) o2 W1 Q1 i- U7 }2 I" ^/ Y) ?, e5 ~
int selectedge::apply_cb()" g! e7 P( s5 [$ R
{- e6 ~4 b0 ^0 C. G/ a, a6 B6 k
    int errorCode = 0;9 Y; v9 s. R( \6 B. N3 H; B# W0 W8 F
    try
1 Q( B7 I6 W: c" j5 l0 d    {$ ~: m: u7 e3 v1 t" N$ x# m
        //---- Enter your callback code here -----
  D: y0 z" S0 o4 \- V- Q& U) w4 D* u* d
2 h6 g" f, \1 \7 o7 `; K
5 W3 R; D$ s2 c3 U8 r
                Session *theSession = Session::GetSession();3 Q& S6 t+ y$ K7 @* ]8 A' g7 {
                Part *workPart(theSession->Parts()->Work());; N5 T2 g& m1 p$ c+ d
                Part *displayPart(theSession->Parts()->Display());
& X" f! A- L3 U5 T2 V8 N
$ m# S7 G: x8 t

1 h( C" I. V: V) ?" J                Features::Feature *nullFeatures_Feature(NULL);1 J- i, j- F9 t. p2 A% O
                Features::EdgeBlendBuilder *edgeBlendBuilder1;3 {0 K' C2 L  |* s8 k) u- R  l
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);* |( r+ w' {0 l0 |: Y6 j# J% s1 w$ u
( \* j( G. a6 _0 b6 O; Q2 @; l1 C+ R0 W
# W6 d/ c4 Q5 ?) }' \; h2 i, d& [9 X+ B
                ScCollector *scCollector1;
$ f( V5 f& b, W% i) N                scCollector1 = workPart->ScCollectors()->CreateCollector();8 N0 N8 u! X; P4 t" d0 Q9 G5 k- P6 }/ t

( B: s% Q2 y. f5 E

3 s) m/ N* }8 h0 ^7 p                std::vector<Edge *> seedEdges;& |0 l. Q* d  I6 L/ B7 |, @
               
! w! v) p$ Y" K) F- o# z' ~                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象$ p6 v2 Z- i( A6 e- _
                for (int i=0;i<selectob.size();i++)
' w- g% b7 M; o; J) |                {
6 R  [" F0 z- D                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
6 w. }8 x" o5 d6 g6 J( A  }
) {, F5 r% w9 _" G( c- Q5 A
" C( ]4 ~1 }8 q4 j# \7 F5 n! |; n  double dia = expression0->Value();            //获取表达式的值
- {! ~& p! u; {2 L5 F9 a- k7 S1 [                stringstream DIA;
0 ~- H  N) I9 G& {- W                DIA << dia;1 Y" H( m. j2 L) W1 Y
) j5 o# _/ t* y' Z9 e
- z5 v$ }3 r) T1 D
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;9 L( C6 Z' p& m+ H" _7 a9 n. Z
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);* E: o5 z( f, k& t9 Y: e( q

9 U0 V$ a) t3 D5 t3 [

( N: i1 i7 a, D; K. W. {' U, M                std::vector<SelectionIntentRule *> rules1(1);1 @/ r1 D" F7 k; E: ~; L0 z! ]
                rules1[0] = edgeMultipleSeedTangentRule1;; M5 m! ?  {# M$ z  V$ Z7 J6 v
                scCollector1->ReplaceRules(rules1, false);0 d4 ]6 k! o6 M2 W. u/ n0 ]& U

0 b: l% c1 d& b, v1 s+ l+ Q

4 i5 e' B: ~8 B# f7 Y$ \                edgeBlendBuilder1->SetTolerance(0.001);
. @- j% M$ k, ~- a) x; A& Y2 b) s& C

5 B9 H* E% B" d$ h' S& {6 C                edgeBlendBuilder1->SetAllInstancesOption(false);
" T5 C& x2 w+ f( W
$ Z1 G+ T$ H  |

3 u. e) O0 f( b. G6 P$ A6 _                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
7 T" D' E! r) z" U1 ]$ T8 {9 j: g  T3 X0 L5 C

% ?. D1 J4 n3 X( i4 A" J7 `: g                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);& m% X# ~2 L: I0 A+ y

+ j9 T7 s+ Q  O/ J, w

$ L) E* \/ b5 E, S- q7 d3 c                edgeBlendBuilder1->SetLimitFailingAreas(true);
7 W  f5 _! q7 H% Z1 D- C2 V+ p% k& D1 C2 N5 X
+ e4 g* j9 ^1 H2 r
                edgeBlendBuilder1->SetConvexConcaveY(false);! s4 m1 x& C. \0 U5 I* S/ n0 p/ o
+ E% \) }* g+ w4 E& f, R9 h+ G6 s
5 O, X$ m' H) f: Y' z$ d1 Y3 K5 V
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);, v8 b! D. x' x* z( |0 h* N
: t9 K. T; a0 M9 }

, z. S4 k7 v5 \6 f; M                edgeBlendBuilder1->SetRollOntoEdge(true);
( r2 w6 p, O' @
3 i5 i  _5 I* W1 d) y
& r* g* X" F- B) c: m! w
                edgeBlendBuilder1->SetMoveSharpEdge(true);
5 N7 B" [. ]; `* W
, B. P8 B" g! q' o, ~, f' V& z5 s
) e5 Z+ r* s3 X
                edgeBlendBuilder1->SetTrimmingOption(false);
" l, z7 r5 }8 i
  F* E# C4 G3 v' l4 f

  W! y$ ^* b2 i' _% b                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
: N/ m1 p& D- t$ [
, r; i* s# ~- n; ~* ?  P" x: P

3 u) o6 X5 O0 Q7 i4 ]( A$ }& V0 f1 F                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
7 N7 r/ f4 V8 ^2 A5 i
6 ?. @- V% z0 T, Z2 D5 D$ t: M9 M

- H& E- d  T$ }% b9 @, e) S( ?                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);8 L4 h8 |* f* T& y  f
. I5 C/ K5 g: H) w
; t/ Y. o/ x3 w7 U8 E
                int csIndex1;
0 Y0 x3 z' H8 |- q$ j) L                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
# U4 y, c0 P/ a+ ~7 b* z: ~7 o* ?- ~4 j2 ^6 c4 N' z( G

9 E% |! B$ N" S$ C5 ?# E                Features::Feature *feature1;
1 _* t4 y; F1 V" e' g' T* ~# l3 r                feature1 = edgeBlendBuilder1->CommitFeature();
2 B/ h$ i: v* X' v7 m  W2 G- _( i# u7 W4 p, s4 `/ Y8 ~
! H* G- n; J+ X4 d, v' Z, {
                edgeBlendBuilder1->Destroy();1 x9 C% y1 V+ F8 A/ o
% y# d: j( f( e
    }
+ z$ j- S2 g4 v! Z+ ~    catch(exception& ex)% g4 H! P* a0 ^0 }2 W5 r9 ], J3 [
    {
9 @; D; m- d' x5 \2 o' }        //---- Enter your exception handling code here ------ D2 M" h2 i7 e6 r+ o: m# G
        errorCode = 1;
) H! K9 [2 f0 ^, W7 F  K        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 j- i4 k) B" M3 A, A9 B! p7 Q+ Z
    }6 V$ S! T5 e& k: I
    return errorCode;
0 y5 u+ W9 [5 N: E}
4 ]! x$ q# c( O  ^0 r" g  O; c
7 I2 N3 R$ C, U, Q: N# j; n
说明:因为字数有限制,这里只贴出关键代码。* p& L+ L. j2 \4 q! i! A

. `- ?2 r7 _$ S9 F2 I5 v8 G0 B& K; m0 M
+ k2 c) C% r7 Y+ g3 l
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二次开发专题模块培训报名开始啦

    我知道了