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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
3 u2 e3 [; A+ c. m6 C
void selectedge::initialize_cb()
& `" Y" y4 W  V( ~* ?5 N{' [2 v7 L# c; S* f
    try
2 V  O2 q! ]) s& M! O0 J0 |    {

4 ~: a: E, e, l& w1 Y' }% q        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
3 X9 ^- v4 h1 t4 Z4 D        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));* e1 W2 L4 I9 t4 m3 O7 F
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}+ y' K+ G4 \' Q/ Q  s
    caTCh(exception& ex)
! q9 D; L, Z/ O5 M% u/ K' a: R    {$ q- s9 L7 p$ |: i0 M1 m0 F
        //---- Enter your exception handling code here -----
) H- R+ j4 G0 B+ Q        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());1 }" {1 H. P; c. U5 T
    }5 K, h# r" m4 w6 s
}' w3 ~; b! U+ n! l  `, j, Q8 `- Q( w

; p1 y- W5 ^2 Cint selectedge::apply_cb()
8 @0 h8 T" P  ^& W% Z& R{5 ?6 \- p- r) J+ K0 y3 g
    int errorCode = 0;
% _7 t" x7 ]9 `! J0 [# ^    try
% j% G4 ?3 a. r; `    {0 z0 E7 u  t) A0 G1 d3 }4 k  P
        //---- Enter your callback code here -----. u/ f- L7 b( _) y/ x. r" J
5 S( e! q  f0 P' q' j) r! z
  C4 q7 H6 ~; }6 N. v' _! ?
% |! T2 i) N# n1 o
                Session *theSession = Session::GetSession();
4 o) F- ]1 }( W) y) R2 q6 y' h. y                Part *workPart(theSession->Parts()->Work());* m6 h( {& x1 x7 G
                Part *displayPart(theSession->Parts()->Display());
8 P+ b% s1 D& Z& {  c9 [- u  C! e  x, l

* D4 F" h+ p9 d+ q+ B                Features::Feature *nullFeatures_Feature(NULL);
- q6 O9 u; }) v0 ^' Y                Features::EdgeBlendBuilder *edgeBlendBuilder1;' p+ m+ H! |# s$ w0 c0 u
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
8 [! I, M+ w5 [) q
( h# U2 x, C0 p5 l7 H6 E, ]. Z+ z

( N8 P: k* F& X& Z                ScCollector *scCollector1;
& Q/ z% h6 U0 X; ?8 g6 x* e+ l                scCollector1 = workPart->ScCollectors()->CreateCollector();
$ \, ]: X$ C& w* P! \" D$ m9 ]& J" Q
6 ^; H/ L/ F: d% Q$ [; ]
# o; ?5 x2 X- H* j9 k
                std::vector<Edge *> seedEdges;
$ z, V  ~- o5 C                6 F1 m) T8 }9 W/ v1 e
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象4 O9 x6 @- X& O( ]( r. ~2 L. }* l) Y
                for (int i=0;i<selectob.size();i++)
  ~8 Z( z6 t! r+ G8 u2 s  Z; n# a                {5 t. V; L9 c( _' x' w6 }6 D0 m
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));2 Y- q- ]. j; K7 [3 _2 e
  }
2 }+ j9 \- ^8 n) I  S3 J; {2 F0 O9 _/ o2 z
  double dia = expression0->Value();            //获取表达式的值0 U: M$ b  b- ]
                stringstream DIA;
, W5 _* B" V- R: S9 o% B  n0 \                DIA << dia;
7 s9 _; T6 h  |$ Q, O6 _# _" A$ Y8 p

4 t  \! q8 @& X# a                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
' w) `+ |/ ]- \- M3 r/ |! Q                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);, P. y, g* i$ E2 F2 c$ V
1 S0 v1 k8 v& _' }" o6 s
+ v/ ^. S' W, b' j, |- ]
                std::vector<SelectionIntentRule *> rules1(1);
  ~+ v6 j, ~4 E; F5 {- i. D' w                rules1[0] = edgeMultipleSeedTangentRule1;
3 m: _* R0 Q2 j$ P3 L0 n                scCollector1->ReplaceRules(rules1, false);
& x! a: F: b" E, H. C4 j* Q+ ~) P  M' d& i% ~) D

5 O) n; q" ]3 e0 ]# b3 r& w                edgeBlendBuilder1->SetTolerance(0.001);' }, j& ?! x9 X$ ~* o

' T: [! n2 V; g( k

4 ^! c) Q- H  p/ P                edgeBlendBuilder1->SetAllInstancesOption(false);
2 O$ v! U. v' P  X1 p6 D8 W
! j! o( w7 t$ Q  h) \/ ?$ z' B
* D! b4 x. l8 d; \* f: S( w; M3 e
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
/ o; }- A  K2 Z' U: n7 c0 O/ F; @. ~. f1 I  g4 @& |9 |
7 D. E$ T& x" [  [- U
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);+ {8 G# W9 J, p$ _0 _
$ V( p) z- e: h) l7 E' L/ Q7 Q: G

$ F* n, P4 |  e$ j, r& J                edgeBlendBuilder1->SetLimitFailingAreas(true);# @& ]* J) q3 W+ R7 K( Q% {

& z& @% e3 Q2 Z& I1 K
+ y# |$ P/ k* y+ Z$ P7 M
                edgeBlendBuilder1->SetConvexConcaveY(false);5 j5 T1 [0 u& ~& G, E8 K7 D. y1 t6 P
  _0 e- V9 i5 e' s) I$ F( J

: K3 g3 Y( c4 T                edgeBlendBuilder1->SetRollOverSmoothEdge(true);- S  T! }+ w3 g+ p, M* V- R

! b: ~. H* G# H6 C( T
8 v) F" R/ S  _2 `3 I0 X
                edgeBlendBuilder1->SetRollOntoEdge(true);
5 s- d2 `5 K% E4 R  R) _/ ]; b1 q" }' ~4 [( s3 |+ ?. h) Q( }

# @9 Z8 S$ D3 W7 r( {9 K                edgeBlendBuilder1->SetMoveSharpEdge(true);9 t) h" G4 m+ Z0 E9 @! s/ P
1 b* i9 H* D3 O* U: B% o
$ I- t( v! }7 z) s/ y( r
                edgeBlendBuilder1->SetTrimmingOption(false);- d# |9 A" s+ O) K: Q

( p6 I/ l; J* m) g/ C! x  k2 J

/ f- |4 Z/ i' O/ X* l7 t                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);- T1 ?; l! h) J- u9 |
, n- `& }- ~6 |: X
9 }9 z0 f3 q/ t+ D' K" n' J2 ^
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);! O. j: t& u" d6 k
# c' }2 P7 T' g8 m, q+ V' H

  u7 a: P: E2 I3 J                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
. x5 t$ E0 B1 r  H$ }0 e2 b' [5 c# g7 j# S; v% n

7 I" |. |" N7 }  j: q                int csIndex1;
% A7 _! b# c3 ?5 Q                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());% ?, ~$ _; \) \* a! b0 Q

! k" L# j8 V. t. g/ y( H. N$ s8 v1 {
  e0 h6 `% M1 n1 r* ?7 u
                Features::Feature *feature1;
; y+ \) P- ^3 e7 v1 F) h                feature1 = edgeBlendBuilder1->CommitFeature();- w+ |  y0 i$ y

0 Q( q8 w, Q2 l

; r( c2 B0 @: k' U3 J6 }7 \                edgeBlendBuilder1->Destroy();# S0 X3 u1 N- A1 r

/ L$ b0 a% D1 F    }' X" {  y' j" L  m% Q
    catch(exception& ex)
/ v( f4 ^7 q5 y* i* {6 l. ^0 ?. |    {3 K! l! O% `% \3 ^8 ^, R9 v& h& ?
        //---- Enter your exception handling code here -----
& _- D3 |$ L1 \        errorCode = 1;4 }# M) c. B/ I$ w" h/ p8 Y
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());2 X2 I3 {8 O) E1 |
    }
8 f* c6 M% o3 w+ D! F    return errorCode;
8 U! s- K9 {% K1 V" y8 v& Q& \}

' u8 X+ _. G  x5 y% V( g% Z

" X" j# Q' T( Q- I( @说明:因为字数有限制,这里只贴出关键代码。% A6 P0 q* U* ^% K% Z# O; p( x, v$ D
8 m/ N$ S* e% ~  h' d4 N
+ ~' D7 [1 ?- q. R. y! ~

. {6 a( r1 C$ F0 n! O. m" @
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二次开发专题模块培训报名开始啦

    我知道了