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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
4 v! g1 _0 @3 E1 B2 `
void selectedge::initialize_cb()
: ]& k9 }4 {  g, l: x, _{; D7 L+ }4 G3 l, U8 r
    try! l/ k! i3 ]& l& ~# @; [
    {
- L6 y2 \3 k( m& v
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));6 {" |! ?8 T1 f
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));, g2 F' y9 p& z' t! b( l
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
3 o5 y+ x) t# @' O    caTCh(exception& ex)
$ M6 v; S  s( h7 O    {( k4 k* M+ g7 M7 L, O
        //---- Enter your exception handling code here -----
5 M. \/ |1 }* _' ~' n" Q" f9 f        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
- `8 d* _  `  G6 o3 k    }3 B4 F# e! U+ r
}
) B, V3 L; _/ p) `7 m* D- _3 x0 w% ~1 n% o) @& m
int selectedge::apply_cb(): D: p3 }( E+ u; G5 w
{9 t  f% R3 a. _8 ?$ t4 o% v
    int errorCode = 0;
+ Z% [* F7 H. k( `5 u3 y    try
. }0 D2 Q/ o( }- G6 m    {
5 w3 m2 @. N% G% `0 x) t2 Q        //---- Enter your callback code here -----& ~- n+ q6 U3 K1 x0 v; L8 u$ ]; P9 {& }' G

, U2 P" W4 G6 |- l8 L$ u& z# ^: P2 [% Q

$ X9 t) P4 }- }2 q3 B                Session *theSession = Session::GetSession();0 C' Y/ u' a; Q0 G
                Part *workPart(theSession->Parts()->Work());* C' ]9 c! v5 _, j& c0 W/ Z- r
                Part *displayPart(theSession->Parts()->Display());8 _2 _& p9 z& H6 \3 M4 @
3 ^3 n( o& A+ C# |* Z& o9 O# `
' h4 J" G6 R. v4 g! f& g- x* h
                Features::Feature *nullFeatures_Feature(NULL);6 }* s, B/ e5 ~3 [
                Features::EdgeBlendBuilder *edgeBlendBuilder1;7 j2 _+ h6 P. V6 a3 l
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
/ N. o* e- o" ?% q( }  k+ H- Q  l3 c5 u2 A6 I$ t8 n4 `+ T) n- n: \
. ~0 ?3 V6 o: [9 D8 H) U
                ScCollector *scCollector1;+ Y1 [8 D* H0 r( W" p  S) w/ q+ ?
                scCollector1 = workPart->ScCollectors()->CreateCollector();* `9 F' L/ ]0 d# G

! _: M9 q4 ^& @  c! O% h: G
7 j0 f! _4 P7 G. @/ B- q6 u& n
                std::vector<Edge *> seedEdges;
7 m' j6 T+ x3 Z$ F3 N8 a% L# D, H               
4 ~( K2 s- M% V3 t4 H- C                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象" q& c2 Q1 \/ l
                for (int i=0;i<selectob.size();i++)
1 x7 ]* p* B$ a, o  z% B  a                {
/ t0 A) @6 Z# S  {                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));: t* _0 T, l8 U1 J1 t- b+ ?3 O8 C( U
  }
& E( c6 S( B- j& W5 k7 p. T
8 G6 }; W) r, W$ j4 k  double dia = expression0->Value();            //获取表达式的值
+ ?. R, v/ j4 V- E+ h0 W                stringstream DIA;
1 {7 f+ U4 r6 Y3 r# ]1 s( @* [                DIA << dia;
2 e& O  k7 F: K- Y6 B6 a, [( N" \2 ^6 i0 Y

# V7 M% z) D* `1 S                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
- |# Q) M  I* K- H" t, q' N                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);/ |0 M! z1 K3 @4 c
5 ^$ h1 O- P. M% M8 E& B
/ @% b* O0 P$ ~2 O
                std::vector<SelectionIntentRule *> rules1(1);" m$ w( h% K3 o! w( A/ t# C
                rules1[0] = edgeMultipleSeedTangentRule1;3 I2 C$ I8 M' q7 @) N' J
                scCollector1->ReplaceRules(rules1, false);
0 y6 v7 W& @" |/ e
) M8 @, [' f! y6 r1 }) t

3 P& {: E7 ?" W. Q, P* ]                edgeBlendBuilder1->SetTolerance(0.001);
, G  Q4 r- x: Z8 O; S7 n- c# q  r
4 c' B# \2 Y1 I4 z# m; _0 J5 e

/ j, H' z# |' G) [2 _; j' K5 O                edgeBlendBuilder1->SetAllInstancesOption(false);
4 H2 m$ U7 Z3 f7 B- o, h) @9 W" ^# l/ Q$ q* g  S

8 L. l. {/ U$ ]+ J* ]1 G& t                edgeBlendBuilder1->SetRemoveSelfIntersection(true);4 r, W6 C6 C9 Q! B7 _/ Q% K, W
2 Y% w9 t) {$ R1 Q9 Q* R
9 E4 S2 H! w* D) u; K/ D; W( c* f2 [
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);5 ]  X: O. b, _3 K7 q" R' T
. T& M" z  V6 K* S0 ^" W. s3 k

3 [6 q9 s8 E" `5 ^                edgeBlendBuilder1->SetLimitFailingAreas(true);
! Y6 f$ @! ?9 T0 J+ J! J6 _9 S1 y2 {! z
0 ]- i7 Z% Y; ^3 v/ z: s
                edgeBlendBuilder1->SetConvexConcaveY(false);- z4 R1 P* R! k+ U) c/ e3 s
( }% v2 Q: X. |
/ V0 ]8 I9 M( c6 d; M6 ^
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);3 f$ {. R* E6 Q% F( k! b1 Q

+ C& t: p, K9 V
! n- I1 W% m: w; |. E4 b% P0 M8 D
                edgeBlendBuilder1->SetRollOntoEdge(true);( U# r5 w3 N7 Q2 m7 Y* |, _

' `6 |: j6 t, A* z

0 Z( h/ [% W8 v2 |8 H: j& [  Q0 K$ V                edgeBlendBuilder1->SetMoveSharpEdge(true);
" R$ M4 v6 T3 S. P/ i$ Y' |$ `1 g% e* S  e5 n5 b6 P

0 G0 V3 m( S6 U                edgeBlendBuilder1->SetTrimmingOption(false);; K5 v4 H& x6 F) z6 w3 F
$ F4 W7 a* X$ H4 B
  H. L. L- ~6 A
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);. a& X+ s6 t* K: m& T1 H

; r3 ?# f% |' ^% A
# Z% P% p7 M7 o" B& K! i' P/ e5 {8 X
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);8 @# `: c6 w* Q( h% O/ Z4 c

' U  w9 E8 O) ^1 @% c: C' x
' M4 e* C" b; u$ ]  U
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
6 A4 Z: H4 Q1 w; T$ j: m. Z7 r+ D5 d! K) @  f* c3 A3 x
. _9 |. i' J& e+ x5 G# u
                int csIndex1;
& C! X- P! U/ m* M% O+ D                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
  e* \3 d; r, g8 n& C7 }' `+ ^6 s  I6 V# ?
( \6 x. l8 O3 B6 M0 {
                Features::Feature *feature1;
$ b$ S& Y5 D7 n& Z                feature1 = edgeBlendBuilder1->CommitFeature();
% ]4 Z+ }3 O: z8 W4 G' }6 i6 d1 `* i% u2 p0 s
5 G8 O- f& I1 X. A& l
                edgeBlendBuilder1->Destroy();% |- V4 ?; t% D( x& p+ v6 R

9 X/ D# B& `5 z- Y5 u    }4 i1 L, X* [& U+ S% p* L7 ^" ~
    catch(exception& ex)
5 j9 B3 P# B6 H. w6 C1 t    {
, q( v4 a8 |0 y7 q+ ^        //---- Enter your exception handling code here -----. b  k" m# n1 i& \: Y4 M9 u5 P1 Y
        errorCode = 1;
, E; y- P) u9 p2 [. C$ z        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
- t( t& d' B0 T% L, T/ f    }) _& }9 N8 }* O" v# q3 b( ]
    return errorCode;
' a! @) P' C* d3 j4 k9 L5 d6 x6 A}

5 M; N2 s* C# N4 W+ y
- n" @( X4 x$ _/ v# e
说明:因为字数有限制,这里只贴出关键代码。
1 D5 Z4 w+ B; e: R/ x
. N* N: R8 e+ e8 F! d/ `) [! h7 L/ s  Z1 R

6 g! ~2 C& D- B0 h6 V* ~
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二次开发专题模块培训报名开始啦

    我知道了