PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

. [' V1 d, G, q, A) ^8 V' m7 x/ Yvoid selectedge::initialize_cb()1 b% I. p% I& N5 m( G
{) b& J( M' v; _# E
    try
  L" w* s9 F- s- c    {
. `% d0 b' ~! c. B( n+ ?
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));! }% t/ J$ Q" ]* _
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
! @6 {- Y: A: a4 {        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
9 C' V1 X: s7 t# f1 h& A" c8 t    caTCh(exception& ex)
+ z! E9 j, B; o2 \: i    {0 ?1 j# t; J" M; c& j) l, R" q8 c4 p  b
        //---- Enter your exception handling code here -----$ R$ R5 B4 T/ r' d* a( P' Y
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
+ X! v: V2 {' J9 r/ M    }: b/ s' U6 |. }* @
}. D+ n" m8 _2 b6 R
8 A: ^$ j, k# v* S" ^3 ^. Z
int selectedge::apply_cb(), L& S( X9 L$ m2 {1 K7 Z
{
0 J7 i! c7 X3 e2 c) P    int errorCode = 0;
+ A' x( y, C0 V! K    try
. y# V' O8 ~  M2 ?( K% q; g    {; N2 ^2 I8 n1 \* i5 k1 z
        //---- Enter your callback code here -----
0 a: n( b+ |$ n, e# [
7 z8 {* q; c% B. d2 @
$ y7 t" R: X9 D/ \9 h
( x' m6 U5 o6 O1 h6 e- I) r8 U
                Session *theSession = Session::GetSession();
( {( p' ^/ w. A                Part *workPart(theSession->Parts()->Work());) y6 Z# B& n% n- {6 T  F
                Part *displayPart(theSession->Parts()->Display());
; Y2 H6 M- w) s0 L& M) |7 p: X
& g1 P6 ]; C1 `! z6 a
- @  L! G0 D2 d' g5 f$ [- |
                Features::Feature *nullFeatures_Feature(NULL);6 s: Y' p' G2 I8 l% r; N
                Features::EdgeBlendBuilder *edgeBlendBuilder1;- W" Y$ [( ?* I( B
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
1 X& u: ]+ f$ e3 T6 ?
0 x: I# f- ?" m/ G$ w

1 i! M7 G; R- ]  e3 s( v                ScCollector *scCollector1;
( G9 D& B0 m% ]9 g  n                scCollector1 = workPart->ScCollectors()->CreateCollector();
3 z, j/ `5 J) B, N6 ^& M5 l
1 H4 y! o) Y% Z9 w

; j8 X. n" {/ m7 Y1 l! u                std::vector<Edge *> seedEdges;' _: v: }- S: D& j* q- a
                + M/ G) t( M0 ~
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
% }# a& X5 i+ u# K  Y                for (int i=0;i<selectob.size();i++), s9 S: U. a6 q" w
                {# D4 }6 a* n3 @. y' r
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));, L- O# c: {  h, [  g
  }& _7 }) B4 ?% N. W. J+ T; Q
' K6 n8 b0 r# ^- `8 V2 c% O1 c
  double dia = expression0->Value();            //获取表达式的值  `% b( O, [: `3 E
                stringstream DIA;6 L9 ~+ ~2 C  `1 D9 N: O
                DIA << dia;" ]- |5 G* K' s* x  n

0 m% B& R/ _* ~9 Z  Y( Q
6 s# L1 K7 i* Q. ^; `  U! ^
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;0 J) v# M$ W2 s4 X4 \
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
6 C$ }0 n: z" r& D! _& H$ @( m# T6 s7 t* I% i3 s

. d2 N' b6 ]) w0 @4 i8 V                std::vector<SelectionIntentRule *> rules1(1);: [, F: _, a: y1 l0 a8 @; I
                rules1[0] = edgeMultipleSeedTangentRule1;
% I7 N6 r. Q" x' k  \                scCollector1->ReplaceRules(rules1, false);
. M& e2 |5 Z/ \4 X
7 S  K" P2 ?+ `

9 g" d' k, \: O6 ]& E" F                edgeBlendBuilder1->SetTolerance(0.001);
9 w$ q! h% ^0 ]+ X. E9 O) x7 S& c% C% [3 m0 d' V/ `! a% ^  W  ^
5 F; M8 Q0 f  D8 T
                edgeBlendBuilder1->SetAllInstancesOption(false);
/ E* n* v+ z$ f- }& g+ Y. }3 @
5 G0 Z+ k9 Z1 l* t5 N( b2 T2 K

% T5 _: @9 f1 S7 a# h  q                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
" X4 i) Q  f# F" L5 K9 j9 U2 F& A  i! ?7 P  u

0 o  A" g- ^0 I3 I" V( x                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
' D5 A+ G0 f1 }. m+ ^) R6 X7 w1 {  ~5 P, N1 u4 y$ ^. C# G
# [$ v6 z7 [% ]* R
                edgeBlendBuilder1->SetLimitFailingAreas(true);
, C: S+ Z: i( [7 y
- S$ {2 ]% a9 J

* c, g( y* G" v8 {' n" y                edgeBlendBuilder1->SetConvexConcaveY(false);" V! `, d7 K9 r% @- d) C

3 L! ~# A& d# i
0 R6 K7 w3 v' k; C0 K" }" v
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
1 ^: F/ K# @* h! {6 e4 P6 e( |+ ?' ]6 Y+ |
/ k5 }$ r( d) {$ b4 H
                edgeBlendBuilder1->SetRollOntoEdge(true);
) _5 Y+ m& t7 z7 ~- ^4 |6 ]+ L$ J( D! v4 j8 c: D4 h

( e: H% d) E  [, f8 x                edgeBlendBuilder1->SetMoveSharpEdge(true);
8 ~; I  b6 L  c
9 T6 j. @$ Y, c8 Q4 y

! m- H: T. C% g/ P: {+ H                edgeBlendBuilder1->SetTrimmingOption(false);9 n$ d& C1 T( Q4 E0 @

% H) w2 k" w: I, T

$ D: Z! m/ k# D+ |& e; B, a  [                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);# P2 U9 Q; w# I! i, n8 N
% F1 j1 D5 C0 W! c7 m

) @$ U% Q1 V5 O( r( J  C; e2 L                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);9 T* H7 O6 g% s. P6 f

# w1 c& `- z, o* j

# g% X8 m8 z6 a. j* w, R                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);6 R) X  ?2 C4 }) h( g% W

! ?6 A0 ]9 X$ X' ]

/ R" d- ^3 ~/ a& Y: r. o+ n; ^                int csIndex1;  @9 n3 ~2 s' U! P* [7 S
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());9 h5 M# q! Y5 T) k

2 q$ \0 S) |/ A5 R

" ^$ x, V' Q  w' H3 P9 F                Features::Feature *feature1;
. M; _8 j  w- `+ w                feature1 = edgeBlendBuilder1->CommitFeature();, X- C/ F7 c6 h

4 ?7 B% D3 t  @5 Y5 Y
# V- a2 n; e% |% B* F8 i- x& I
                edgeBlendBuilder1->Destroy();+ K- P' h, _- V7 M7 j

4 f9 p( ?7 Y5 ^7 Z    }
4 g) O" `3 T0 H  A3 ?7 ^% I) U+ K6 k    catch(exception& ex)
2 t6 @# ]* B& Z/ J4 a3 z    {
8 a) b! Y) e4 i) H0 S        //---- Enter your exception handling code here -----! c6 @0 \  A& H# ]% i3 U9 S
        errorCode = 1;
, P# }6 f# w. H* ]  v        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());( F8 m4 u( V! ^7 M
    }
$ g5 _& S- _8 n% `/ v    return errorCode;+ S" D' V' }3 W9 X: K
}

9 {8 i" {( o- W  F4 B

+ w& [5 t0 x5 ~) ?) X, G- N说明:因为字数有限制,这里只贴出关键代码。1 ?0 K6 `+ _/ E5 r+ n5 Z+ p: u

- N  ^  y# H: Z5 Z2 X. D/ h
, R/ b2 _6 Z0 s4 L% {+ i

2 w& E7 M( C% e" J, |
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二次开发专题模块培训报名开始啦

    我知道了