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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
8 k' q8 N4 `; M1 E; y; g
void selectedge::initialize_cb()) {7 V3 v9 C* z
{8 Q* g$ L8 s( {2 k4 o2 G- M$ g
    try* s6 N, j6 T( D( \& R2 ~
    {
: i5 B! \% N- k% R3 G" l: E
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
3 N! i; o4 l3 l9 `. R/ }8 [        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
# S& W- I9 o# ]2 ^* x! `$ T        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}+ B4 j1 _6 m/ i
    caTCh(exception& ex)
9 `! D/ Y9 V, S' x* q  z( _' ~& ~# j: ]    {- F: j: m7 }9 Y  P6 g
        //---- Enter your exception handling code here -----
0 Z2 C6 L8 v+ F        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
: A% l. s+ i" C  q/ |    }( V, {# E& o7 R$ V4 H" F! v2 a
}
% W2 w+ h/ J+ f; o  L* `+ ?3 g/ Q6 o$ T6 m1 p7 {! A/ X4 j
int selectedge::apply_cb()0 x8 t  ?4 d/ W( M# O  `1 @3 J
{+ ?# y* Q) P/ n: W6 |* k. L
    int errorCode = 0;1 I" ?1 u& ^; ^: Y( X
    try$ c2 N" _6 B& d
    {; O2 Z& M3 K, G- e  C2 d4 D
        //---- Enter your callback code here -----
8 v, {4 {- b* ^1 N1 K2 L5 D" X. E; p+ Z" g4 X4 m% m
; ^# {5 a$ y: Z

# V1 C3 m2 n) N2 J                Session *theSession = Session::GetSession();
5 Z( j2 X# H5 \                Part *workPart(theSession->Parts()->Work());
2 `. g: z9 N; ?% ~1 c  z                Part *displayPart(theSession->Parts()->Display());; m0 K; I' g1 w9 N7 {

  W7 ^5 z6 N  O2 X  S2 N

. w* Y; b  Z, k1 w# T1 Q                Features::Feature *nullFeatures_Feature(NULL);
  n- n9 c6 j2 m' q) s5 o                Features::EdgeBlendBuilder *edgeBlendBuilder1;
6 j# H. C* C# \1 Y: s# O* w                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
9 N  S! h, n5 J+ }
& ]0 s4 x7 A  e$ W

& y' |  M+ i' u+ y                ScCollector *scCollector1;
: {+ Q& b4 p3 V2 k$ j                scCollector1 = workPart->ScCollectors()->CreateCollector();, q$ }0 D7 Z0 U6 y7 ]
- X  C/ N( P0 i# y4 P8 \& o1 Y/ u8 d

0 t( J7 R' d0 l8 H) k                std::vector<Edge *> seedEdges;: r( @. U* o8 |, ]- U
                - i" ?! y2 @* I, F& l/ i4 ~
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
3 ~- H2 O8 [0 S) L- W& N$ e                for (int i=0;i<selectob.size();i++)
0 z9 z- z& x- M  C( B  g( I                {
( g7 x# p4 K' `6 ~- Q+ Q                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
) _# A! J- @7 @5 y, h2 G8 J  }8 d8 m# ]1 r: s) n
$ n' z3 h& C% F8 b0 t5 J: h
  double dia = expression0->Value();            //获取表达式的值. i/ P' U7 {: a" \: Z% r
                stringstream DIA;; e1 |5 q$ E, {9 b5 B
                DIA << dia;/ @2 i5 e+ ~# ]

7 Z0 S- [& e/ l! w7 c* B
$ K7 Q, F- D  d
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
" [  l2 B$ w; j7 r, G2 I% n( w                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
* I& I" V2 F, Z. p* |
) T7 P" g# b+ T/ @# P
( I8 ^2 P& N# T6 N& F  M% j/ _! d
                std::vector<SelectionIntentRule *> rules1(1);) \8 j, |- M4 J' r
                rules1[0] = edgeMultipleSeedTangentRule1;
8 i4 m7 c+ V: [                scCollector1->ReplaceRules(rules1, false);+ [% F4 y3 d2 z5 w4 r# i/ ^

9 c* C( W3 t4 f/ V
" @/ l# y  f8 z6 ?
                edgeBlendBuilder1->SetTolerance(0.001);" ~- u, R3 M# e% H3 W

3 n" K2 C+ f' F1 o/ O* U2 z

7 p6 y7 k# ~  {& j/ [* E                edgeBlendBuilder1->SetAllInstancesOption(false);
' C2 @; F' `' c, Y; F8 \- q- c+ B9 H0 H. G9 _/ a
" `7 @1 s( E) E8 ^: l* b
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
0 L/ L5 @9 X: P" j! _
  e/ @4 D! z3 d" O- O) Y, ]4 d

7 C8 R/ a' s+ M6 p' u$ r) v$ `                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
* p! S- c. X* u9 [2 i0 R7 d( ^' I# r/ w! P, \0 p

* S9 f4 b, ^  W, h- X* X                edgeBlendBuilder1->SetLimitFailingAreas(true);( v2 `5 L( b  |1 s' e4 M2 k
- D' B7 G- M0 N2 }8 t
3 W; `1 i9 D! q3 i& P8 J
                edgeBlendBuilder1->SetConvexConcaveY(false);7 `# D5 v  B4 h3 e% K( _
1 }% B+ ?1 b2 f3 d; N5 a
4 x  I8 g/ L# h+ ?: Y0 O! Z* b
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
0 e/ I8 X0 s- j& ]# D8 j; `
9 c6 h9 I2 Z3 ]+ U0 t4 g
2 U6 f8 b/ q# @. M
                edgeBlendBuilder1->SetRollOntoEdge(true);
9 L6 k+ i; h  P  g2 E; Y( |/ s
/ f( M! G  s1 r. b! ^" Y

. P; H; \" ?/ V' E                edgeBlendBuilder1->SetMoveSharpEdge(true);( r8 {5 t, ?( Y1 B$ L, q- W4 _( Z$ A

, f% h. S/ G5 ]; A5 ?

) R. e9 Q' V" X* o9 i# K7 `$ J8 q                edgeBlendBuilder1->SetTrimmingOption(false);
* C7 N# M: ^. a* o: L# |0 J. N* l% r( T$ ]9 Y

  R4 s- }( K7 J; P% s- C& \4 e                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);4 g1 Y0 m6 l9 s$ g3 F+ g5 a# m+ y; w+ E
2 ~4 W7 [4 }3 `3 l$ i1 y
; Y, i% O* D; H- H7 ]: a
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);% X& y' n( ^+ o+ K7 }
+ P+ x; O) a. e0 T% z
8 W' M4 h, F! _2 G  a* v
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
1 i, Q1 U/ I5 S& |0 C" Z3 c  @' U( J- c4 p5 h$ M
9 _! G% ~& ^2 W
                int csIndex1;" H) o" }: O% }; c8 x/ W( b
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
/ F/ Q) j3 l: L  q5 X! K& ^4 C  M; R
2 L. U! u1 V; M+ g) n+ a, I& X( d
( e& N  T: d8 c' ~* z
                Features::Feature *feature1;
, b8 `0 d$ R" p% ^( L0 o+ o  f* N                feature1 = edgeBlendBuilder1->CommitFeature();4 ^' l# Y$ ~* W
9 g" M5 N  o( `4 ~$ M8 E
$ j' |1 {# o% i7 Y
                edgeBlendBuilder1->Destroy();
+ U$ a! `2 M4 t* f+ _5 R- q" w' n+ k( ?% T' l$ j$ x3 `8 H# _
    }9 R% k; _+ y' L0 M. Y& |7 J
    catch(exception& ex)  [& u! ?0 {; ?1 Y; q3 W
    {( K" C7 S, e8 t; w; V- V3 k
        //---- Enter your exception handling code here -----2 E. `3 O/ F! b: a/ n, f7 f
        errorCode = 1;% |' W. ?7 }7 M) A& d" X7 B. L
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
$ L! S$ Q/ _) X; `* ?    }4 I  w6 f: f& R. T2 g4 f3 J
    return errorCode;& V2 H$ x. S$ D
}
6 d  R. J3 _% g2 R4 S$ N( T3 S

. j3 M( u6 K* c' B  W1 i. |4 W1 }说明:因为字数有限制,这里只贴出关键代码。
7 x+ S* O: F6 V7 N; \, `$ m4 f6 `4 `* c/ J+ L9 O
$ [: @) ^+ @! w* w# X" R2 z

! Q4 _  d1 E1 N+ G% d0 b5 w
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二次开发专题模块培训报名开始啦

    我知道了