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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
7 ~* D8 Y# a" J8 G
void selectedge::initialize_cb()
. h8 D  P! a5 h' m2 L+ J{1 }# z( n1 P- K2 ]6 f& c& }
    try
0 t; J1 K+ m, ^' s  e    {
* y% O. d" ~7 O, S
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
& E: t* u5 z+ i# X& P7 G" h2 x: B        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));( n" g% D6 W( g. Q
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}* T8 j& s9 l% M! F( F" m
    caTCh(exception& ex)6 S% f) U* n9 D% F. J3 D
    {
: P9 J$ P. d8 g/ i5 s: Q1 a: ]        //---- Enter your exception handling code here -----8 E$ M1 Q, _3 h+ x
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());* `% o# \, k! u( Z- Q; @
    }- L8 r) z& n( ~# n. s+ a
}
! \1 f* Y3 K$ E3 B8 q' R& m6 \, v2 \" ~, S: k/ i
int selectedge::apply_cb()
3 V7 l1 j, e+ ~- {) {; j; Z{
  a) u$ J+ W4 T5 u    int errorCode = 0;& {( _* p' L0 M; q! l
    try' `  \2 p/ P: G+ V- q
    {
3 Q9 [5 d# K. H0 x( ?5 ?        //---- Enter your callback code here -----
7 q+ Q* |, N! w' M# D/ Z! }2 q
/ ?5 p8 J+ V. ~
6 D& {9 w9 G4 c( @6 x, \
8 ?' T) d% O. h) Z7 b/ {5 u
                Session *theSession = Session::GetSession();
& Z1 u1 ^  F% ]; |3 i" Y) V; F2 H) W8 b                Part *workPart(theSession->Parts()->Work());# x6 g2 h3 t6 n" Q1 T
                Part *displayPart(theSession->Parts()->Display());
1 q# y( i9 F5 L- f
4 }' w% n& o" o: E, s* n

6 a+ E2 t1 b5 {# _7 D# e                Features::Feature *nullFeatures_Feature(NULL);
, J! \. v( R4 r5 t0 V6 u                Features::EdgeBlendBuilder *edgeBlendBuilder1;
: l1 U' q& h; V( S                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);6 q7 u4 h$ Q8 |0 Q  s0 z
5 {: N2 |) \2 b) }: O
% z8 B1 B* I- w* q
                ScCollector *scCollector1;  Q. I+ C* F6 U6 K) `5 {: f
                scCollector1 = workPart->ScCollectors()->CreateCollector();: \# e! r" n' b: z1 n

3 Y0 G$ P& m# q

% p* V2 Q# I6 V& Q8 N, {, x                std::vector<Edge *> seedEdges;+ J9 Z" b9 M; F8 n5 R4 B6 f  U3 y
               
+ _. @# B: u) g. P, b                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
( j& q5 Y# J. A- |* f* I                for (int i=0;i<selectob.size();i++)/ K: t! {$ l% I: k
                {2 T% q5 A" b: A5 H* n. t
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));( C3 n* J8 O, S
  }, z  V: A5 s7 y2 C

& s- C! D1 A# ]# y- w7 N; ~  double dia = expression0->Value();            //获取表达式的值
) H' i3 R. a: Z: L                stringstream DIA;6 r; k# c2 Z: X
                DIA << dia;; c, A7 ~+ q! d: Z$ q

; a0 c& L- z1 w/ H% F

2 @2 H5 H- j2 o( V                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;  B3 G) [' c9 k7 e1 r
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
" i1 Z1 P0 ^% q/ Y& C% M& K3 \  d
- d0 W' R! n$ a1 y* i  W
  D) _+ V+ j- Y/ o* w
                std::vector<SelectionIntentRule *> rules1(1);1 Z. q1 I, d3 l: D( l" c
                rules1[0] = edgeMultipleSeedTangentRule1;1 {% y, q. k9 S- ?% _) w: z
                scCollector1->ReplaceRules(rules1, false);+ v- F1 d0 H. A0 U! f4 w/ ?

) \1 F9 B: `1 J4 \( T8 x! a; i

8 I5 T  ?3 q6 _: j                edgeBlendBuilder1->SetTolerance(0.001);
& G4 _7 C+ }  C5 H" t7 r
1 V0 n6 {; K/ v& `! i
- G1 V; f$ F8 A6 M9 c+ z0 d
                edgeBlendBuilder1->SetAllInstancesOption(false);$ E" Z' E. g7 R5 T' Z
- L3 E! O1 H. g3 Z( h

( |% h# e+ }: w" r* G: j% h                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
, k0 P5 O! B8 o9 s5 M. s
: O6 U; J1 d5 s/ G, W

+ y; t% f6 m7 N) X, N$ f                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);, ?# m; L2 F0 P$ v; G
! v) x7 {% B: b" v
4 L' [1 x! V# m% K; O" Y: G8 B& N
                edgeBlendBuilder1->SetLimitFailingAreas(true);$ d* e8 _) J" s4 \  b
% U6 M1 @- @8 c& |4 p5 G* P: E- I

7 M2 f  L+ C0 ?1 U0 ~7 ]0 s4 _" i  J                edgeBlendBuilder1->SetConvexConcaveY(false);/ ?+ ^1 f. }5 [% q" K
; ^7 D; C8 a- H6 B% \4 q& t" L

0 y) Z0 J( C! G9 ~: b/ r3 {, W                edgeBlendBuilder1->SetRollOverSmoothEdge(true);0 O6 J& }$ I" q8 Y
* ]& s  q' X: o

! `2 y( y) Z3 R( d4 K* V% J                edgeBlendBuilder1->SetRollOntoEdge(true);
  j; {  N# N8 i. F+ X* e( R1 I) v; l+ J
- |% U+ z% `7 N- Y
" U9 g  A0 ?. M% {9 k0 G3 l
                edgeBlendBuilder1->SetMoveSharpEdge(true);
( U* r- j4 Q  V7 p- N4 b3 b) N) v1 ]' K0 N7 f0 i4 M# {! t
3 ~" w, r* f  D; }6 C7 V
                edgeBlendBuilder1->SetTrimmingOption(false);
& ?9 v3 ^1 _6 y; K4 B
1 _) B8 Q( ?' P2 n+ W7 ^

# {- j4 J1 ^. m' Z8 F$ B                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
  X" x# Z0 Z) Y0 G0 g/ X9 m& {  d1 H7 u; S
; j0 `" r. m( M9 q) v( w: e
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);' e& C: E; G1 n+ T$ N" e) E, f
- o6 U- k( X% c, M3 Q3 G! W/ {
. x8 ^( d1 f3 A. `/ v
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);, r& f' L' d+ r3 h, p5 [) q

% g) t2 T4 d- P. y7 p! F3 _# O

8 c. H3 U' }2 a( h& [* H% h                int csIndex1;8 {9 Q) _3 A6 Z' c& w7 r- N, ^
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());. ]% \" f( K4 |) Q

/ g: i& A: G% T$ Q
# w- [- U- g  ^4 ~7 {/ @7 i+ o
                Features::Feature *feature1;' M( p+ m) f' l  c
                feature1 = edgeBlendBuilder1->CommitFeature();
' W& ]$ C1 g  m( B1 \% S' A7 A3 Z' h# K1 E, R2 J; E
  n( l: p7 B0 u8 |( M
                edgeBlendBuilder1->Destroy();- O1 j0 \4 Q$ T2 {9 E2 s' R

' X. `# V/ }: K% p9 E    }8 e) l& [: x9 S0 J. b, D2 L
    catch(exception& ex)2 }. M( P9 [: |8 c, t
    {
7 X. l" N& o1 v  f2 O& h* r' J7 x: C* o& l( {        //---- Enter your exception handling code here -----0 [$ t' a1 `6 W1 M
        errorCode = 1;
  q3 `  Y8 _: q4 E) N, z" g        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
$ Q& S- M. B4 m9 N# `# V    }+ i% Y& z$ Y9 G$ N. @
    return errorCode;; b6 Z$ P2 l% U5 f, I5 u% J
}
0 L# i5 C* t+ z- Y. z: w4 d

) G; Y' J( ?+ H( U/ Z说明:因为字数有限制,这里只贴出关键代码。' b. q  N6 h8 M/ Y' z6 [

- t5 N8 }, ?4 \& a
# L- g9 w+ W) O2 u
  Y% r+ ]; Z8 C$ R0 ~
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二次开发专题模块培训报名开始啦

    我知道了