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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

: B* }# m- P$ C! Ovoid selectedge::initialize_cb()! G% C2 Y( w7 V/ j. J% P# T
{
- b1 l& ]& t8 `3 O    try
2 M- p$ y; M& b! V* z; n; }    {

* i6 d" J) a( s        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));  j' _% `* ~& E5 Z4 [/ R: }
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));# I* {( Y7 ~! m# S
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}8 J4 z% y. [- n5 N( d  F5 O
    caTCh(exception& ex)! C* E7 ^' X! A- [& x: o7 d
    {
7 e: U, Y- q9 b; ~8 }, W$ I        //---- Enter your exception handling code here -----& C9 r9 W5 Z$ P- `4 n9 F* Q
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());% E$ l, D# O% l& |! H" r, R
    }( ]. T" D4 ]+ k$ \* I
}
5 {0 |) F; U- f4 h/ j' \! J9 t) g  [% o+ O
int selectedge::apply_cb()
, k, A1 R1 d* x, U& @, s' c{# K5 z. W4 z$ s2 Y" \$ ]1 H
    int errorCode = 0;
& a6 |: ?" b$ A% M9 ?    try
+ x# C4 B3 S! ?6 K% n3 r2 [9 [    {2 B1 I7 A- d; W0 |. i7 w1 R
        //---- Enter your callback code here -----+ k( Q# ~( F3 W8 B& j- h
+ A& G2 ~7 _4 J( \

* @) W0 i5 q2 C" E
- F- l- {: B2 E8 H6 e. K$ T4 u; m
                Session *theSession = Session::GetSession();, r) F3 |  r+ L$ W
                Part *workPart(theSession->Parts()->Work());+ Z# B# p: T$ m7 v
                Part *displayPart(theSession->Parts()->Display());6 C9 `+ V0 R+ S* E) o& F

9 o3 t# x+ R: `# C) T
, O7 f$ S; e  ~8 C9 z' `
                Features::Feature *nullFeatures_Feature(NULL);
0 F: e1 ]* U  A5 o2 _5 J                Features::EdgeBlendBuilder *edgeBlendBuilder1;* o0 D8 b! `3 ]  X
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
2 I# N1 ]0 f) e# N. _0 ^; p
' Y8 ?$ |/ O: G! {
( u7 q" U& a) U2 O  D
                ScCollector *scCollector1;
/ [& p, y- {6 g  b                scCollector1 = workPart->ScCollectors()->CreateCollector();1 }# l. P8 q2 {, C/ F

6 l8 R% X4 A" d: z. J
8 r/ V! A1 g" ?8 S& K: m
                std::vector<Edge *> seedEdges;
9 x5 B% y( O& W# G- U% t4 T6 d               
3 w0 F! t3 e3 n  ?& B' x                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
, L5 N2 O5 v: E" ]/ \8 l                for (int i=0;i<selectob.size();i++)5 F8 ?' B- h+ ^& X, j
                {1 k1 ~2 Z2 W. `1 {8 @; b
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
' J% O6 N# {; x5 d( ^& t1 ?3 y  }
* f+ P$ I; [8 @0 c5 U# M4 ^- \
- G$ F5 l! h2 V- K  O  double dia = expression0->Value();            //获取表达式的值
9 J% \, N8 Z, r6 j4 O                stringstream DIA;
, z4 O6 G- Q( v2 Y! j                DIA << dia;# K: R, t3 T5 d/ V

$ E; r1 a" d8 f# w. p1 a( `

$ p% F; X4 ~+ T5 r2 ~! y- Q                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
2 Z: _9 L/ H/ r/ B3 a2 x                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
1 l* Q6 d9 o4 L" G2 f
9 ~5 v1 G# c$ Y0 \; v3 H/ T5 w( F

& X! `, @; k3 K# q                std::vector<SelectionIntentRule *> rules1(1);
; |/ [+ y3 ~% u                rules1[0] = edgeMultipleSeedTangentRule1;. R1 L' Q: ~2 \' l+ T5 \' c$ x/ F! r  S
                scCollector1->ReplaceRules(rules1, false);$ ^) s" R$ \8 J; F9 |% @3 D

- J3 V. \( M; c$ S: \: C
" s- q5 o$ x, G4 T+ h
                edgeBlendBuilder1->SetTolerance(0.001);- [4 B* _, ^, |1 E' V
3 {! U# b; M3 C) b7 B( M' L9 a

3 L1 C3 O1 ?" S: U& _                edgeBlendBuilder1->SetAllInstancesOption(false);8 |, M* M+ N4 p) {- e; ~

! j  X9 q3 R9 L( \1 e/ `- f

$ [# _+ ~; g1 R' Z& `5 I                edgeBlendBuilder1->SetRemoveSelfIntersection(true);5 B: D- }! Z3 A& H( v8 z0 |# e
, O6 l8 N( F7 E4 o# V
: `* d+ w3 J, }& m+ C9 Q
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);6 ~7 \: ?3 X, F$ @
2 c* i* a# P1 k& o8 Q0 D! J
/ w% x1 u: Q$ b9 m! U
                edgeBlendBuilder1->SetLimitFailingAreas(true);
7 o) ]5 J* t$ H( A. {  G: E2 F; A- F' D8 o! u" c

/ U& p7 p, U7 i* _# P                edgeBlendBuilder1->SetConvexConcaveY(false);
. M( r; u# S. q* R4 t
" P! K4 ~$ [& W  Y8 D8 @! G

! C* @' i+ o+ C0 _" }/ y                edgeBlendBuilder1->SetRollOverSmoothEdge(true);, p: \( U( W$ b# ~

" k' h3 T4 d4 {( ]- q

1 `# }2 a) g: g; C# R( p* f$ O: {                edgeBlendBuilder1->SetRollOntoEdge(true);
7 }  U( I- f7 r9 Z2 J, F$ u4 r0 {; M9 n
' k2 c7 }7 d3 O/ K' P: i$ ^% O/ O. C
                edgeBlendBuilder1->SetMoveSharpEdge(true);6 }0 b& _1 p1 t- U) x6 F4 ?! r8 d

- R7 o( \5 y1 g$ P% x2 U. T
: \) t2 q! b  b6 \6 j0 i8 @
                edgeBlendBuilder1->SetTrimmingOption(false);2 S( Y- C% ^0 W! G# g* F" z  h

. ^. n  t( K5 L- E* |; D
& D, o* u" M0 g9 w9 V4 z
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);0 Q) X( |. n! \* P( V
# B( |0 h& F. d: \: ]. x2 ~

- h- E% X$ \* K4 e1 d% L& R, o6 p                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);& t; X- V& V+ z, [& X" w, }1 `: x
' k- r# L) O# E9 B# X" X$ W

5 _+ d+ P1 ?0 K- X& \                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);( ?2 S, \$ R! O2 O" d2 V
9 Q; J+ F8 N3 n1 j8 M- a

6 }2 a: u8 F% a8 ^# f" ~9 [                int csIndex1;" V% N3 W: }8 R7 e4 @8 \8 u4 [( {
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
% F1 ?' C7 y6 y
1 ~7 ~1 l4 E8 ^, J

! {& T$ K# d# o5 @                Features::Feature *feature1;! O: m4 \' |+ b7 @, n& S2 c
                feature1 = edgeBlendBuilder1->CommitFeature();
+ F1 f/ \3 `( ~8 a% @7 w8 D0 T# k: r
$ h% E- W. c& Z) r" p

) Y6 L3 R& v2 P1 J+ J$ F' x                edgeBlendBuilder1->Destroy();- F: E  r9 t& Y6 D; A/ Y, m) n

' n) s% ~; B, M3 g& X3 g    }
3 L' H4 I- u+ K3 e# A1 A+ x/ X0 d    catch(exception& ex)
  o, J; V( b5 c! K    {$ w0 o  n% H- R0 N% E
        //---- Enter your exception handling code here -----4 T2 n/ J) D& G4 M% |
        errorCode = 1;
% U! o5 U, c  l        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
& s0 g' B$ ~" C9 w9 c    }
  T; ^8 f, g& X4 h& [    return errorCode;+ M9 {" @1 n$ p' @$ Q8 E+ O' w
}
2 {2 X9 E% q9 `: [

- P3 U' l5 a- O3 s' b说明:因为字数有限制,这里只贴出关键代码。
: U: A7 _4 L: V4 R8 F% B! P( V+ r- q, Y5 j: W- S9 E* u

6 |7 t% W; U0 G! Q- \

/ S+ I2 o' s3 N6 i2 J9 J
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二次开发专题模块培训报名开始啦

    我知道了