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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
% p% k3 t3 k' E3 U/ t6 H3 k) \
void selectedge::initialize_cb()& E. [" i  [0 B* I& L
{
" M+ h: a3 J" n3 O" j8 b" _' h    try! d# U$ t$ t3 Z; ^
    {
6 T7 A) |+ R( B3 t$ W' Z  r! h) |
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));" W% c/ Q7 z; V. F! \
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
! W7 X8 h2 J* i8 |        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}+ N6 K( J0 }1 }/ w% a4 X1 @# p
    caTCh(exception& ex)& A. Q& g5 j/ Y* z. ~
    {
. B6 |# ~$ H% E( A* l7 m5 B        //---- Enter your exception handling code here -----
. z* G+ Z* F" Q9 |9 ?6 W        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
: w3 c: W8 l  I% P7 X4 R    }. |. k6 I. h. Y! q/ O' \
}8 x/ l+ H4 a7 O4 \; n+ V

0 N2 e! R4 p' y2 Gint selectedge::apply_cb()
8 M6 U' G: k1 ~8 Z; w{( R* t( i, a4 v$ k% Y/ _
    int errorCode = 0;( E: N# b" A6 R) e; a
    try4 g+ D/ U2 {+ t% F8 [6 S  d  R8 `) S
    {2 x6 K3 g" c) m& }% m$ J/ q, _
        //---- Enter your callback code here -----
! ?: T4 J1 e" T1 s1 ~0 g  k- j5 Z4 v! K3 ^5 \$ z7 _) u2 u
! z* g2 ]% p$ V* r* S! g0 C

+ N! h# |9 P5 C1 G( F% n4 X                Session *theSession = Session::GetSession();
( g/ `& K* N, A' Y                Part *workPart(theSession->Parts()->Work());
& e3 N& x  K: q" t! u' y                Part *displayPart(theSession->Parts()->Display());# A# B; E& |7 l; t: G& _

  O3 v" R# G; k1 t; I* h3 O4 i

  @6 C3 r- J7 J0 C; `- ?2 r                Features::Feature *nullFeatures_Feature(NULL);3 B7 i9 w1 l1 Y5 R8 ^0 }
                Features::EdgeBlendBuilder *edgeBlendBuilder1;2 a) D& n% k1 T. K
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
# m- g, U* Z" {4 D
1 F  U$ P+ I' {! o6 E' a
6 T/ V1 y$ H8 F1 g' J- h
                ScCollector *scCollector1;
4 k2 d. s2 R! }1 G# k                scCollector1 = workPart->ScCollectors()->CreateCollector();
, M6 ~: u8 ~- z3 \5 X) z$ Y" I
; m" T* V4 d2 v
& N2 Y: i4 b  c/ Y2 L4 V/ A
                std::vector<Edge *> seedEdges;
: N1 E& B% q' `4 N               
+ D  U0 ?; [' K7 ?" E                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象& ]4 l5 Y! m0 A3 ^( E
                for (int i=0;i<selectob.size();i++)
; U4 E0 Y/ e2 ~6 m0 y3 n                {
" w* N$ t* @+ ^/ n9 @                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));1 ]! s0 q  J4 S& g
  }
( \; k; M' A* ~; R  U; M8 v
8 g  Z4 ]: I7 s  d' g  double dia = expression0->Value();            //获取表达式的值
. I* `- a; K' I7 ~+ G                stringstream DIA;
. v/ R# v7 x# X$ X& |+ C                DIA << dia;+ c; D5 D# n; W& }0 P2 I

; x5 g% k/ n: }7 Q# H
( [7 j4 @2 z8 @, \. k
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
1 _$ D) ^: Y& H$ g                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);1 ~; N* G: Q! D% B, G
$ l* k0 ~$ G1 `+ C5 D2 Z
, r1 `! e! z, H" i4 X
                std::vector<SelectionIntentRule *> rules1(1);5 H4 f0 _0 g' y
                rules1[0] = edgeMultipleSeedTangentRule1;' @! t( |; S! O* z. y7 l% o
                scCollector1->ReplaceRules(rules1, false);
, g+ V6 \" b3 `( m
: m0 D; G! _) a6 A& t

7 ?7 i$ m( g1 M, Q                edgeBlendBuilder1->SetTolerance(0.001);
3 y9 y% h, L$ o2 f0 [% ]9 x  [: O+ F/ w3 c( \. b! V& q+ q
( v& e$ D+ d) w8 t+ y: a" j0 u
                edgeBlendBuilder1->SetAllInstancesOption(false);6 }# }2 [; O. U5 b- u

2 J, `, Q) }4 g9 F) |
5 S2 c* G: E( ?* b1 e
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);* d( X' O9 _/ @: o* N
% s) e& `' Y' P6 f

, O- x5 G" y6 C( Q% B                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
2 \! i7 Q1 D! o6 Z$ d' t9 J& e  \  k( I5 f1 t4 a5 |
7 T, ]7 a! h) L7 x' y8 z0 W- A
                edgeBlendBuilder1->SetLimitFailingAreas(true);. }8 }. M( ^5 ]2 _( ^/ `, o/ V
/ x( }9 v( @& M; s; |. v/ d

, v+ z, m3 b, E& b: e# L. R7 T5 b4 R                edgeBlendBuilder1->SetConvexConcaveY(false);
3 ]/ {  T7 U# G) I( I0 T
6 a, G; Q4 ^: Z1 x6 ]
' y/ W# I7 m- D4 f3 \- J
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);* _8 T+ {0 w+ l3 W. {7 c

# h/ R& o& P& Y8 J1 h+ n
+ C' _! k& Z9 w( V& l
                edgeBlendBuilder1->SetRollOntoEdge(true);
2 [! t$ l% @$ H- l+ U# ~7 f) o/ S$ C! _7 `8 C+ Z1 Y5 p0 t  M, Q" `" `  D
) @" j) {2 I. i7 s
                edgeBlendBuilder1->SetMoveSharpEdge(true);/ k- d# v- R+ s  B5 c0 j" R
8 ~8 q3 ^4 @3 ^% D

; z# y/ R3 N" l5 c2 V/ ]* }                edgeBlendBuilder1->SetTrimmingOption(false);
1 w" M$ B/ {. b' M( _6 `; X9 a7 }1 ]! t3 P

3 g! I7 a- N0 q9 e                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);- _7 ~% Z9 |6 T: d  ^  I

2 I" s: z. u# q- }4 g' B: [5 s/ t# Z

% Y7 T8 Z9 U1 C$ R) X/ j0 q                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
# i9 t7 `5 @/ i& h$ A, D/ @
' m( h% i* H; W6 i( m* W5 D

# ?7 O5 V# I& t- g                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);7 l+ m. c' k9 X/ ~% W3 c

4 U7 v  L5 I. e) n6 q" ]) O! z
  S/ x  x+ z3 R! z1 U
                int csIndex1;
; H" h" F" c9 o7 @! C) f                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());3 c0 J/ e7 z) N

" I/ I, M; Q3 F0 o. F- x1 c) C
3 F6 G+ u& o1 ^+ Y+ n8 u, N
                Features::Feature *feature1;3 R$ t$ I* [6 ?* S$ c4 ^6 r
                feature1 = edgeBlendBuilder1->CommitFeature();" i/ T& B& y5 ^) t+ N
# k3 ]* b' N5 V; q( L# r# H4 c

/ d. A% p7 s8 k: H# N5 [: k3 f                edgeBlendBuilder1->Destroy();; F! Q  N* _, q2 c$ P

; F$ @" ]" @* C9 V/ L    }9 h# T! L8 h: m/ p
    catch(exception& ex)
2 ]. u$ ?2 t7 v/ ~+ b    {
1 n9 v8 H+ G" E9 [( j; l% [* J% K        //---- Enter your exception handling code here -----" d8 s& h: D3 y. v) K
        errorCode = 1;
' G$ W- x& |" c        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());. O, \& f8 G/ w: ^2 U. }
    }: T# S* B3 i. [9 o/ `# n9 D
    return errorCode;" U1 X$ J  h' |5 r3 g9 n
}

9 I+ o/ f  R; o3 t5 d& H
# x- b$ P: S# T/ D& K
说明:因为字数有限制,这里只贴出关键代码。% o0 l) u* i( U, }
$ q2 C: l1 l) i

  j7 L( t, o+ p9 W6 \3 m0 u! B

# N9 E$ _0 U2 F0 L3 Y
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二次开发专题模块培训报名开始啦

    我知道了