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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
# r" o; W" K" n, d( \2 a% l8 }4 {
void selectedge::initialize_cb()" b4 H) ~# u! k) V
{
, `# o, _! x  p' `* j    try
1 c0 L2 \5 e5 k" p# F: {4 ]    {

0 w4 p  \! M# j% L        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));0 M5 V7 p! v2 F* N' A
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
9 E$ K  d, l" Y2 L9 x8 A7 _        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}4 R$ ^& ?4 q" G" ~
    caTCh(exception& ex)
) l" f& k( q* y! l0 F    {
7 `7 X1 r0 ?! t; x7 i4 b        //---- Enter your exception handling code here -----
3 d4 i7 ~5 u* ?7 ~* C' f        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
* Q4 ]3 Q' \5 o1 I    }4 x1 R/ H& T; U
}; [  `% T8 k& I2 E: d' e0 J
( g' e( i7 Q2 o- s2 N
int selectedge::apply_cb()# ^' C# @1 a. J2 Y
{
% H! l# x/ z6 o3 q1 [2 g    int errorCode = 0;/ Z" Y+ \; N( w4 W
    try
1 h# u$ m, }" B' w1 B    {  _( R' Y% l1 s: y
        //---- Enter your callback code here -----
1 t, k5 |9 T9 R& i; T% G3 Y; U! I- E3 l0 g, Y

) d) Y  c% m/ a9 w

$ [) D5 O2 b4 N  g0 x' z- n/ q2 P' J                Session *theSession = Session::GetSession();5 k3 ~( Y) [0 `& M6 e. o6 ?) B% ^0 n
                Part *workPart(theSession->Parts()->Work());
4 T" \) e2 i( ]' [* t$ B                Part *displayPart(theSession->Parts()->Display());" t- ]9 i+ u: Z8 x
1 y# @# Z4 G. t6 H$ s% Y! i

0 i# q2 }0 G$ j8 q                Features::Feature *nullFeatures_Feature(NULL);7 v! H! J0 J% X7 |: Q$ Y
                Features::EdgeBlendBuilder *edgeBlendBuilder1;5 D" [( |2 ]5 Z* h# t# v& O/ Y2 X2 i! b
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);* E1 I- d, m; u3 m, h
8 `3 ]- y3 {* F# Y$ j1 r

( N5 f& m* A, t$ C1 K% [                ScCollector *scCollector1;( _& h8 C8 q) \. Y
                scCollector1 = workPart->ScCollectors()->CreateCollector();+ u5 O$ x# H  o

! e" P+ D/ E! `" |

8 \& w" A6 _$ r  I2 L                std::vector<Edge *> seedEdges;
3 {7 P8 X2 j- c& u7 o& c               
# ~+ X: X/ p( Y, [" |* J                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象1 J8 O; f: W3 b5 T3 ]0 D$ T/ O3 Y! M
                for (int i=0;i<selectob.size();i++)( A2 _4 w2 \6 m1 l0 z2 a
                {8 Z6 F0 l/ O" W  n4 ?7 v2 p* G
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));: y9 |1 K" n& W
  }
& W" @% B- G/ W1 e% [& W3 P4 g1 E
  double dia = expression0->Value();            //获取表达式的值$ a5 T- H5 J* g1 f# k9 X" A( P9 V
                stringstream DIA;6 F; B% r% U% Z
                DIA << dia;
5 @4 o9 M& A8 T
, V3 C% ~, K! O, j
& z+ [1 ]5 ]. t# Q( l
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;/ X: b! W* N1 @) h! o
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
% U9 X, @: _* j' M% k( j3 o4 R2 W  c% X* Y

8 _, T8 \) J5 A! h% f                std::vector<SelectionIntentRule *> rules1(1);
1 e7 j8 r  }# z& S" H                rules1[0] = edgeMultipleSeedTangentRule1;  S7 T; H2 W6 d
                scCollector1->ReplaceRules(rules1, false);# X# g# Y' c% e5 D4 k5 A8 _

) Y9 E+ q2 B7 Q$ U# K

& I% Z: g4 v$ X) p                edgeBlendBuilder1->SetTolerance(0.001);) i0 @/ v- g& b3 E" X

4 Q- K' p2 [4 d% }
5 c7 U$ T6 @0 F* M7 n% p
                edgeBlendBuilder1->SetAllInstancesOption(false);: p: }3 A; F* U; g

( r: c- N5 V- d8 V" ~8 ?
# r9 y) u8 Y7 v0 N- @' w
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);0 d" T3 H) o3 G. N2 m3 b8 b- P
. m0 j# v& T3 m& m; o

5 h$ o8 Y6 e8 \/ T                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
' k9 E! n+ ]1 k+ A7 w% |( q, @- F6 k# e- h2 v
- }  O( V, N" G" I% }. k. D
                edgeBlendBuilder1->SetLimitFailingAreas(true);
4 j, F3 R0 \: A% h2 P1 ~1 P- `& B7 e* j' Y" s
3 a4 r7 O" L. h% }2 @; V8 D) @
                edgeBlendBuilder1->SetConvexConcaveY(false);
" r  z% e& l& f3 g# @
  Q, z" f9 Z4 Q0 |7 H
/ U, n$ S  K6 _, `7 W6 }
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
+ g7 v  M/ H8 k" B6 @+ b/ F0 N' G: N% N- X" m4 }" E+ \! O
! I8 r# v3 A  j- K) ?. Q4 l
                edgeBlendBuilder1->SetRollOntoEdge(true);
; N0 r, h3 P, c+ U# P+ ]' i3 K9 g/ ?; F" D# c

2 ?- r2 V. S. M" Z  v$ D                edgeBlendBuilder1->SetMoveSharpEdge(true);
( u4 @0 d6 Y  C/ \6 a2 F4 ~5 L+ x/ O% b. X6 b' w/ R- a3 D& `

) M# Y4 O4 |4 w+ i                edgeBlendBuilder1->SetTrimmingOption(false);8 R( c3 Z) S& V9 {5 c% a, S. B' V
7 X# Q' Y; f5 E, u3 q. H
8 [9 f  h( E5 |' O* y& U4 T
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
+ a7 }- ^+ X* @+ r: R, `$ [8 L* _9 Y0 ]7 j5 h. {: @- |( M+ Z

9 L! N4 ]& a5 x. x                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);  [6 X3 s" O& h, k6 u
  F; J! G8 X# ]3 G" A7 O; T
6 k. b+ {  U, k4 l# `# p
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);& L& W, G; D1 Z, i4 V; q2 v

, m: W6 [' o3 f1 b! x

3 D2 a+ Z6 m8 A  Q3 [                int csIndex1;1 v& w+ R  h, b4 J: O9 i1 t5 h
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
; M; c/ w$ ^- t7 w! |) C% X! E; `' k& m

9 X4 S/ z8 B5 Z1 D) A  M8 X                Features::Feature *feature1;+ s8 u, y6 b' D6 `: ]' x+ z
                feature1 = edgeBlendBuilder1->CommitFeature();8 S% K' \* v/ l  A4 W
& U* y3 W2 S) z& W: Z

1 Q0 u5 e2 j! e& M. u                edgeBlendBuilder1->Destroy();) q2 \9 |+ L8 |9 U# T& L1 F

- @- _% p% k+ t* W  ~' {    }8 Q! k2 X1 r, @+ T
    catch(exception& ex)1 p* D- v, `" |; U1 m; g
    {) H# L1 r+ Q! _% f+ j+ ]
        //---- Enter your exception handling code here -----
" V5 V# Z/ `0 U" c; f+ E- r  |        errorCode = 1;
& Q1 o& @' H- u        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());, O% I  O6 [6 k- c& D* k
    }
% L' A) P: [9 k4 b: `8 {5 h    return errorCode;0 @8 G' B( i9 }6 Q8 K
}
3 Q+ R1 l; p& w& S1 L
* N  Y* |4 A% E- Y2 w  s
说明:因为字数有限制,这里只贴出关键代码。
1 |: r' J5 R5 k3 w! g% M2 ]. u0 `7 M. ?7 _

% y$ r* s% _0 {: N$ q( K
6 ]' I9 \9 x5 |4 n" a3 T: b% f7 I
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二次开发专题模块培训报名开始啦

    我知道了