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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
7 G9 r4 J. h3 w
void selectedge::initialize_cb()" l2 ?4 s. `$ m# z8 w, Z. S
{
8 K+ x0 e) X6 O% f6 ?1 }- |2 ?, y    try! e+ ^& J3 X. O8 }' p+ q# j. Y, w, [0 I
    {
8 G3 a) W3 R! f* f7 k, v# J
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
* {% ~" L, _  A4 X# P        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));# e' y% {# T2 V. r% N! S
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
4 @" n# \3 d7 y# X" ^    caTCh(exception& ex)
; E: t8 Y8 a3 ^' q    {
0 ~! n1 [7 B  a9 F        //---- Enter your exception handling code here -----
; f8 e" ]! P/ d, w. ?) ]4 W* }) b        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
. r. j- Q6 {5 c, l* s    }
7 k- h' R8 o. G: M}2 L7 S) F* ?0 }" i6 l( V& Y/ Q& b+ S5 y
) H; G7 {7 p1 Y* `- H& l; v' K& B9 g: T
int selectedge::apply_cb()
3 b, s) j# {7 J# s% U9 `. ^{
9 U  I7 d3 P/ w* A/ v    int errorCode = 0;4 _5 x: d  U6 G3 F! p9 U
    try/ ^" w% Q! [( B7 U& p. M0 w
    {( G; Z9 v. p# L& w: O
        //---- Enter your callback code here -----
( r5 j) q. |) T" X' B9 h- D9 O7 b6 U" O; K2 g; {- e: i' o

7 y# ]/ g5 a' v/ p$ n, T0 I

5 e; O& L: A" Q8 V3 S9 l                Session *theSession = Session::GetSession();! @9 X) Q% K5 k3 X
                Part *workPart(theSession->Parts()->Work());
& K0 S! u) ~/ r0 Z. X                Part *displayPart(theSession->Parts()->Display());
) V) g1 ^0 P8 X# }9 E
7 Y% x+ Z9 L3 _3 c* x. K& v% p
. Z- q1 Z; E, t1 ~( L9 u- f! H- H' h
                Features::Feature *nullFeatures_Feature(NULL);) q1 N5 x, g9 [: l( }9 g! [' Y
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
! i2 t5 u9 R  I' m/ {  x0 ^: F- n                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);/ X$ q9 R# P( i6 V0 I% L8 ^6 h
4 v# _( w0 m/ k( y# F# i' y
2 c" Z" V! D( Q. }3 {1 J6 z- ]
                ScCollector *scCollector1;* e& J9 ]8 X' A  [* f
                scCollector1 = workPart->ScCollectors()->CreateCollector();+ w6 s0 h: J3 t# t

# l0 p9 e/ E* u/ a+ N9 o
7 o' Q" \  U6 s* _+ G* ~$ l
                std::vector<Edge *> seedEdges;
2 _3 b- t" |5 F6 W                7 M7 R! ]  d0 F$ p
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
; ~, W* ^. J: O5 J* E! h, I+ l                for (int i=0;i<selectob.size();i++)
3 R4 V, j, u# o; r                {
5 N% J- n- j' A0 H2 ]  J                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
  {+ }) p. I2 u, }* P6 f, o  }& q" c8 F7 o1 S, v! e3 z) _, t: W

5 y( g" @2 ~. l3 R4 N4 K  double dia = expression0->Value();            //获取表达式的值4 |+ r1 w1 r% g3 a
                stringstream DIA;- ]% a7 g& }# G$ I+ {, \
                DIA << dia;
  J# ?6 ]8 }: G! a! Y9 V" _7 J5 t; c& r: Y

' u3 F7 j; y9 L) t; w2 ~                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
6 V( I; W7 f: e# r                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
+ k6 u3 W. {' F8 Z. p6 N8 E# N2 ]" `# e0 A9 W2 o

4 u" V& X% X) ]/ N6 W& D. l/ f; L/ @                std::vector<SelectionIntentRule *> rules1(1);
4 m( |" L! Y# W) M( A" e                rules1[0] = edgeMultipleSeedTangentRule1;
- I+ \( w3 P& H                scCollector1->ReplaceRules(rules1, false);
1 o9 `7 i0 f6 _# |  V% Q( L- `4 W1 |3 [
0 _" N" B8 ^  F4 X/ j/ s
                edgeBlendBuilder1->SetTolerance(0.001);
1 B( ~6 ^2 R' s; q7 r
$ M4 N; {" u% H. `5 ~6 o. ^) Q

4 g* n8 J: C+ Y' u- _                edgeBlendBuilder1->SetAllInstancesOption(false);
8 c) Z% V! D* |8 d
+ h' }! n' a( D
8 a! s  L! _! S- b/ q9 f, `2 X
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);# b1 @( n6 k9 ^! y( `2 M0 L
# `& {9 z' }: d
4 O! b3 c: h% \" E: n
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
6 P) w( \8 U7 U: R4 k% E$ m% a1 p' p7 p/ b# x

! m, T" B; M) g6 K( {                edgeBlendBuilder1->SetLimitFailingAreas(true);
, V* A% a7 y# o) v/ u
1 f4 J  G! `: Y$ L3 m0 h& f

& w! {& U9 s/ i& g$ b5 F* o# a                edgeBlendBuilder1->SetConvexConcaveY(false);
; k" l  T9 Q. ]- t+ V
3 H8 h+ k( K0 l# @, ^
  Y; c# D- {8 b2 ~, R
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);1 S- }& j3 }8 J3 n7 z
5 `4 c1 }& ~5 X% w$ c) ]
  ~* z- y* E0 d8 L" ?/ k
                edgeBlendBuilder1->SetRollOntoEdge(true);
( K' @3 d8 D4 Y- K7 r3 b8 j9 T
, f6 m. [) y( k5 |+ h
* i$ }2 d) a+ V4 P) B+ I; W: W7 m$ w& U
                edgeBlendBuilder1->SetMoveSharpEdge(true);# y; I/ |9 p! w, \' s/ q

) {1 Q8 O3 {+ L; Q
% ?% y8 Q- E6 U3 h
                edgeBlendBuilder1->SetTrimmingOption(false);# F  Q) E% D/ E  C7 D# t
' b7 I1 P& }# A- s! i0 N

7 h* l" y3 |& C! }) B                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);2 J6 v! z9 \$ ?. V5 d/ e' c6 @
- @5 i; ?. W7 v. Z7 t3 v; R3 P( B

2 p/ T9 u/ n- _0 t) y9 N# h                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
. Y( Q( x! r& M* A& u
. g9 m& S3 N1 V

7 L! W+ y- ?" |% R* p  N; z                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
- b5 V0 ~" f  e
3 N8 Y4 _( c* `

& t1 }+ i+ Q, F" z8 I                int csIndex1;4 u3 @, ]% j5 ?2 K: s1 A7 S( e" ~
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());1 V/ H" g& K+ @9 D- \. b( I

% O; C1 X( P) q, t/ j( d

  v- q$ g0 g5 a' q# C6 q# O5 P                Features::Feature *feature1;
$ X" F  G1 e' p1 j+ D) H: c                feature1 = edgeBlendBuilder1->CommitFeature();) R9 s" B- t' B( B0 c6 r+ k; M: q

% O% ?' r9 C( @3 A5 q9 v7 N0 S* I
6 F; }1 K2 c- h; B
                edgeBlendBuilder1->Destroy();. j) q" ]0 \. }' D' \
2 {# O/ S6 t# n- z" S2 ?5 a
    }
' V4 D% q$ M! i. f. A    catch(exception& ex)* X) q# x4 D4 c9 F& ?) M
    {
& W  C! }+ w2 `& A6 S/ Y* j        //---- Enter your exception handling code here -----( E8 V; {! o2 ?3 x1 J6 |  r& {) r  }
        errorCode = 1;
; `  M( b4 \. L3 f3 Z! V. O        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
1 Z& d& t/ u. Q( @    }- u% r7 d5 S" T8 j( R
    return errorCode;- d6 h9 u9 z! V
}

; n3 K4 S2 ~3 v' h8 m, b

3 T8 s& h& N$ @1 g& T3 k说明:因为字数有限制,这里只贴出关键代码。
% ~5 x" [( z: y! L/ n- c+ t$ ]' S/ E8 F- i; h4 I7 w+ I6 O
9 s5 U( R0 V% I3 o! k

; Y  p3 a+ N9 |! P- P4 x  t
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二次开发专题模块培训报名开始啦

    我知道了