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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
; C8 j) h, M9 {
void selectedge::initialize_cb()
5 V( P. r4 [  @' g* G1 d; W- @{
- ]  L2 G4 a0 T. I" i    try
) q/ U9 `9 E  s& i- J6 B3 F    {

, x! w9 Y, Q9 @  Q. `) c  l  d* l        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
7 A) _  J+ U% v& ~' Z4 i4 a        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
( x' o3 @& C/ C" R: e8 c5 N        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}: g( {: l' @3 l3 W, d4 A* |
    caTCh(exception& ex)9 F  V+ S% [3 ^
    {
  v9 u  U7 L; h9 y3 }0 F2 C; R: n        //---- Enter your exception handling code here -----
* n- {/ b1 z) F* w; z5 w9 T: p        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
, @" E/ o4 g) ^. C1 q2 k5 z, C6 q, p    }+ d; J% ?9 ]0 K' _& w
}
6 ~, i0 t" M. q9 M* j8 o3 }
) o# V  L* `4 I' c. Cint selectedge::apply_cb()
2 M# g; n: M" R  A+ e{
& G/ P$ M6 B# }- `! Q. {# r  a    int errorCode = 0;
% S7 D& H8 V1 _3 y+ S4 Y' H; }    try
8 Q  e! ?4 y0 d5 r. `    {
6 r# q0 c1 v: {/ m9 _2 r        //---- Enter your callback code here -----
* `/ R" Y5 Y; M4 G; h( W8 E2 z5 g" \9 C. K2 ]

; t) J/ S3 ~5 [2 C2 x6 k" T
; A( z/ ^4 \* @6 d0 r" H
                Session *theSession = Session::GetSession();
0 z+ A( t) Z7 i, c% D8 O* k+ W                Part *workPart(theSession->Parts()->Work());; z& k7 O7 p2 }
                Part *displayPart(theSession->Parts()->Display());
) N6 R1 k% u" J( b! a; d0 e! i) r: ^1 C% P

' J! Z0 e# o/ {! [) m                Features::Feature *nullFeatures_Feature(NULL);- R8 j+ ~( r1 \  m% w
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
: S1 l- _" I4 j  y# A9 z                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);# X" ~. Z5 G7 ~) t1 u
4 O: x2 _$ w$ o( J

$ W/ s0 p* s" i% q5 k! @7 u                ScCollector *scCollector1;
+ Y5 B: L* }7 u% Y- V                scCollector1 = workPart->ScCollectors()->CreateCollector();
# N) q' ~0 b- Q4 |) r8 L, i" A4 ?; c% A/ q9 v

0 m% o* G& v0 {) h4 e2 I& L, i. q" ^                std::vector<Edge *> seedEdges;- X6 Y8 ]2 u- V# {- \
               
  D) ^6 [# {3 k: ^9 \0 ~& R                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
* V* j1 j) f. y# M( a7 N                for (int i=0;i<selectob.size();i++)
1 m8 R, R* w2 N! F                {
( \0 U+ p" z+ u, m                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
5 A1 B! A) ]6 M9 K, o4 e" J( v/ |  }
. {% C0 n. m6 W. Y; u0 h# ]# m! b$ |; d, F/ A; Y
  double dia = expression0->Value();            //获取表达式的值/ c+ n8 ~) j# H' s' V. L+ z8 Y
                stringstream DIA;2 i* t0 z) j, A+ i: C5 V0 o
                DIA << dia;
% K, q8 u4 x; W- k, D9 ~. L( }% e' W5 i
9 v3 E( g0 d) H
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
& A5 f$ P4 ^# o, g% G                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);; l/ s4 s$ q5 r& |8 c, Q  l
  v1 c( [  q  G- I

0 K: i/ n, |7 O8 x6 {                std::vector<SelectionIntentRule *> rules1(1);7 P9 X+ k* J; W# s
                rules1[0] = edgeMultipleSeedTangentRule1;$ j3 U' a$ q  x% F: t5 [( s( T
                scCollector1->ReplaceRules(rules1, false);
: r3 T; `0 p. V3 s: f" R, l- G+ }: @" r

1 b2 R/ ?# \- U! [                edgeBlendBuilder1->SetTolerance(0.001);
8 z- A4 y! _8 p
% V) g* M2 z8 ]' o/ t% Y1 g1 o

  ^5 M6 I) z6 F8 `5 \( u7 ]                edgeBlendBuilder1->SetAllInstancesOption(false);
9 F; @% b" w) X) ]/ T5 N8 b+ Z3 [! }/ p. ?8 K4 ^
2 O7 _- Q$ X( X. O# D& N
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);) _0 M& y7 B, j& r

- @( G5 E9 L& @

5 ?, v* @1 i# g                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);+ n0 j7 `+ |7 B. k
) d* G* f; B& B- Q7 W' [2 \& ^

# l1 P0 r9 w/ C                edgeBlendBuilder1->SetLimitFailingAreas(true);8 ^  j. |9 p, ?2 n' m, A' F6 _

. y3 r* R" o0 t" @# X: E
' l) b1 u# _' Q" T1 W$ G0 w
                edgeBlendBuilder1->SetConvexConcaveY(false);! {% M$ J- p$ o+ p; i  I' v
  l8 M8 d8 i" n! g# p
1 s7 A2 y6 ]* F, }& r) O
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
: [" {8 S3 s5 k3 X' D3 |
) S) p8 v  l& Z" {! I) y

4 i+ E4 B6 K- d                edgeBlendBuilder1->SetRollOntoEdge(true);( f. m8 K# Z3 e! L1 Y% u

' T$ }( a# E- ~0 l7 p! ]$ X
7 [! [+ k5 I( x' `, m) ^& x4 F) M$ m
                edgeBlendBuilder1->SetMoveSharpEdge(true);
/ ^8 a. g3 \4 y2 k! o% P. P
0 M6 l( T( r& J
- q( N8 ?' c" l5 b
                edgeBlendBuilder1->SetTrimmingOption(false);7 ?0 ]0 _2 e* }) S! B$ y0 Q! e
* m" ?5 p; A3 h) f
- c2 ]+ v* |8 E* D4 t3 Z/ S
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);1 s" u- a" n3 d: o2 s. ~
9 b: ~, l) L# B0 ^8 \" Z  B4 J
8 ^- S3 X; g/ ]& F2 f& |
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);3 K. T) {4 N/ s. D) G+ M& ]8 {* U

" r4 a/ H( O# w' A1 w5 Y! k+ s

* u6 u" T, h, B1 U                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);* c; j5 d3 Q5 A) x
% s, _( ]) s5 ?! p) l" B; p/ \
( x* n9 v9 K( T' e
                int csIndex1;6 k& S6 a8 o/ J/ e3 N
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
' c$ Z! k. z9 a; ^# x* U
; q! h, }- I8 E' e# z" i' p" H

+ S6 w. ]2 [+ h( M                Features::Feature *feature1;
8 s0 f+ A4 L, j# |                feature1 = edgeBlendBuilder1->CommitFeature();! a) m' s' E2 }" ]" R& d& D

3 y8 k9 z1 m+ \

3 A  F' x8 y2 z# K                edgeBlendBuilder1->Destroy();5 v( l$ ?, ^# M7 C. ^) t# A

9 X- \6 Y+ d1 R    }
# j2 x6 ], k) y+ Q* O! c- J    catch(exception& ex)5 }6 F  w" L" R6 F; e
    {
# H7 a  V: ?8 i  ?  d/ S! c        //---- Enter your exception handling code here -----
4 ^9 h& Z# i, y% A& n, |, z9 |2 ?$ p1 L- ^        errorCode = 1;
' l4 e+ E' a. U% [. G, Z5 Q, \! \/ Q        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
4 F* K. j$ L# a1 j% k; b' C# e5 E    }
9 ^- [/ h  A. \5 F/ h. R! C    return errorCode;' m  R4 C) H5 c/ z6 [6 v& ]6 x3 k
}
# O+ R( e- H3 {( u( Z. }

1 q9 C5 h$ D  }/ \' x+ ]说明:因为字数有限制,这里只贴出关键代码。' ^/ @- F7 n$ s) p( N& V

* u) |5 e+ I; p
9 k7 E8 H8 }0 r+ q9 D. Y1 u9 O+ E

4 A, X6 q6 q" D* n6 c
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二次开发专题模块培训报名开始啦

    我知道了