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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

# j2 u7 c" X5 _: C! dvoid selectedge::initialize_cb()
- M7 U! G5 `" ]% j+ @5 ?* b/ ^' [{8 W: o# M. n* ]1 \
    try
- B' t+ X( K# s* _7 z    {

1 O4 [6 h+ w8 I* Q3 o/ v  P& g$ Z        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
) }  j7 x9 o' n        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
+ f2 E5 ]; ~% m) X        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}, z2 @* ^4 _: m3 f  W  [! X8 q
    caTCh(exception& ex)6 Q8 z8 p( B. ?  x) e7 K: e
    {
" r; ^+ d) v: a% ?$ ], }, T        //---- Enter your exception handling code here -----
6 r) K  R1 v1 E( Y        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());2 ?' n8 l/ C  _# _
    }+ h9 n" r" a3 R5 u  q# M; q
}$ m3 `" u: B0 b9 J4 z* G

. j1 D7 a6 }: s) u- r: P0 r0 qint selectedge::apply_cb()+ N6 v3 q: k0 \* r" |
{  k3 p; t  a; D) C. d8 g
    int errorCode = 0;
" U1 {  M0 J$ e8 h; E2 j/ t    try
/ H8 c' r% Z/ }" s    {, i* Y1 |2 ^+ @9 D8 j  R
        //---- Enter your callback code here -----
( y2 Z) T9 |! v1 ?0 ^1 X$ _* U* Q+ _- V) U! A" Q
- S8 Q! w7 U5 N" z- T

! v7 [! r; y  B4 X                Session *theSession = Session::GetSession();+ {, V  e4 z& E9 {6 n
                Part *workPart(theSession->Parts()->Work());
; _7 G: z% E: t! ~9 |) R$ z( \                Part *displayPart(theSession->Parts()->Display());- ]( m- G+ R' N

2 m7 h+ g: t* [. U% ~9 c: Y
$ Y, [$ R% Z4 e4 a' G6 R
                Features::Feature *nullFeatures_Feature(NULL);
, _  t2 `- H6 U" Y4 ]                Features::EdgeBlendBuilder *edgeBlendBuilder1;6 a9 y8 ?0 D) L% L- L9 }
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
; z8 I7 h8 I; y3 R; h% I5 _
* K3 R# }7 q" S4 d3 D' F

5 y7 d0 w1 m; Q' M3 ^                ScCollector *scCollector1;
/ m) P- v4 W, U$ m' w+ g                scCollector1 = workPart->ScCollectors()->CreateCollector();* c/ j4 R  W) ^" @& k7 L5 b

8 r. c' d$ H, ^! L: S" ?
0 U1 R+ o. x4 Y# o/ O& R  h* m
                std::vector<Edge *> seedEdges;' r* f& N! F/ }2 Y3 r; F3 l
               
! `5 d) w& C4 U( w' G& F* h                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
0 J" `6 s) |0 i, U  e                for (int i=0;i<selectob.size();i++)
4 V9 ^: G6 N' C! I                {) I: o6 J& v' K( ~4 r& R, F, ]
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));+ v3 s) C' A* j5 _8 B
  }* [& i8 L5 ]4 ?4 M
: l% G% @" F9 @, W# ~
  double dia = expression0->Value();            //获取表达式的值
0 Y( Y6 |3 ?5 x- F7 c                stringstream DIA;
. k( h. B. W+ D6 j, \                DIA << dia;' F9 |2 \% D2 [$ J; D% ]1 g+ s& ]
2 d5 u, U9 U. t1 F$ w
# S8 O. r: Q  J8 p. c2 x9 Y3 T  z
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
9 K# o4 F! ~  M0 N5 \5 s- f                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
: |) a( Q5 O& M9 B/ f8 E6 v; n! O3 ]( S- C+ k0 |( u8 d& F

9 v3 ^; b. |. r" E                std::vector<SelectionIntentRule *> rules1(1);  b: o2 u/ o( X3 x) U
                rules1[0] = edgeMultipleSeedTangentRule1;
& o9 h* ^) }; @" A& ]' L) C' ]                scCollector1->ReplaceRules(rules1, false);
$ }: j4 _7 v4 l+ n! e. i6 M8 a, W$ v# i2 L

1 \) z$ `, |1 X' y6 O" O( y/ @                edgeBlendBuilder1->SetTolerance(0.001);
1 K. M* ]6 y$ @$ m0 U# k/ o- |8 o  w4 A$ F+ e
, `, |  V( M  o1 d9 U! j3 D
                edgeBlendBuilder1->SetAllInstancesOption(false);
5 J% U7 N7 b4 ?( U" j; ^1 {5 Y0 L% _, U% X1 x  ?( L

/ k; K; h1 @( v/ K                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
0 C4 h. @9 T  Y, ]4 `& U; Q
* @- V5 B. f& T3 x% d: Z% \
9 L! g% ~: V$ L& }& k$ B- S  c( W. D6 `
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);3 Z% T- N( K4 l
8 q/ B% I' i3 H+ _% B# T& z9 f

; i. t% H8 g, Z2 N- c# \. [" \% @# b                edgeBlendBuilder1->SetLimitFailingAreas(true);# O8 C, t% Q) x6 g- ^
( E' {! O  b: w

2 \9 Z' a+ _7 \: }) y8 @                edgeBlendBuilder1->SetConvexConcaveY(false);' Z+ [' y' S" a" F1 r1 q; t
. s: F2 W, B) C7 ^0 H& ]  t2 X

/ E" j3 m7 \: f* R& t5 m8 e                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
, t" C+ {4 r" M) D4 Z
0 ^" r: F$ e! c/ e
, C& h2 _9 |9 H7 C
                edgeBlendBuilder1->SetRollOntoEdge(true);
) o0 Q" \9 \8 j1 B
% y! S. U4 @& r7 w9 I& l- H' k' R0 p

, I% o. b. M0 o8 o4 Z1 S$ C% G% J! a                edgeBlendBuilder1->SetMoveSharpEdge(true);
0 z2 n  Q; Y, N# |' M3 j8 G, y: j: R
+ f1 k! K4 _% _1 ?% B% _! l8 ]
$ O0 @/ B+ w; Q7 V5 B
                edgeBlendBuilder1->SetTrimmingOption(false);& J) t# t3 f: y" ^
1 x1 b1 F/ R4 |! g5 J
; |: ^3 T& T, f* A! z
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
5 ^! V: n& v' G8 r! ]3 o9 ~0 @  e
2 S( q3 b7 f& O  C
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);% e: m5 c8 m( o
; b: o; ~1 b% M1 f6 C% u
0 y* c+ g. i2 l  M
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);9 R; [* {) p# I% O

* q( w# x; R/ k
6 j0 p; m2 o" d" ~
                int csIndex1;  \  o2 `, _; C0 q3 X% g2 @
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
1 T6 M( Q9 z3 D% d6 q. v( E5 X
. X9 ?" P3 e6 w6 P" d0 T

1 b! }! i& M9 }                Features::Feature *feature1;1 A+ U& `# }2 s) M
                feature1 = edgeBlendBuilder1->CommitFeature();
+ D, b3 }! t! v% c! J% L) ~
5 j4 D( x* {/ }! I5 O

* b/ \6 P2 L. _1 M6 l& Z                edgeBlendBuilder1->Destroy();: u1 l' [+ r. g+ y/ Y% h! Q+ O
9 o: [8 h/ W; B: a8 }' `
    }
6 [& n$ F. p9 Z: S* v    catch(exception& ex)
+ F6 D% k- P( M: P9 O, s# [    {- o0 P9 a0 e8 P: K/ M% @
        //---- Enter your exception handling code here -----0 J7 @7 t5 E9 ]7 x+ s- ~
        errorCode = 1;
. C- B# H6 i3 E: K8 G4 v        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());- ~' O3 j$ Y3 d  N. M9 B
    }# Z0 Z" M! i# H: _9 O6 ^
    return errorCode;
. L+ E- b- [/ o- }# H}

1 Q' A2 e6 Q- k# W) U, _$ Z
8 C8 w' d3 T: O, z' g+ h3 e
说明:因为字数有限制,这里只贴出关键代码。; |( P0 M. }% W8 U+ {: F

# d/ w& K2 F5 n$ o" G  W5 K, ]2 X$ K1 v# c0 O; Q
  C" i9 k+ N5 }" {, O
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二次开发专题模块培训报名开始啦

    我知道了