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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

3 {; g+ }- {8 f0 D$ n* d  Ivoid selectedge::initialize_cb()
% C. n' v" e- q! {# `& V{9 l, n+ k9 T  {9 N  \4 ~
    try
8 J; A; d; ^5 l' p4 J    {
3 n$ ]  q. @: M( |7 u4 l
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));$ {, o9 X1 Q! c) g  @
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));; q8 K/ F7 z0 w9 G! W
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
6 x* Z' l3 ]3 T8 S' I( y- g* x    caTCh(exception& ex)! m% N8 ^5 V2 p$ {
    {
) R" j* V9 d' u0 S  b# b        //---- Enter your exception handling code here -----
( ^6 m8 u$ L1 U. A! T        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
' g4 E2 \( T6 M2 U7 u    }
6 g9 q5 l. U2 M7 |" k" j}% Y$ [/ [1 C$ ?( i8 k. ?

: K- s3 w7 D0 [/ y) qint selectedge::apply_cb()
: q6 c, x) k- f9 {  Z" Y3 K$ E{
7 X1 u& x( e: P- G: @    int errorCode = 0;* a' A" e" E+ B$ }% ?
    try1 I% s8 ]$ Z7 k$ y
    {( a6 d/ s6 J9 G: b5 z& _
        //---- Enter your callback code here ------ U; L6 Z; ?. i3 B0 [
, B7 D. ?: ]9 k! v, U7 {
. D* O8 ^2 B0 w9 }4 T6 X1 d

  {. J- B1 l& B) f0 g0 i& o                Session *theSession = Session::GetSession();7 x6 U2 ^1 o$ ^4 ?' N
                Part *workPart(theSession->Parts()->Work());7 t2 `" _) ~  H$ ?) C: G# n: ]
                Part *displayPart(theSession->Parts()->Display());
) p) H4 X* E  [# D! h2 k' Z9 O" H# a  ]% b- V" ]
1 m7 Y8 Q9 D% \1 v8 j, Y# o
                Features::Feature *nullFeatures_Feature(NULL);" C! T3 d+ Z1 o7 ^6 p
                Features::EdgeBlendBuilder *edgeBlendBuilder1;! V+ J  n8 ~- l' t! \
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);/ }7 P5 B2 d3 G0 g

+ F. e; N0 ^6 b
( h. n6 b4 \9 X- A, m
                ScCollector *scCollector1;
3 S4 ]* B, S; e8 W" I1 d# R4 A2 p0 a                scCollector1 = workPart->ScCollectors()->CreateCollector();
1 \0 R* @- s6 u# Z1 f) w( z, b* G2 c9 e( n! p

" P. x  |) n: x: `0 n5 D                std::vector<Edge *> seedEdges;( L- M( B- y& ]7 G9 ~' N
               
( T* v5 g" a7 i7 G7 [0 [- b/ j                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象3 ~1 e' O# F0 [+ H1 P$ z- O' Y: U* M
                for (int i=0;i<selectob.size();i++)
1 A* U- P6 J: |; h$ L: b                {: x- g, {3 w- u& P; }' I
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));& {0 G' }' m* x7 W8 {/ z
  }
" N& n  r' c" `6 [! c! @! I  K
4 \' ~4 T6 G) n5 z" B3 |2 y4 E  double dia = expression0->Value();            //获取表达式的值
- A+ n. I- q$ n* T, f: ^6 M# [! Q: G                stringstream DIA;7 k( _9 X5 ?9 l+ o$ b$ k: y# `  x
                DIA << dia;5 l$ V% [8 l5 J0 A) I/ p

# \6 r% c2 x1 c+ l' a  H
  |2 [/ d: N) X* ~
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
9 n4 l4 P0 O" b8 y                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);, L: F6 }: ^4 Z) d% Q$ b, n

' O5 @( l4 D- ]+ K4 X# _7 d

& l. j9 U/ K4 w+ _                std::vector<SelectionIntentRule *> rules1(1);
- v' e! K" K1 j. n7 r                rules1[0] = edgeMultipleSeedTangentRule1;0 U' d" f' j6 Z
                scCollector1->ReplaceRules(rules1, false);6 K4 }" _2 n3 j

! H+ H/ _% [; [

; x: p- w3 i% Y7 L  g: @                edgeBlendBuilder1->SetTolerance(0.001);
! `9 a9 b  s6 N! c$ G2 ^* @# ]6 `) c

6 n' u% F; B+ T8 l- Y  u                edgeBlendBuilder1->SetAllInstancesOption(false);
9 Y- B% U' K/ y; G2 D4 r
' z( Q: p0 |$ e$ q
0 p2 t/ G7 L# B- C& g# o! r- D  V
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);# z3 |! u5 E4 w; H* H

( H5 g1 G2 r! B+ c% x; d

. H3 O$ }) u& S& b                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);  ^9 [; w" a8 J. L

/ ~: Z3 ?- p7 d& j

" g7 F* J- r3 _- ~# ~/ u/ G1 U* e                edgeBlendBuilder1->SetLimitFailingAreas(true);
& h9 Y' c, o* a& D# @" T  h0 [! A! G' r" `& B. c/ E/ I0 S

  P5 L2 ^2 H, Q, r2 B+ X                edgeBlendBuilder1->SetConvexConcaveY(false);" Y/ D0 B0 c7 V3 _' y( v! @1 ^9 m

+ T9 h/ A2 p% C$ X9 Q# Y! o

) m+ y/ G7 A& }1 C                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
5 T/ M2 D# S) }3 e' w
% G- X& t/ h: ~* A

2 H, H- K5 Y% W$ y                edgeBlendBuilder1->SetRollOntoEdge(true);( W$ q+ O- b4 e
8 B; ~/ _4 ?- ~* k0 |% `
& \; X! O- \8 h. H+ ?
                edgeBlendBuilder1->SetMoveSharpEdge(true);2 Y5 @1 r1 `, \6 P

; k6 l. s, G& g5 S! a: E

& G5 [$ z% c6 K# H! l$ v                edgeBlendBuilder1->SetTrimmingOption(false);; Y9 y2 x$ V, f& I3 B1 q7 Q* {
( g8 C6 _  Z0 K6 b) c9 @+ |1 e/ `

8 o9 [) y( j9 }% l/ Q, [& o                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);! V. B; W+ U4 E6 K6 J
& H1 B% C4 ]% P, A7 Z; d* M5 }
) ^: Q+ l" x+ L, u3 ^
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);, m2 q3 I  ^( g' h+ H
0 y& l$ z* ^, z3 ~# q: K8 k
% B* C4 Z9 K- G6 t/ S1 |! r+ C
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
1 [1 @7 |2 e# G4 b0 T, y- }8 I. ?1 J) U1 E4 u2 `) g
* P: p! H- ?  J1 {
                int csIndex1;9 e7 I8 C3 ?) x4 }
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());) m& z5 ~# f7 I- D9 S( W

, W, h& O: ?: u" o# b
8 ^2 {! R0 V$ i8 o1 C3 x; i) d6 O
                Features::Feature *feature1;/ M' d+ m8 u- o  S$ C" t$ X
                feature1 = edgeBlendBuilder1->CommitFeature();
& U( S( @9 ^% ~4 h; b* S7 x1 e6 m7 n+ `3 k% {. r5 M
( D: x, y  J$ h7 A- @
                edgeBlendBuilder1->Destroy();
" H/ G, I: X5 T
0 P; s& R, c6 `    }
# G% U2 w; Z; _7 {    catch(exception& ex)
5 P/ u' J- Y* B; v& b    {
- y6 x1 s# ?9 N* t3 s6 m        //---- Enter your exception handling code here -----
8 H4 M8 e2 k/ S4 N4 f" |; P, O        errorCode = 1;0 e2 Q2 n. J0 `8 g
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());3 C% _& o9 U- z
    }
, z& ~0 f4 F8 q" \; Q    return errorCode;2 |+ A3 M  V: W
}
9 I0 I0 p. A5 I$ Y* \- o7 j" u6 T2 Z

' Z0 [, u" H. m. J* H说明:因为字数有限制,这里只贴出关键代码。
; {" t8 m: J7 M+ B5 P
$ N) ]/ L, E  {, q+ c8 k# f* s
6 b7 C7 R7 N1 ?/ 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二次开发专题模块培训报名开始啦

    我知道了