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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

! ~* ?3 p, t! F+ F2 _! a) Pvoid selectedge::initialize_cb()/ `) y4 U9 b) b' K
{+ ?  R% ?8 e* O6 M0 {1 ]% k
    try
- C% W! u. b. x, B) h+ b, `    {
; d  R* U3 F$ }% M& N
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));1 \7 @# I8 C7 Y3 ^. _1 z( M
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
4 X/ C/ l! r( Z/ ?        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
; T0 b  ~# ~4 B8 [+ `8 t    caTCh(exception& ex)) E5 Z! y) q9 O+ \" m' _
    {8 j$ Z0 h2 O- }3 f- f5 R  Q
        //---- Enter your exception handling code here -----/ b, t( @. N" T; E$ ^
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());* f8 w. O( h" R! @6 s
    }
$ k' i/ `/ G  ?  V8 b}
. O7 _& T3 \$ u, {8 d" u, V+ }! E" [& ~; R3 _" B
int selectedge::apply_cb()
$ [! y! S" P8 Y/ }+ Y2 d1 X! m! x{' l, X& E! y3 A. J8 W8 |$ L4 d9 ]
    int errorCode = 0;, C6 B, O# E$ R% \) t2 B3 s
    try4 \3 }0 x6 r/ K9 i% V0 f0 F- R
    {
& k, X! w) D2 C: M( W* t        //---- Enter your callback code here -----
6 P6 k# g* F' i! A! w
- N+ ^) `, s$ \! \7 H4 M8 @- {* L+ d8 X
. L- f) [; o/ D6 g3 N+ u) x) m

, z  l& E. x0 }2 s8 Y, j5 O                Session *theSession = Session::GetSession();
4 W- @5 M6 m/ {' x2 T& \" N; X1 P                Part *workPart(theSession->Parts()->Work());% P$ K+ ?, {3 z! `, ?
                Part *displayPart(theSession->Parts()->Display());
# A' D* q: g  h* k7 k9 S2 V( q$ z8 k# [0 L3 k, z% ?5 N6 ^( O" v$ t
# {; f! H* g# |4 A1 c
                Features::Feature *nullFeatures_Feature(NULL);
( p! Y0 ~& s6 \( b8 a                Features::EdgeBlendBuilder *edgeBlendBuilder1;  Z. M3 O; G8 H$ w- y: [4 b
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);+ a0 O) P  G2 f8 ?/ ?
4 S. Y& U4 a- k
' g0 p6 E% j- Q' ], b
                ScCollector *scCollector1;4 R; H# H3 M0 G7 Q
                scCollector1 = workPart->ScCollectors()->CreateCollector();! u3 w7 ^% f: A

4 h9 F- I1 W* L$ J8 u4 L

2 P' w/ ^/ _) C3 w# A: R                std::vector<Edge *> seedEdges;
6 v0 c* O4 N2 O& o# e7 c! |                3 R* D# t) b- V& E  d# E) {; S) v3 M
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象) _; T7 i7 l) \; t( F
                for (int i=0;i<selectob.size();i++)
4 g. M3 @6 V- I                {0 I4 o8 \2 T0 Z/ h  P, |8 G
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));6 p4 J$ A+ D! n4 v& ~
  }4 e# V5 I8 X4 ]; F" B; p0 d/ a

2 Z7 U, z& j6 D* K" C6 n  double dia = expression0->Value();            //获取表达式的值0 _7 C- F1 _# }/ Y
                stringstream DIA;+ p2 F3 a- E$ C7 q
                DIA << dia;
0 t7 L5 Z1 ?* Q4 {$ h' f; z  ~- \$ ], p6 G1 D8 r. Z7 @+ ], K
/ P8 D' h0 ?# ]  W4 [
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
9 m. I- O, t( C# e9 O                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
. G: {0 u- r# U2 D
+ p6 U9 A5 ^( g
% s7 i" W% F& K8 x6 M' s+ J4 O
                std::vector<SelectionIntentRule *> rules1(1);5 C: X* ^! f' F6 V5 f& x3 A
                rules1[0] = edgeMultipleSeedTangentRule1;' k4 X1 g; I$ R9 W+ L3 V
                scCollector1->ReplaceRules(rules1, false);
( q& \  L3 y+ `& q8 x; S# j+ R* O- i' [, O8 N
$ T$ y( D0 e. m; D- v% g  C
                edgeBlendBuilder1->SetTolerance(0.001);
/ R3 i0 }# f& l5 q, x5 g/ J( j0 {$ J6 V- O

' k7 Y/ D& B, X( G( M8 \                edgeBlendBuilder1->SetAllInstancesOption(false);
, {/ R* w7 V4 ?2 r* ]; I; J0 @/ ?

# f7 N+ m( R2 B% b5 ?6 S                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
: j0 F5 u! G: r! H6 G8 Q+ @0 J# F5 q+ j
. P" A. p( Z, n  d  K( u" r" {6 i
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);2 F* R' r$ L6 p$ M3 [
; p2 |* W, E- f

  v3 X6 A; c- W1 m# C                edgeBlendBuilder1->SetLimitFailingAreas(true);
8 f0 W4 X, \2 k; Y# h1 Z0 i* X) x1 ~- [# ~. d9 ^% f& q/ t

& q; E# G0 B' _                edgeBlendBuilder1->SetConvexConcaveY(false);
$ d- O4 S* ^) W# {5 N* [( H( ]* J( x1 W% k; E4 g, p
" M) Q* G6 _! F
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);( @# X3 n( w7 O2 a9 p0 \" ~

6 ]1 |: t+ g( ^& w
2 o. N: Q* Y$ ~$ p4 {3 h/ @
                edgeBlendBuilder1->SetRollOntoEdge(true);
7 d) ?& r- r) Z% D, y9 ^( J' S( r/ x

4 @6 |  u% q: u3 P                edgeBlendBuilder1->SetMoveSharpEdge(true);
+ I8 b  r7 B- K* ?
9 R  x2 p6 E  E, ~

( P9 J$ y' S: \8 E5 y                edgeBlendBuilder1->SetTrimmingOption(false);8 H1 A! R. \) g  r

! X+ W3 u" I  u0 g* d4 ?( w

' U  ?6 a( Y9 {4 B1 R: `5 i3 i                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);) b' Z- J9 V# K' `$ T6 i
, H( `& k) r$ ~" n

/ `1 I. `& N. f                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
) S3 t# A* ?7 g$ M8 E5 k. m% b  c3 [/ `2 Y/ H) M6 j7 [9 ~) c
4 U& S- n+ e+ R. ?) b
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
, b0 A4 D* ~* F2 f1 Z6 V. V& g/ t5 V& H) G  R1 U! g
' W; w! F8 c9 \0 o, P
                int csIndex1;( ]1 v' c! N$ z8 `1 M% k' r1 w
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
; f% {7 A$ I) l8 v8 u, S% B- [& Q2 R0 D% B% C
) r$ n9 C8 P! Z6 h2 s
                Features::Feature *feature1;
6 c, K/ h9 G8 P& h+ [                feature1 = edgeBlendBuilder1->CommitFeature();
6 ?6 ~4 y- N  e( }, @. |$ `7 o' ?  N: p$ r0 Z. Z
6 _6 A5 B. ~* a6 _- Y2 Z
                edgeBlendBuilder1->Destroy();& i0 `$ k+ |) Z! R' n4 T

2 V2 d" i- F0 l4 B1 J3 c1 s    }* C  ^, B) T7 @1 t
    catch(exception& ex)
' {+ H9 L1 V6 \, j    {
7 u5 n: |. i( X. P$ \& f6 R% A        //---- Enter your exception handling code here -----
9 F0 ?3 e/ G3 y9 A        errorCode = 1;
" K& S9 ?1 m/ [- T6 M# ^; ^        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());$ Y# e- i: A6 X9 @
    }
1 a% {4 H1 g0 u  u* k    return errorCode;. {9 P/ V" |0 ~/ l: A) j5 }% s
}

4 j! I5 g1 |/ f+ f8 A3 [/ @4 c; p6 ]

  A9 w. A# J, S4 e$ K说明:因为字数有限制,这里只贴出关键代码。
+ t9 w/ Y& s9 J7 h  E9 d3 [! w  j: ~# s2 r5 Q+ p

- \# d4 {0 N' k. o. o

0 u/ I! k& K  P2 G) G
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二次开发专题模块培训报名开始啦

    我知道了