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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
1 }' A( G& K# D3 i
void selectedge::initialize_cb()0 _; K! j# b3 c0 E- y7 `
{; }3 p, m& v4 H8 q
    try
$ ^8 V2 {& H1 c' X    {

+ h- z3 t( [1 k" U( s        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));) a8 ^/ }- ~! N* X( ~$ u, w8 t
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
; A( _: @+ D7 I) {        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
- O* W3 q  U# k* t5 i    caTCh(exception& ex)
- k1 \) z% `- k6 ^2 P! f( [# q! V    {% @' ~  |1 R& y& y- o
        //---- Enter your exception handling code here -----
& m' V0 @' x) m7 z4 L9 y& w# _        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());6 R& i# V8 @6 }5 A- {  `" E: r
    }  U9 g, }5 g1 x% _! Y
}
* e  k- A" x+ F/ [6 }8 t1 i) y" V  a  F# O: P. l
int selectedge::apply_cb(), A$ D: G- K8 c$ \
{6 X: Z0 w6 ?% d- e  B, r
    int errorCode = 0;! ^0 F4 o4 |2 e- C, P" E
    try: O) D8 Y7 I- l0 ]3 D
    {$ T( j/ f9 q- r3 C4 G1 p0 C- |
        //---- Enter your callback code here -----2 D" S- P% i+ W0 z- k5 O7 x

* l7 ?+ e" B  R# T
, C: |5 ?! M4 h& u9 J; o

$ x( e2 I& z* ^5 \+ v                Session *theSession = Session::GetSession();
" k, G6 w# [" o  ^                Part *workPart(theSession->Parts()->Work());
( |+ ^" F2 g8 t* ?                Part *displayPart(theSession->Parts()->Display());
7 M* `( }7 t9 S3 ~! J' J6 O1 I! Y  U" r! K% |+ _, w+ q

+ o- H9 c9 V, i5 L$ ^+ t                Features::Feature *nullFeatures_Feature(NULL);
0 o3 M: T' b) m# u4 k                Features::EdgeBlendBuilder *edgeBlendBuilder1;5 ?) ]0 K1 s" v6 i) z
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
) \0 W% r4 |3 O% E  Q- e0 Y* i: U' K* l6 ]4 z6 N3 s1 @1 ]

! n/ r) \1 w) [0 {2 B6 V                ScCollector *scCollector1;
9 }# [8 W; \, P6 W9 _                scCollector1 = workPart->ScCollectors()->CreateCollector();
$ P. F# U3 F4 V  S9 L* R
9 W% n! g2 E$ }1 k0 c. {$ c

/ a; T& O' B7 A+ Q4 v8 t: d0 m                std::vector<Edge *> seedEdges;4 r; R2 @# L. Q$ M
                ) O: {+ J5 d/ ]/ U+ R2 P- X
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象# A8 ~- m  f7 _1 Z
                for (int i=0;i<selectob.size();i++)
' C& c4 z" ]) S# |6 i                {7 {1 W- m( B8 A1 [/ K, b
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));( |! |: C1 R. O* _6 \, C
  }6 ^) W# O, D0 \  m0 S' y' J( ^

7 k$ U0 t% F8 t0 c( b# h  double dia = expression0->Value();            //获取表达式的值& x" F6 l; _5 O& A0 j' U
                stringstream DIA;, O  }% i4 F8 K+ b- J
                DIA << dia;
: d7 m5 i/ S0 b& M$ ^2 `, Q$ z  }% y

  R/ Q* O- c- h( C/ b- S                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;- f* i  f- ^: `/ a! [' u
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);% J$ n+ H! |0 C' h8 Y, b' b
" Q$ N0 X) E* B# V- L" F9 z
$ b/ B  I/ q# C0 ]5 L
                std::vector<SelectionIntentRule *> rules1(1);
2 q7 P3 M. i' F- G: X                rules1[0] = edgeMultipleSeedTangentRule1;( a" p7 r4 e( Y) ?2 S0 M$ H
                scCollector1->ReplaceRules(rules1, false);
2 G. T( B* C/ p) ?  p
. Y# k7 r+ ?+ u! s' D8 d" o8 p

7 l: t7 o% x" p7 T  {4 o                edgeBlendBuilder1->SetTolerance(0.001);% I# T* d# w, l9 q
; p$ w% k. b- H( t
. q$ N& e% o* ?1 X* I: b# a
                edgeBlendBuilder1->SetAllInstancesOption(false);- i5 p! U9 Z% Z. ]6 \
9 e) P5 Z  p, b) Z1 d+ b2 [

& X* l8 n) K% @. k                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
0 b- G( t5 v. s" u9 c2 m4 e& S. N6 I2 Y/ B- P, J" H5 s5 B
  I" v  m* V7 O5 t
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);- `' f; t) k) U" ?2 W
/ t: Z8 Z; G1 D! ~4 D

0 A1 i( _/ H1 J                edgeBlendBuilder1->SetLimitFailingAreas(true);- o$ f" z; d9 }# y& [* X

" ]% j' m4 T! Y* Y3 L

7 b8 a  u  M- u+ l+ j9 `3 m                edgeBlendBuilder1->SetConvexConcaveY(false);2 D, }+ Z0 v& I* L

6 ]: _0 ], p9 H: @' R6 P# H0 E

! a) j8 k7 }2 b0 `0 ?/ S                edgeBlendBuilder1->SetRollOverSmoothEdge(true);* f, r! A- r& @3 |2 v6 F, R# l
! H4 n+ T* I) B: n

; S" E1 z3 ^6 T$ l. x. R' \! C( b                edgeBlendBuilder1->SetRollOntoEdge(true);
9 @* |+ C8 v: K% s6 N- V. U, |1 m# ]

& T, e7 X  h2 W0 P6 y8 `                edgeBlendBuilder1->SetMoveSharpEdge(true);
) q# r& G+ V" J7 `$ l9 Y; ?4 l" t

5 p( s+ h8 ^+ B- ~; D9 m                edgeBlendBuilder1->SetTrimmingOption(false);
- _! ^1 e! R9 g$ Q1 a
! T5 `: h! w$ r4 c+ z2 i. H2 _
; r8 X+ ^/ }$ R4 p
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);" j3 S  Q3 [0 ^: X( V# Q4 F/ H

9 E* l7 B7 H$ m

3 T% y9 ?% l( x7 a" D7 m& V  Q                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
4 K7 X. R* W: G$ H: V! P  W
+ }7 k, n6 c. |; X

1 C' A  N2 ^1 ^2 ?/ C                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
! F, z0 _: V# J$ Y% `* l! w, s% f; a5 M( l- B5 ^  t" [  r, W
2 Q6 f: G' `/ C2 r, ^+ b" v
                int csIndex1;
( S1 s+ D- S# `  s                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
  u. L0 m2 \4 u6 J. E6 o/ a. T+ e5 f0 F! V
2 d4 P% S( ]" ?. G$ V$ U1 E. k% L, x
                Features::Feature *feature1;& Z7 u! o) v( `! p" F5 {
                feature1 = edgeBlendBuilder1->CommitFeature();
$ Z% G  R- ]% o
' s+ {& ~8 V) ?+ }0 J; X6 i* V
* q* ?7 J4 O0 Y% P
                edgeBlendBuilder1->Destroy();
# }# J% Z# G' \5 x9 e. `5 ?
( ^8 d9 d9 u! b4 B* L    }; E( Z4 r0 N7 B. O, J& b
    catch(exception& ex)( y4 @; D: ?: d( k( x
    {
# s# a  i8 ?) U# P4 }9 e        //---- Enter your exception handling code here -----
: f4 S) @7 n: F) d- b3 x        errorCode = 1;
5 Q& d+ @% B6 j2 Y        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
1 c; v4 M* I% Q# Y8 I$ @    }
: A! u6 C. m+ v5 M0 h    return errorCode;
$ g: N1 p9 C: |}
& m; A& ?- K3 R0 q* g6 P
- U' F- C, c  D4 ~9 v, a
说明:因为字数有限制,这里只贴出关键代码。
) y1 d: q& Y; u! Z
; f3 D4 q& ]" S$ [6 n1 q" h, i; U* u; f
7 O6 B& U  E: {4 I3 M9 D
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二次开发专题模块培训报名开始啦

    我知道了