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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

8 b) e# p& {+ Q2 g9 |2 Ovoid selectedge::initialize_cb()2 e: N3 F( j- k3 }3 P1 I
{+ p! K9 J" j5 l, }. g6 ~
    try6 R- e0 R! U# |' P0 l4 _8 ?( W' f$ S
    {

* @6 Z7 f) c5 ]        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));# M& u  e2 k! A5 N0 S# @
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
) i6 y, o& {, K6 ], h- D- j7 L        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
9 B8 c" E+ o% t/ l4 n2 z* M    caTCh(exception& ex)
6 Q* c0 z( q% d; S    {# z3 }8 g) I7 V% a2 y' T
        //---- Enter your exception handling code here -----
9 j- G( A+ x2 w& S5 {: T        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());) v+ I$ e+ K8 v
    }
1 Y& g* v) ]; Q! {: h- q2 S: j0 a}
, `' v' w  Y8 ?! m- [, l+ _
5 D0 H8 h# h( Jint selectedge::apply_cb()
6 o5 n2 D1 o) @1 Y- u2 \8 w{  _% d' M9 u, }6 n' M# e
    int errorCode = 0;/ _, R/ V$ T2 C* ^4 }
    try; x$ y6 u" c! Z' I. P6 H0 \
    {" v% p+ C; @  b0 ?* R, ^* _
        //---- Enter your callback code here -----
( D9 T* H  Q2 A8 j
/ |$ ^4 x3 k! |: v1 B' E; \1 Z0 ~4 o$ s+ ?5 D9 _: l

* f% Y' v; l. J; `) M0 D4 M                Session *theSession = Session::GetSession();/ G$ `1 ]: n, k" a2 c. y1 u
                Part *workPart(theSession->Parts()->Work());
* @& \  S+ B1 |7 i& _, W" k/ ~                Part *displayPart(theSession->Parts()->Display());
% e5 v! D( K$ y2 [5 E2 P1 u% O7 A. j- v. ^

) U; ^3 O. R- H& q4 S8 c5 P) z, ^                Features::Feature *nullFeatures_Feature(NULL);* @% g# _. A( Y
                Features::EdgeBlendBuilder *edgeBlendBuilder1;! L3 P: L! U- j3 f
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
4 }* y/ Z/ m  ^' _( d1 }% f* _/ D. T# t+ I! b1 U0 t
* [/ o8 U3 ]! c) h
                ScCollector *scCollector1;* T0 a, l" F+ Q, i. r- u
                scCollector1 = workPart->ScCollectors()->CreateCollector();
, H3 B" Z9 c2 v* ~7 Y7 U/ B3 M, h3 `: N3 u$ N5 M0 [

  D% h9 B5 J2 v/ _2 m* w                std::vector<Edge *> seedEdges;
0 ]2 }; a! ]+ y/ ]) B+ R& K               
/ J. d  W: }6 j! {1 @+ A                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象/ i0 {5 R5 M' \0 U8 k, [3 f, K. Y
                for (int i=0;i<selectob.size();i++)
3 N( a5 M; N6 k+ ~+ k+ q                {
8 g5 [5 J* r3 A7 Q' o                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));: ]5 E9 M. ~# J
  }
# [2 B) A' X: H' z/ }% U9 x
5 f( l: Q% H1 w2 K/ J  double dia = expression0->Value();            //获取表达式的值# r2 x! ~, Y% t' B, s
                stringstream DIA;
7 T! z2 b2 ?& z/ z. p' Z  i& e                DIA << dia;
' D8 v4 n6 u7 p  v- B+ M+ l, D/ w& t+ k( L& V+ v
, Q0 u7 x! w. q
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;; \8 N: ?4 r) [! t, G1 D1 @
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
" ?+ ^. O* A* u. P) s- i! W" V# I

( S1 B* m  ]" D* K                std::vector<SelectionIntentRule *> rules1(1);: b8 H4 C, U" K0 h4 l9 p
                rules1[0] = edgeMultipleSeedTangentRule1;
+ Z3 t; J4 C8 H% Q" g                scCollector1->ReplaceRules(rules1, false);( G3 T; m- W8 `6 k: j

3 S, x8 H$ S5 c0 [5 B: {1 z1 Y
6 H- c5 n5 S7 R/ _! }6 a
                edgeBlendBuilder1->SetTolerance(0.001);
6 p! k  r' n% F8 ]. n  i; p; Y. s( _* @8 N% Z
4 F9 w6 Z$ o* G/ c* f" S
                edgeBlendBuilder1->SetAllInstancesOption(false);
* [0 ~3 C, i( Y/ v) O9 i( \( `
4 Z5 j+ m5 }( k" }. V1 \

# _, F4 Q+ U& |2 y/ ]0 v( @9 q) b, o                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
; A- J3 n! o9 t4 J7 \( e% F
, d4 K6 w6 b1 A# H
, z! F+ O9 j+ ]0 c8 M* Q
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);9 c0 h) z; u, o& O3 _& b, b) f! o

0 F; K4 \/ E7 L$ t# n2 t+ c3 n  [

9 B$ s1 g# \# e                edgeBlendBuilder1->SetLimitFailingAreas(true);3 m8 n. Q0 `& d1 E  n! q

' }9 u) \' E# ?

5 V3 M3 a# O2 [) x1 s, [                edgeBlendBuilder1->SetConvexConcaveY(false);
% J& ^) [: E+ s+ z! A8 l+ f" g' S) W3 G, A: X
6 P  n" x7 N% b) H
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
+ p# [- r/ A6 e0 ?* S' o9 ]! Y$ I( n6 }4 l% l5 i
. }3 G8 S6 n3 o6 l, ~- z
                edgeBlendBuilder1->SetRollOntoEdge(true);5 r; u0 J+ ?+ i) k6 p
1 v' Y! g; y* t  J  c. J9 _+ G

# b3 @, i6 g1 u& V* P. ^                edgeBlendBuilder1->SetMoveSharpEdge(true);
$ h& I- F; n8 O9 F9 u2 J' D1 |
1 Y7 q+ d& P( c
8 w& b% ^. O  m
                edgeBlendBuilder1->SetTrimmingOption(false);
% J$ Y* f- J0 ]# j% Y7 C9 o; Y. r8 _9 \

* f, f6 F6 a' I5 l) B3 v                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);' }2 w: j4 V; ?

/ i6 o( z; u! i+ x: J% O' _6 I
, f! L9 P' ^/ `$ t
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);# H9 p1 H7 S7 k2 E/ \
) ]/ v- V* p# t! n( B

4 i6 I; H# G, P- I                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
( [+ I- K! P- C& }) p$ S$ V  B
' h5 W6 v5 U7 t4 X) F

: I: D$ o; H1 N" b0 |' t, x                int csIndex1;
# |' y5 P- e& q9 _                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());$ m1 Z1 @$ F- ?( t" p7 M

" [, ]) ~5 G- B; u& Q
6 z' K/ p* U* Z; c. r  c& u
                Features::Feature *feature1;
! f, e! r, B# e                feature1 = edgeBlendBuilder1->CommitFeature();# H- }- J. X+ c+ c
/ D' X+ }2 L, }0 ]

  `8 d: ^* t1 q. {! ]6 ]4 V4 c+ C0 ]                edgeBlendBuilder1->Destroy();
3 K& Y& Z5 i  Y, t' G  k: k
) g8 D" C3 C# I( [    }$ B$ P) G' o4 C) }% X; }
    catch(exception& ex)  T/ R# c- J- e$ e; L
    {
) I$ ^6 P% n( ]+ R0 m0 t$ ^        //---- Enter your exception handling code here -----
; Q; K: {& N9 ^( N( z* [        errorCode = 1;
/ `' _; H9 o* K' }& r( j' L& H) {        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
! |4 G) R4 F( f4 a& S0 C    }
( m5 A# M# ^8 Z1 R8 L' @    return errorCode;, c- m! c# A  _6 E
}
! u+ \& N# u! J. G- ]/ {- I1 d( W

; Y7 N$ Q: \. d5 I* n7 }6 `说明:因为字数有限制,这里只贴出关键代码。
  ?  r7 N' A5 |4 i( Q8 L
" m8 ]: i: ~8 p' R
( z/ q3 v! v( ?0 ]

/ x4 o9 f6 L' W" O+ Q9 b. 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二次开发专题模块培训报名开始啦

    我知道了