PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

. x/ ]8 `1 T. z& Q& z- ?+ ]void selectedge::initialize_cb()
7 @1 B  a) K' X{8 t) n/ M5 r3 M5 F
    try5 L% f( `- k3 J( ?0 k
    {

6 x$ s  L1 j" e1 C        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));- U# L9 |7 ?& y3 n0 y3 m& O! x
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
: G4 [4 l0 Q: |0 [1 w        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}; D2 W) e! t% n5 o) |
    caTCh(exception& ex)
, x: d& L' M/ K& d/ f    {, H. s+ p, E& g' k3 c  S$ t
        //---- Enter your exception handling code here -----5 q* v/ x2 B- ]: u8 v) q6 l
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());, P# i. V! l% I
    }' \9 }- I+ G. Z0 N2 z
}
- H9 |6 f* I& L$ z$ f( v! E/ ~0 B9 x) J8 P3 @- a& r
int selectedge::apply_cb()
; Z: @# c3 {% x" q{
2 v& e$ W" }7 O" K    int errorCode = 0;$ j& b$ V1 g0 ~0 Y
    try
/ V* |( _* u1 {  ?( W    {' q3 r. G0 W* w$ ^; }: x, t
        //---- Enter your callback code here -----: V0 U. I# _  o: I/ H- k* n

: c& Q- n/ `1 C! M3 W
/ ^7 z. V$ u! p, k+ R/ b

/ H" f1 @: g5 h7 B3 s# A                Session *theSession = Session::GetSession();
- ~" g( G+ q& \# T- |0 y- f% P                Part *workPart(theSession->Parts()->Work());
4 v  `0 ]8 z  X7 m4 Q' z, E. O1 N                Part *displayPart(theSession->Parts()->Display());
2 }: y# B# K" U; Y+ L( u3 w; n; @1 t1 `9 P
& G" N! z3 D$ W6 R% `
                Features::Feature *nullFeatures_Feature(NULL);/ P  _5 S- Z+ Z
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
3 b( {) N2 W7 F/ M$ r( _+ w' Z6 n7 F                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
+ F$ }) K/ P3 \% T, ~0 F3 N* k
3 [+ ], }. x/ ^; T$ d  u
                ScCollector *scCollector1;
( [1 B/ u4 C, q5 o0 s. r* K                scCollector1 = workPart->ScCollectors()->CreateCollector();! R+ Z6 w, N/ ^* R+ f

; b: |$ ~  B5 c% _
- M  Y! r5 y9 k0 b; s, H: F1 c
                std::vector<Edge *> seedEdges;
2 T1 e! J3 K6 `! ]                # J+ @. t8 f5 C( t% n
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
3 H* h# G4 a9 H                for (int i=0;i<selectob.size();i++)& b0 t" v& q. }* v, U
                {& ?2 [7 I% U* O* o4 L  h
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));" s0 m( `  g6 T6 K3 l4 a8 o2 J
  }- t2 Y/ u3 s' _

; @& o& T% \* X  double dia = expression0->Value();            //获取表达式的值# h1 W4 N+ A: F9 o
                stringstream DIA;
* v  |) h2 f+ N" }) L                DIA << dia;
4 Q& t: |1 O6 [/ p# {# t  @! D# j; W1 U. f# E- _

# B; l2 ~# N6 s+ S9 R                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
$ Q4 Y* N  v0 n6 Y# e) t                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
* e" h8 o* G4 t$ E6 y3 B& ?
5 s+ \4 v# H9 ^

2 x2 P- D: s4 v! D. e- C9 ^* I# l                std::vector<SelectionIntentRule *> rules1(1);
4 G: z$ @, L& e4 Y                rules1[0] = edgeMultipleSeedTangentRule1;7 q+ a$ r, {! p" C  K8 _
                scCollector1->ReplaceRules(rules1, false);- e/ Q( |8 B; X4 \% c  v4 S; m5 @

9 U. z1 u1 ~# @. s: c7 m: ^5 y8 `% }
" t" L8 c+ M: \' [. o' D7 B
                edgeBlendBuilder1->SetTolerance(0.001);, ]3 @3 D/ }4 [% k+ m& {6 J
9 ^0 ]; ?7 r) h8 `) J
  _1 c5 L  ^5 Y  R, N0 P7 y
                edgeBlendBuilder1->SetAllInstancesOption(false);, y* h+ v: @7 r

. j9 k) p8 v8 a8 w

8 J0 H1 z1 C4 A0 A6 t6 V; A7 V                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
- a) X- k. B; C2 G# a2 _4 h. i
# |; w. C5 B. K* ~; q5 t5 Y; z

* k3 v. T6 P, O9 R( g                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);$ r$ B) w- d5 h
% h2 O. l6 B$ t9 \

- S# J. t. o9 }) D+ _" F* P                edgeBlendBuilder1->SetLimitFailingAreas(true);
3 w+ b3 Y3 q+ y: u- j( d% j8 ^2 |% m3 ~* W

4 f. J( y/ `. r8 m; S  I                edgeBlendBuilder1->SetConvexConcaveY(false);) [, y, L+ m; Q2 Y: V
0 l( B6 _) z! R1 M
$ m% w8 r; |/ R# P
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
4 q/ P8 `* {4 v& K: k+ K" W( t& e' u7 ~" a* b7 e
/ D. Y' k: U" g8 z( Q
                edgeBlendBuilder1->SetRollOntoEdge(true);
/ m7 b; q% W. g' }! [0 D
0 v# N& A* r( Z3 Y& X3 u
, y4 N) i/ G7 j( k: {8 E" K
                edgeBlendBuilder1->SetMoveSharpEdge(true);' z4 C* d! f% s* B0 @8 ~3 {' d% s

: m) j: j( k  [8 n6 S, u2 [2 [9 d! }
7 H3 Q1 t5 ^7 x6 k
                edgeBlendBuilder1->SetTrimmingOption(false);7 ^; @8 B* a( Z' x9 y- k  M) `. t1 ~$ Y

  k, F- o. j+ d4 `# k

" Z. _# s/ Q9 K& L                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);5 p! J. U7 ?" U: S; @' W# z7 {
# i3 R1 J! T( {3 \

8 x# ^" Y$ Y, d& P                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);' }; f/ _3 w1 O* v# t/ Y' w4 N
8 K1 h- y0 ^! P
6 G, g$ ?) r$ A
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
' ~+ G2 I" y3 S- B
  i. k1 P9 r' m! l

8 ]! a% h, A% ?9 \- x9 F+ J) n$ @                int csIndex1;' g/ x! v8 N- e- Y
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
' `0 P) N8 v. W3 L8 S3 x
5 f, y5 n, e0 @/ i" A; k$ _: `

; \+ S: V2 V; A, r9 ?) l                Features::Feature *feature1;
& `! G, e1 L7 j1 @                feature1 = edgeBlendBuilder1->CommitFeature();
& }, o+ w: |# m5 l- Q
+ B7 q  ^& \2 y: o

, m3 J. T" L) n! A& T# j/ z                edgeBlendBuilder1->Destroy();/ N7 i6 _6 X) Q: X3 {. |6 i

3 H, O( w  ]4 g2 N    }/ Y4 g1 Y* c' P
    catch(exception& ex)
4 N& X3 d) W. `9 t& k, C    {0 A% |6 m* j. Y
        //---- Enter your exception handling code here -----
& A9 U  g. u2 M) s' `        errorCode = 1;" W/ S3 }0 F; V! N' k
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
, O( A5 G$ |# x$ D2 h: n  T4 s    }
7 T; M  o: U( Q3 N) S" ]; [    return errorCode;
' o; i" T9 c/ {" z}
, `7 S3 P- j, {* F2 Q
9 J$ z# v: H( N. E  E' z
说明:因为字数有限制,这里只贴出关键代码。
8 G0 m/ u& F; A2 Y# Q& `$ _
* a6 \* v: Y+ T. a- Z: {
8 {2 }, }# d+ S; N

) w9 z+ t8 t6 b+ O0 R! _, s/ k
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二次开发专题模块培训报名开始啦

    我知道了