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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
* t( E& Z/ `; E7 t3 @. q
void selectedge::initialize_cb()3 v) x/ g7 {* V' {( T1 w4 {
{! K1 n1 s+ o( o4 N  t! |2 e
    try$ Y# [5 X' I9 M, k1 y, w# ]
    {
2 F  |/ M# q8 t3 `3 w) d
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
2 o* ]6 S- ]1 {        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));! N2 V0 U1 {4 b6 `$ w6 @5 |* q0 X
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}. v% h& D: J- i2 x$ p4 V
    caTCh(exception& ex)+ a0 J% y. L! e; K* H, I* y: `5 O
    {
# _  |; C- v5 |! W        //---- Enter your exception handling code here -----" |" H6 O2 T8 {- y3 u( x
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
( i5 h& L7 A6 u. d3 L% T7 Q! o    }7 O1 u! {2 J: A- N  D# {; M" ~
}
, a4 e3 Y9 H2 f+ L. a# z% z( a3 I6 ^9 @) g! B) K
int selectedge::apply_cb(), B+ W+ \% m; \& {# P
{1 N! [8 Y2 M, v$ z, l% Y
    int errorCode = 0;
. g/ g$ P+ b4 O: ~' f+ R* @    try
- o3 v( b5 p2 _$ g, `    {; e7 n: p0 g4 T: N6 o1 E7 _+ G
        //---- Enter your callback code here -----6 o; M8 N3 ?. J
+ t7 \2 ]* z# \, t" r

. d, z0 m5 u* z
3 J0 L# N2 r3 s
                Session *theSession = Session::GetSession();
0 ~5 a/ m# C6 M+ `0 R                Part *workPart(theSession->Parts()->Work());$ n0 D+ C* ]% t, s- q9 M' \" O
                Part *displayPart(theSession->Parts()->Display());
$ K& D' P7 h5 P& k# s2 `/ Y4 t  A: m& |7 s
2 F* v8 R0 A7 b; k/ `6 \; s

. U% a7 R/ a5 ~3 A" H                Features::Feature *nullFeatures_Feature(NULL);
0 L) A5 ~% T* p% D                Features::EdgeBlendBuilder *edgeBlendBuilder1;2 u! Q/ x; y4 I% |1 M- A6 i+ R8 q* L  m
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
9 `. X" C' c) S9 T$ b1 T) w" A
) Y) o: L% H: c+ g

& ~5 z4 i' R4 N: p8 u# j                ScCollector *scCollector1;
( D- N! R, [0 N; m5 L+ n                scCollector1 = workPart->ScCollectors()->CreateCollector();4 s0 e+ w8 ]) R( @/ Z7 L& T
/ H% B. L3 ?5 n/ P  N- K
" }6 q' C1 E$ ~2 v
                std::vector<Edge *> seedEdges;
) B7 c- z# C) ?6 \6 ?                / ^4 K2 ^: F- j* v
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象( n3 P9 B2 F/ [/ O* g/ P
                for (int i=0;i<selectob.size();i++)
* q2 h* X) {- X  c7 e3 i, i8 Q                {4 j5 k3 U- }% y; G+ x! l
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
/ w- N  Z% U. g* ~0 Q0 {) n5 }  }
1 M1 R3 u# ~" T: _( V" U0 u' I9 h2 @$ N9 L
  double dia = expression0->Value();            //获取表达式的值9 P& B6 r: d/ b8 A
                stringstream DIA;5 \9 x% r/ d1 c- J0 C) h& T& Q; r
                DIA << dia;
9 R2 D- Z! M/ f: ~* h+ w8 r3 W$ p+ l2 j5 w
5 N# P( A  q* L! ?% a
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
, J" D$ S( f2 k. r( B                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
4 }  b2 M" o+ _: t% r2 T/ R6 \3 X- {  G3 {7 W

- ]% W  `! C( |                std::vector<SelectionIntentRule *> rules1(1);. P7 Q- \1 \1 p
                rules1[0] = edgeMultipleSeedTangentRule1;
/ j: p3 n; ^2 t                scCollector1->ReplaceRules(rules1, false);- `/ Q. p* a( Q0 X0 }7 h" x; v

0 s+ Q" ~, e* L. K/ W& C# C6 O

, Z, D( r) B$ ]# g5 ^) u6 M                edgeBlendBuilder1->SetTolerance(0.001);- z/ }: i% _/ X9 T/ D' g

. o0 t* M* s3 _6 F( B) b

* V% _5 t) ^: V6 M                edgeBlendBuilder1->SetAllInstancesOption(false);
4 q' o6 Y% j9 w5 p; G
! L$ z3 E) T8 l7 h0 i, I2 T

3 O& C- W* s2 u( ~" @% W8 P! Z+ a; e                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
0 ]7 l* ?. W8 J7 D& y. z7 X; {& r1 L. Y0 N

# i* w8 {6 N( \1 o4 ]/ \                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
, ?) ^3 ?3 z5 ?" @2 K* o3 e$ z& m  V7 N- g# i4 Q
8 ~/ V/ L# f4 e7 G0 I
                edgeBlendBuilder1->SetLimitFailingAreas(true);; N2 A! b" `$ A6 @
; E4 t; h3 T% Q% y2 {
. [! \2 q7 o* e$ W7 w0 H' Y: @
                edgeBlendBuilder1->SetConvexConcaveY(false);
0 H7 }- e" n7 w3 G& ?  N! R2 m' f5 r" M( T* g' l
3 z7 ?! M' S# d- l
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);1 n8 m$ F" J% F9 m# u# m
; m3 j2 L: _( q: B
* V" y. Q  _- G- O5 u9 t- d! x/ x- g" B
                edgeBlendBuilder1->SetRollOntoEdge(true);
* {" B" K) ?. H3 h7 [0 i9 Z4 l
5 p. `+ P# v1 z& S2 a

% k3 w9 m& g2 ~  U2 E1 w                edgeBlendBuilder1->SetMoveSharpEdge(true);. z  @% r( y6 f4 B+ O8 K) }
/ g) [% T! d  |

5 \; b' q7 M. U8 T  {: m6 }1 e5 z                edgeBlendBuilder1->SetTrimmingOption(false);3 g+ q* Q9 t3 X7 J3 h4 W6 M

: W8 K9 A  H/ X2 f2 O3 Y0 ]
# `! }& w# C* t% A
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
6 L/ D+ i( X& Y# f. o: S1 J, }( Z, S) y1 C! Q: @
7 h2 x2 O4 x$ W) Y: P
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
, z. h) e. a* I$ b. b" p; D( O5 b: Q+ {

' o  z6 p7 D  {1 l. \4 _. X                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
0 O% Y. M- h: n) D. [9 Z
' U9 `5 F5 u0 ^

) F! p; L6 j7 M. Q7 \                int csIndex1;; `  w- ]# k+ x
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());: C. u- J# M/ z& i$ n* w  L

' q3 u$ G) ]' A  [
# @6 a: W" w* p/ r5 B7 }  b
                Features::Feature *feature1;. R) P; t9 p, D2 a- I- ^
                feature1 = edgeBlendBuilder1->CommitFeature();
+ S2 [$ A* H; _- a: h9 O! p: r- _( H4 D) W0 T+ ?! c* e
$ Z% \* e/ r6 f% q, a
                edgeBlendBuilder1->Destroy();5 y; I4 ^: ?& k7 c
- q7 c8 p# B" }8 ^
    }8 u* T/ P$ G* D( Z1 c, A0 o/ _
    catch(exception& ex)9 H4 V! \8 G% f
    {
5 v" j8 B- q0 F3 F6 i        //---- Enter your exception handling code here -----% }1 h: p' N, X! W  L$ Y2 K9 q
        errorCode = 1;# Y) A% T. h" w/ a, ]% n% W
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
) _4 y' b$ g$ Y9 a- c* D# p* R    }
6 V/ @0 F5 u/ O4 H+ r' H5 S    return errorCode;0 m" r! y- y) |/ [0 R! o4 D
}

- H7 T7 F. s/ N$ ]6 E6 C% d2 j

+ M; Z- y! _, o说明:因为字数有限制,这里只贴出关键代码。
2 o/ \5 G4 I" x7 O& K7 d5 }& ?/ G3 }" b" _- A% _5 S
7 X2 b5 y) T- f6 j" O9 [5 n# b/ j

; }" i/ z. H, C, p; w; U
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二次开发专题模块培训报名开始啦

    我知道了