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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

$ \, F+ {3 f2 N$ S) N4 {4 uvoid selectedge::initialize_cb()( q) W( \, u9 T1 ~. g- Q
{8 m* g2 ~9 i, \9 U/ `6 @+ j
    try. r5 K2 Q- k; r1 ?
    {
( ~. w% J8 `, w7 k7 C5 t, O
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
; m; L! v4 i) x+ {3 D        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));1 B1 `6 `, y1 Y* u1 \, t) m
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}4 G6 V4 `5 M* \  x
    caTCh(exception& ex)6 X" {4 f9 p1 g! u8 b5 S
    {  ~9 F( a( w4 }9 a4 C. I+ z
        //---- Enter your exception handling code here -----4 }/ O& ?/ W  j% b7 J/ M# [; v" Q
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());$ A9 Q+ C% w3 Y" ?3 n4 }
    }0 u5 ^* t; t0 Y: G& |( F
}
! A- o, Z5 l- i0 y; a) E  v5 c3 v3 }# y( G" q$ t! i
int selectedge::apply_cb()9 q- t3 P6 i2 q5 k* X) E" l
{
" Z0 }2 q( Z9 T5 @    int errorCode = 0;
6 [" Y8 [( t5 X1 a* d8 g1 K    try2 y% A, M* f$ S
    {: O, |; Y- w$ N. \: ]$ k) f" Y
        //---- Enter your callback code here -----& f/ ?4 G( b9 u
6 y7 _9 G" B" ^. j! K! t( e& |) k& w
+ Z$ u  u. t" f+ h

& {% T. D1 G0 [) I# c" F2 Q# h                Session *theSession = Session::GetSession();
  {5 r* E0 R. [2 h7 a9 {                Part *workPart(theSession->Parts()->Work());6 g* |$ \; K% d& M( j
                Part *displayPart(theSession->Parts()->Display());
* b/ a/ z/ l' e9 l" L
' X# p+ W; v+ w( Q, }9 ~

! A! m7 j$ I! h0 ~                Features::Feature *nullFeatures_Feature(NULL);, @6 X4 v% d( ]& N; U! c; ^. T
                Features::EdgeBlendBuilder *edgeBlendBuilder1;( V2 w8 m% j- V8 S+ W, ~1 k
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);& h; I) m; s. l5 T- X; c. ]: |) ?
  y/ }  c# `2 }- D2 @

6 Q3 W- p  G* ~- S8 ^1 @                ScCollector *scCollector1;
& n3 N. y* x9 P( J# a                scCollector1 = workPart->ScCollectors()->CreateCollector();
! m4 Q; Y- R+ P* k- K4 F2 i
4 C; Z! z! d& }0 }

  L0 g! V" U- O! N9 H                std::vector<Edge *> seedEdges;
- z  e7 W! h3 R3 H9 d1 Q& N               
7 v$ p( k  M1 x! j: I3 O1 O( v                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
  J, X5 [% g4 n7 X) B                for (int i=0;i<selectob.size();i++)& E& o. ^  i+ u# j) d, {
                {* S  e" j% J4 l& T8 m
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));: O0 t7 {( f# X, {) t4 f  C
  }/ H0 E( R3 k9 w! R5 |/ u
+ N' b/ D* s) S4 b8 Z' I# p
  double dia = expression0->Value();            //获取表达式的值
/ o, O; C3 _7 G: e, d6 O' y6 k                stringstream DIA;
) F. R+ K2 M% C  m8 v0 o% G                DIA << dia;
& `" N/ r) [; z9 [9 m& Z( O
( f2 i8 ]9 P0 u6 k1 Y3 `: ^
% y( L8 c0 U  |6 E" j: G
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
8 O) H1 M8 L8 z, v! _4 K3 k                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
1 V% r: q; Y/ ^; C9 C2 g
& _$ _2 U/ ]5 \6 C. h: ?
* N! W, k' |! s* X
                std::vector<SelectionIntentRule *> rules1(1);
; \  |( o0 e- r: g! N                rules1[0] = edgeMultipleSeedTangentRule1;" g7 W+ I, A8 D5 i9 r
                scCollector1->ReplaceRules(rules1, false);
; x# B4 s& B* n' f; S  V1 \. J/ T) @. m, X

+ ]: w& {" Z- N, T- D  O                edgeBlendBuilder1->SetTolerance(0.001);' N3 O' ^& g' n5 Y$ t/ v0 O
/ E' Z4 ?8 y/ D
# {0 z' ~: o$ g% ]2 Y" a. B( X
                edgeBlendBuilder1->SetAllInstancesOption(false);& `( c! C/ i+ _) N$ p2 _' p/ {
5 R+ z/ H  E3 q4 `
6 N6 x5 @0 B+ e8 M& j0 @1 g( c$ a
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
/ c2 F7 G( ]! z0 P9 p0 s3 d$ `7 ^$ r( v( V. r" Z  T2 A
4 e$ l- Q' h$ K6 ?  i* o1 |
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);, ?1 \/ i8 f. x; R' [0 Q
" \  u1 j* `/ F- x/ j
/ j: Y3 s! [7 w- |5 A: \* e
                edgeBlendBuilder1->SetLimitFailingAreas(true);
( w* I. ?5 M9 r; E, a' h. H9 Q7 J" J6 l+ @; F' ~

8 \' u; D* a' T                edgeBlendBuilder1->SetConvexConcaveY(false);
( E$ t! r6 U$ ~2 v$ d( |/ {/ E9 P6 E/ T# |* y5 s( p

. t  v! m: E3 d6 V8 O* O* ^                edgeBlendBuilder1->SetRollOverSmoothEdge(true);& ^" v  g/ Z9 g0 `" v9 f. R

( G5 O: U7 R6 R4 C; d' W0 T& r

, u3 u- G( C( V( l                edgeBlendBuilder1->SetRollOntoEdge(true);
9 {8 I" p" z3 @! U! a- K( @' ]  g( \" i
! Z' L: e* }: l$ c  b* \/ M
                edgeBlendBuilder1->SetMoveSharpEdge(true);
" O1 a! h; F% l9 I4 ~3 k
6 U6 V1 Z2 N8 j9 N& Z- Z
+ F( @8 b% ^3 ]
                edgeBlendBuilder1->SetTrimmingOption(false);
/ t! l3 V; ]3 |/ ~8 D; k' S) C' E& o
0 I3 t! F4 E7 j, m% X* g( d! O
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
% K( t% ~6 C9 j) N9 v; N1 k- x" ^0 T5 g* l$ P# h8 A
8 G) u; M; y$ F. R
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
1 x0 `4 y/ U4 |+ b# r% j
) D0 B; x6 I" P

( W; l0 u1 G$ Q' s  a                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);. ]3 b8 {; p+ N5 K8 l' t7 b7 A
3 }! [* S3 l) \( a6 X* f
0 l% X) `2 f- y7 a
                int csIndex1;- y( ?' O1 E5 C' h$ |5 |
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());: t% c' ]! z  K; m# n
  T8 k0 @- ?( k

+ c; P/ L2 f- `! }1 b% K                Features::Feature *feature1;
- V5 i' p( r, c% x! z                feature1 = edgeBlendBuilder1->CommitFeature();$ M6 W6 ^0 m+ A2 q! A! G/ e. j
8 X  D3 x# z2 I1 K( l1 d7 f
7 H4 Q3 g+ G- o! c
                edgeBlendBuilder1->Destroy();  i9 K7 i( q2 Y2 P* j# c) r" [
1 Y" m1 Q1 Z: q
    }  w6 n5 N( ^- R& M
    catch(exception& ex)1 p7 |% d) N$ x6 U5 d3 r& @6 |) l
    {
% M+ \0 b0 V% b  s4 j# T" f        //---- Enter your exception handling code here -----$ z, k; L4 n7 \2 X8 G
        errorCode = 1;
6 X' Y& c( N2 n0 R        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
4 S$ m9 J2 g1 p9 U    }
2 x  Y- k/ O) C) Q* p( L    return errorCode;
# o4 Q- \( j6 P; m$ ?. B" ]}
! G  w/ J* R. R- H
" q% ~2 c% s" d- R. }+ t
说明:因为字数有限制,这里只贴出关键代码。7 m" b5 A! h* C8 T

' g' E* ~+ I  ?6 n( A- y
. u4 p* z: G: Q9 I  s( B% R- `% m

1 Z$ `' [) u9 j) g7 n3 y
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二次开发专题模块培训报名开始啦

    我知道了