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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

4 j9 k" t# M' j5 }' m; G' Avoid selectedge::initialize_cb()
' P4 s" [6 p1 ^/ }/ V{
. n! ]' ], B8 g! k4 a" L3 b) }    try* y3 k! U" c5 w2 T
    {

/ l) b( e2 c, {# ?, X4 O. r        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
7 {) y2 a& V" w0 B; r        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
' M1 \6 s2 _- g/ w6 [7 ^! @        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}' K( X' S/ W, v( l9 m
    caTCh(exception& ex)/ o* Y4 g/ i$ l$ ^+ G$ M
    {
) L! H- S$ b* s        //---- Enter your exception handling code here -----! B/ t  I& _8 C
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
( A, }4 b4 |  a6 J" e- V% f' Z. [) i    }2 [9 F) [- ^+ s7 k3 F9 \% ]3 o
}
' C* B2 `% R! D7 G: U! ?$ Z
8 {% ?* i+ m% Uint selectedge::apply_cb()/ J( [; Y  i/ p1 S
{
8 z# {6 [- E0 h/ Q( v$ I. s    int errorCode = 0;0 K0 t9 Y4 U1 m, w( _7 x
    try9 H# Z3 w- F/ t! Z
    {
, o' H3 a! R! i( z) ?0 R        //---- Enter your callback code here -----
2 u, S3 f6 F# d" p7 Z9 P; [) ]& v! M) x& Q

5 Q1 |4 ?+ V9 {% K- i' m

  X, a3 V* f8 w: g. ?                Session *theSession = Session::GetSession();
$ v# e# E5 F  L, d( R4 l7 `                Part *workPart(theSession->Parts()->Work());: V  |, ]( V: ~3 l
                Part *displayPart(theSession->Parts()->Display());0 F# a5 o, a9 }, R8 V
7 q4 }' O" H: p5 e/ n# ^

  z, w$ N0 G4 w- \- @* T. U- o                Features::Feature *nullFeatures_Feature(NULL);
" M5 `. J6 A$ D& P                Features::EdgeBlendBuilder *edgeBlendBuilder1;
7 v( ?4 ]- ]( B' w1 V                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
- ]' V& W7 v5 k2 N* h$ `6 M4 i: @. s9 B/ r3 V! A' p6 P
5 ]- o0 B1 `$ g- y3 x  S' ^
                ScCollector *scCollector1;
4 L5 A+ Y; [, ?- Q+ d* R                scCollector1 = workPart->ScCollectors()->CreateCollector();
3 }% z8 q4 D0 n* i# d
% S+ s* {& ~( _8 v

$ j# u2 l1 \4 ~- V                std::vector<Edge *> seedEdges;
0 ^; A7 c6 I" O+ e9 K               
' a& O. h, R9 l  O                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象+ g% T+ T. J3 j( g# k
                for (int i=0;i<selectob.size();i++)! I1 \/ F, C* ^. v& \, H9 o* u
                {
/ H$ ~7 d' p# N2 R: j2 j                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));- g. Y$ i9 V! q5 o% u
  }
4 N, `( |# S1 }6 f
. z# n7 l, N) F  double dia = expression0->Value();            //获取表达式的值
: W  t* t" ~2 y                stringstream DIA;5 G. ]7 @/ ~  c+ `  H* ^) |/ g8 C
                DIA << dia;
6 t- o5 f5 J2 A# O* V3 \: i) g5 W2 A6 t  x
. k+ {2 e/ a) [! Y- [; i' H
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;2 Z( @) }# @* M6 q; m) S
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);& o; l: O$ u: n. `

4 Z# m, i! E9 |4 x% {
2 C) E2 j' x# _. ^+ k# s
                std::vector<SelectionIntentRule *> rules1(1);
' Z" W( E2 E" @. |7 O, I% m                rules1[0] = edgeMultipleSeedTangentRule1;) P6 D8 E1 F+ o6 }- s( ]1 ?( X
                scCollector1->ReplaceRules(rules1, false);
( Z6 ^7 n6 ?2 ]" k& u, E' I. [& P
' a( X# T$ G* ]) Y" U! X  f1 w1 g

& Y6 g9 Z1 f* C0 E0 g# W4 d+ p                edgeBlendBuilder1->SetTolerance(0.001);* K; c" M: o# b8 N

$ n& G1 b4 b/ p- ~3 O; h  h
3 g4 R& d) T/ V
                edgeBlendBuilder1->SetAllInstancesOption(false);
6 B9 i. G1 t: n
$ A' R; @0 T+ H& ^5 {4 j2 U
6 d8 ~) H- G) M
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);7 @' V! u) Y' F$ F# x

1 q4 [0 {9 c2 b
7 B& e1 B/ p  l8 d' L; {
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
3 M/ x5 b+ `0 v4 ^4 @; k) y
* h) M4 R; ^/ O- V3 z: i; x) p/ r

+ Q7 x& r0 _  J4 C; M5 Y7 W                edgeBlendBuilder1->SetLimitFailingAreas(true);5 A. d" i" ^9 O5 ^" f& J

/ \# a8 B* q' t. [; `  R4 j1 ~3 @
" {! k2 l8 q: e. T, @0 Q1 s& Y0 q
                edgeBlendBuilder1->SetConvexConcaveY(false);* v9 V6 e8 G* b9 ^8 Z- d

& M$ u) _7 o3 v+ a. u, i1 L

3 }! G2 ~( H, t1 \8 K# g0 I7 U: v                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
" u7 i% e, U% X/ Z: v' {
2 T1 k& z! M; B- W7 s- b) w
, t7 P1 R  i& D& h* `% V
                edgeBlendBuilder1->SetRollOntoEdge(true);& k5 T( X9 j% Y4 ~8 F

: n; R: X& L9 g

+ u1 M: a' S) T! e2 p                edgeBlendBuilder1->SetMoveSharpEdge(true);% U& Y$ I/ d' K7 S3 x3 a/ j8 U5 I8 b

+ X* \# s& d  q0 _& Q

0 g0 S9 b! @! t- g                edgeBlendBuilder1->SetTrimmingOption(false);) v0 [9 f4 l2 z# E, z/ x
* l& ~* R6 O) q' O

! M& I9 G/ M( w7 E                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);+ A9 q9 W" _' z3 c" B  O+ x

$ V$ E8 J" z# P/ e/ z3 U  ?
7 @0 w$ P: R' E  D, d! [9 @
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);) V2 i+ W  a: ~
/ z+ I' R5 w9 g9 y  c3 O$ l  z2 r

5 _0 W* D% X3 I* v+ V" Y                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);6 g) \3 \9 s8 @6 R' F& v% F

3 z/ T. _1 \( c: J; r6 z  q! l

" q$ A4 I  q2 n3 I! A                int csIndex1;' n2 X; D- v# {/ v3 W* R5 V6 {2 ~0 _
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());3 u0 z( |% x" q- I1 z4 b
2 W" C9 V7 C+ W5 B5 `3 }- n

  I0 ]  ]$ H( a% X1 C8 n                Features::Feature *feature1;
( e. z, Z7 ?5 l* Q* J                feature1 = edgeBlendBuilder1->CommitFeature();5 i4 P1 J2 {4 ^0 _
, R! O5 Z6 d% T! u, w/ M9 m$ _0 Q0 t

6 b  R- U" v  b                edgeBlendBuilder1->Destroy();
8 A" A! m1 }, k) H. l/ n9 S
; x2 w# n* F4 H5 O    }: K2 _! L# |8 G1 }" J8 i
    catch(exception& ex)
: Z: A3 `# \) j    {
0 l8 |) l/ A' Z; @( g6 @* j        //---- Enter your exception handling code here -----
' T4 H9 V. k4 }. G        errorCode = 1;
  u9 Z- i+ |5 P- n        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
3 Z8 ]0 \/ d& U" G, n4 H0 j    }% v  O7 h  u5 i! J& ^
    return errorCode;
* S- K6 s5 c: V8 O}
+ }! G* p0 S; |+ I/ C# R  D

7 Z; [7 I- i9 {- Y说明:因为字数有限制,这里只贴出关键代码。
8 m' N+ K; d3 B# {6 I
1 \# e7 g3 `5 p  [& ~: `% M7 s2 q1 B0 x
: L! p5 v3 k$ d- Y7 D# o
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二次开发专题模块培训报名开始啦

    我知道了