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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
3 Z% b( i, @, J$ I
void selectedge::initialize_cb()
' i3 [/ O( x- @+ i5 ^4 h* N{
$ e" x: P% M6 e2 c: p' J9 p( D/ ^7 a: v    try& J$ t  z# I7 U- u2 u& q% w% N
    {

% m; Z7 a% y6 L        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
, X1 C/ N" \5 x. z        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));2 k# c+ g+ S2 y. n& A3 D
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}1 \& h7 f+ H& [4 K
    caTCh(exception& ex)& Z9 E! y, v6 O9 _" s' p& c* Z
    {
9 J  W# F9 O: d7 [        //---- Enter your exception handling code here -----. b) H1 {5 ^' q* [( R
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());$ ?: l1 l0 E8 o$ g1 A
    }8 M" g" I$ S5 u" I/ e! j( s
}" g: A- y) H6 `0 J

: f1 D! R8 i4 i) f4 rint selectedge::apply_cb(); Q2 N$ O5 p' {# w" a/ A& ]
{3 ^3 W3 t. D' D
    int errorCode = 0;
0 m1 w6 ?6 o& t7 K$ d( D    try6 P+ a6 r, z9 f  }8 k8 ^0 [
    {
4 R! P1 ^5 t, Z6 P        //---- Enter your callback code here -----1 t% e7 a, e; ]8 w4 p/ {% ~0 J
% a3 r# B' x! J5 ~0 F

$ j- z) l1 |1 J: b8 b- y8 O
! m9 {. |1 h: q: _, \
                Session *theSession = Session::GetSession();7 s+ p4 ?- C& L. L3 e1 T7 V
                Part *workPart(theSession->Parts()->Work());% v5 x0 V" A3 u0 p, b0 b' B
                Part *displayPart(theSession->Parts()->Display());
4 ^% K9 m; K* _$ w/ E. Z1 g* p; u0 G' L5 T* n: g% n, g6 m8 z

1 a7 u: G7 J2 Z                Features::Feature *nullFeatures_Feature(NULL);+ p1 t7 k) Y  p( z
                Features::EdgeBlendBuilder *edgeBlendBuilder1;8 z$ B( N% r$ d! O/ V* @$ A: n  N
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);4 K. ~" T  c. G6 ]
' H* v! ~( J; b; C7 [) \
$ h9 j0 Q) s) g7 X& k* O
                ScCollector *scCollector1;  b* }$ K/ m$ i! N
                scCollector1 = workPart->ScCollectors()->CreateCollector();
9 x# X( D0 G& x1 F" w3 F/ N! z0 V  _3 x4 w, R' l

2 F1 M) J2 z( W1 \                std::vector<Edge *> seedEdges;( }, O- C* a0 w; E3 d
                6 u) I$ V/ s( s5 B
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象( C& I2 N& }( e7 H9 \7 R/ @
                for (int i=0;i<selectob.size();i++)
, Y, V8 z1 u3 d, `: i6 c' i                {
5 a+ [$ ^5 c1 B. h* K* {                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));. l) x2 N' F6 t: {; ?6 b
  }
0 K7 u4 c# w6 |* M$ i0 u# C! |
4 ?7 ?2 y5 |7 T* l3 E; d  double dia = expression0->Value();            //获取表达式的值5 R/ O; q9 P) \* H
                stringstream DIA;
$ {5 @& H9 w+ {9 v                DIA << dia;2 C1 W9 j/ n. ^% J4 B; m1 `

+ |1 G& Q: Q$ C7 G6 W4 c

/ o( c# L$ |! u" |9 q: @& ^/ l0 G                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
6 ~8 [! b! n. g3 X2 h0 a                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);; l, J) F! u& f$ L5 O6 ~, J: w
/ _! r% `1 n8 K. |; b$ z" Q! G
. [7 i& p! a' D" B
                std::vector<SelectionIntentRule *> rules1(1);
+ N. R" u9 e- a; k0 i- ~                rules1[0] = edgeMultipleSeedTangentRule1;+ N2 B( E+ k% [- `; h0 o% u
                scCollector1->ReplaceRules(rules1, false);3 q% k1 k( O3 a8 t4 ~/ m$ {, N

* o$ r- ?  i8 g6 b
* y! _: h8 e' ~/ T
                edgeBlendBuilder1->SetTolerance(0.001);, H0 @0 y' @9 ?9 u
' J( r& q! t4 }# ]- A( |$ E

1 Z# ]( V3 ~+ ?9 }: |                edgeBlendBuilder1->SetAllInstancesOption(false);
9 z1 U$ i3 o) e* Q' @1 _. g
0 s- v) M& B" v6 {

6 A. K6 O% p& e( c' H. O                edgeBlendBuilder1->SetRemoveSelfIntersection(true);* H4 l4 h% {7 ~
- v/ f6 u  I1 z3 g; T1 E; S

  h2 s( m. A* B) I: U/ w                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
7 k+ A3 I# T( @7 [, L( @0 p  o  _. y/ z: R( D* `: j3 x" C
+ @# C8 k+ r. H* w. F
                edgeBlendBuilder1->SetLimitFailingAreas(true);
* W4 a* T: I- C9 ~7 x6 w' ], a& h7 v; ~, @- b, Y
* r2 Z" A) b. J* \
                edgeBlendBuilder1->SetConvexConcaveY(false);
. c+ A2 O& c* l9 W+ U  u
" Y& j2 y: Y% X8 h: ?

$ f9 Q1 S8 k. C1 L+ _" b* }/ w7 R                edgeBlendBuilder1->SetRollOverSmoothEdge(true);; j# b! H; J% T7 V, v" `# F3 q1 P

& m+ y! o; }7 X/ c* h; E8 i. F

& O9 {. M$ \) N$ U                edgeBlendBuilder1->SetRollOntoEdge(true);
" ]' E" E) @2 p+ `4 _* U+ U6 t$ k, p7 p7 \, i1 s/ n4 {
& E* i; E; w- G2 a
                edgeBlendBuilder1->SetMoveSharpEdge(true);8 E) n; \( H  j- P

0 f9 j1 c5 x: k$ C  F' T
1 q& b$ `4 d: f6 {, x
                edgeBlendBuilder1->SetTrimmingOption(false);
2 S- ~- g3 C1 h/ d4 w3 ]- d1 O! l) O+ H: |7 b6 w! C
) f6 Z& d' E* Q5 J
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
1 S$ C2 B' P1 ~4 k+ ]/ \, `3 n+ w4 F) r" Y) Q

  }! Y. D9 m5 G5 f( s0 E# @/ T! b: p                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
8 X: V  t5 L5 [
8 R6 s. ^- a- e8 C& T" l6 ]$ J
& b+ I( Q( s  F# |3 l
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);$ N  v; O2 p, }- J
' X6 R8 \7 g& u- o: n0 |# h

6 ~( V0 J% j& g% P                int csIndex1;  Q$ x% n" U5 U2 J
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
8 d7 S% Z6 J0 X* a! l7 A2 w( T
! }8 P8 G0 v) m. i5 d  D
2 F. C+ F' @6 H$ X6 ^! N
                Features::Feature *feature1;3 q+ x. w' I- X6 s9 O$ E1 Y# M
                feature1 = edgeBlendBuilder1->CommitFeature();* ^( U+ |5 d8 I2 r" F6 a

0 J" Q* @8 d0 @

6 Q6 m+ z6 \' Q( G7 x5 O) @1 Q                edgeBlendBuilder1->Destroy();
5 B' y6 T8 y' R! g! `% Y
0 Q- n0 i7 J# w% ?3 Q( T! C    }7 n: ^  ]5 k" J! ~9 p4 t
    catch(exception& ex)9 e8 e6 s! M' Q* J
    {
: T0 i5 N( \# n$ h' k: G        //---- Enter your exception handling code here -----
/ d/ K; l( c5 i! A$ O* n        errorCode = 1;/ c. z3 L0 m) Y8 I
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());" i- i% @: Y6 a
    }& i; \7 r. ^5 Y, l
    return errorCode;: t( y. T/ ?5 k9 ?: M
}
- |6 t  u+ D/ A0 ]
8 Y" R- G3 b2 X3 s0 Z! E* H
说明:因为字数有限制,这里只贴出关键代码。0 Z2 w; b9 ?# U! ~

- z  l6 \& d1 P* F& l  k% P  s/ d, d8 x

) j, A+ Q! G& y7 V
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二次开发专题模块培训报名开始啦

    我知道了