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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

9 D+ x6 g) E- I2 ~void selectedge::initialize_cb()5 F* m+ p. K* \9 H4 L
{; L# ?" X8 O$ E/ N: w9 S6 w. ~
    try
: g1 K  y' u  k- d+ a. k    {

/ [! p) T" K* \* _% p9 I$ l# Z        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));% q' S1 f8 _' v0 @
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
* q1 h4 e$ s# t  m        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}: b, E: u! v' X# X: o5 I% e
    caTCh(exception& ex)8 ^7 i4 `% Z5 A& e+ m  i; H9 S) @* E
    {# g. U# }' S7 s/ i) Y% P6 i) ]
        //---- Enter your exception handling code here -----
& X) ~, X% ]3 k3 [3 i, U$ \( M        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
. l+ Y: p4 K* Q0 e    }
; F0 }  V0 ]4 \$ d}
0 h  T! m) a8 U) f9 Z$ L0 w1 Z- z- B6 D* D( I0 C# P0 X
int selectedge::apply_cb()
3 K( Y( _3 W& X- T! z$ j; H{8 R4 }2 b! F1 }7 {- b% x9 V4 e# u
    int errorCode = 0;& [) e% e6 Z' W. }! B" j
    try* v5 H  i# y* [, l1 r: O$ C
    {
5 [& |* I# i/ z        //---- Enter your callback code here -----/ @  n9 k. s# c0 K7 K
! ^8 Q! F3 P6 Y

" P3 \5 l" `$ X/ q6 D" L" A
' x9 ^6 Z2 h  J# [) m
                Session *theSession = Session::GetSession();* h! f* q/ c' s; F
                Part *workPart(theSession->Parts()->Work());
+ x/ z' W; _; f3 e$ @: t. C                Part *displayPart(theSession->Parts()->Display());2 v+ \! E7 A& T7 e. i
0 T* a5 A; V2 K; W9 H$ j+ P. G
* D  ]  n# i! v/ V/ M& Z% W/ q
                Features::Feature *nullFeatures_Feature(NULL);7 i* e5 s1 y! y2 p) w( C
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
" |, W& X) [( Z                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
) ~) A/ b* u. z) j1 y! r& G8 \- e6 b1 ~* Z0 _
- o/ _8 ~7 D2 h6 e1 {$ m/ n3 w
                ScCollector *scCollector1;" U# \) d5 p$ M7 P2 B' A$ T
                scCollector1 = workPart->ScCollectors()->CreateCollector();. V2 Y' k5 j& N/ i; I, Y
7 N3 D: J5 g5 o# @8 C0 z
0 _$ `! c# b  j8 ], q3 u2 V
                std::vector<Edge *> seedEdges;+ }! b" ~) x& Y3 H
                , ^) T0 _3 H! m) h, D2 t: X  J
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象5 K" Q, g* s) r$ P1 v( U5 p
                for (int i=0;i<selectob.size();i++)) U3 h7 e/ R4 D4 O5 [% h
                {% R$ u! X9 f- `' j) I
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
7 A" l0 r: |+ a/ v  }
/ L) `% r3 a- s! l# v3 D" o- A- t; i& G: B; ?- `
  double dia = expression0->Value();            //获取表达式的值0 _4 _% ?, |; a/ P
                stringstream DIA;
8 Q6 M7 y: I# p$ j                DIA << dia;0 B! o/ J8 R1 _, D  x2 \! I! _/ ?

/ W0 z6 q( y; @

  C9 _7 z+ A- G* ~" `1 M" Z; F                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
% Q% n2 ]' F' v$ t% \  ^- ?                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);3 B$ o- F: [9 N6 K

: b- Z: }) Q" }/ K

7 w9 Y" J& x8 L5 U# |* V: H; l                std::vector<SelectionIntentRule *> rules1(1);
1 e' ^* ^2 ?) s, o3 ]                rules1[0] = edgeMultipleSeedTangentRule1;/ t  z! S  \$ x
                scCollector1->ReplaceRules(rules1, false);
) @& V8 K8 Q7 F. P2 W0 j/ S" y
  s! i3 G2 o3 L9 G: c5 b: d

$ D, H: Z4 f/ x                edgeBlendBuilder1->SetTolerance(0.001);
4 e7 q' ^+ f# \& v& }, [" P! I' z0 B& G7 @( R6 l1 _, Y( j; W
0 L0 ^% ?% G( u( I2 @, q! L$ a9 q
                edgeBlendBuilder1->SetAllInstancesOption(false);1 v- M% U) t& v' E2 j: U
& t6 B$ C% A$ A: Z

+ b. P' L& J+ b3 Q) h, ]                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
- {5 O$ h* g  A; _' K9 ]
! D/ F; Q( G/ s4 r# w
: H, v* w- X( d) H& t
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);$ g7 i' e3 Q9 o" x
8 J- [3 |/ f8 V9 _' Y9 \
& n& Z) @% I* H+ k; Q, }. o( `
                edgeBlendBuilder1->SetLimitFailingAreas(true);
: [$ [: p% q) N/ Z
" z2 k$ Z4 S$ c5 p9 {: n) U
7 l* j' a+ s" b- K' W
                edgeBlendBuilder1->SetConvexConcaveY(false);/ _6 z: p* S% L5 M, l
: j7 Y) b( C3 ]1 I9 ]/ j" C

: F6 Q( \6 Z: n0 K% ?/ ^                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
( n! b: E& F/ {  Z* t6 I% ]7 Z" C4 u; l8 o% _! j

% L" X% m2 \8 f& y, f                edgeBlendBuilder1->SetRollOntoEdge(true);. N+ O0 W; }' C4 q5 w0 u1 x7 `
; F  b0 M8 j8 \0 H' V0 T8 G# q
. t  R8 n2 Z' A0 J  O
                edgeBlendBuilder1->SetMoveSharpEdge(true);
1 t1 A& g4 p+ X- Y0 z0 @  A3 B& G/ L, y& ^
+ e% U# t4 T: M" Q; a
                edgeBlendBuilder1->SetTrimmingOption(false);; d7 {4 \5 |' Y* R! `2 r

" @3 F" s4 i/ b( T/ V
' r' [. Z" n4 j% m* a" ?
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
$ Y' q  H. L0 ^5 X* Q5 e3 X/ r
, K9 d" P& h6 g2 z% o; _' f0 L

  s  j" K& c  s& [                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
7 A2 p# f0 n& i, n+ Q! c' J4 E5 ?. m1 ?' F2 d# a! F/ }6 U* a; w5 m
0 b- ^# I5 e. O# M8 `: l" m
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);8 B# e& p8 k5 P/ h# [- |  c$ s

% D% Q6 [; E* U* |8 ~

3 K2 N- f3 W/ y" W5 s) ~$ D                int csIndex1;8 T/ ?5 b: z# V: B. m
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
2 T1 \$ K7 i; R4 @/ ^
9 N) m+ ^+ n, A* w2 u
. D) D6 a7 v: r
                Features::Feature *feature1;, g  }5 \3 W) K$ F7 o( {
                feature1 = edgeBlendBuilder1->CommitFeature();
. u1 n% U! h" q7 T2 M6 W
' m  U6 e$ H. O2 s( w. d! W# w

" D; E/ Z' G" H4 J$ J5 I( Z$ @                edgeBlendBuilder1->Destroy();  M. e0 ~7 Y2 x0 r
/ V0 w) j! k# N
    }
& b; Z* k3 ^8 T% v- B" {! y    catch(exception& ex)& x! D9 T1 _7 G8 I
    {
5 R% h: {4 f/ o7 ~9 E+ |/ ^4 r2 D        //---- Enter your exception handling code here -----  M1 _( R6 J. }
        errorCode = 1;( K# X% l9 k( X2 Q
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());( M, o$ K+ S: B
    }0 j6 L8 A4 k$ M2 y- P8 W2 f# E
    return errorCode;
) U8 f& l) |% v1 T2 \}
3 P' k) r) w* G) a
) {3 f/ ~! o2 P1 F( h  H
说明:因为字数有限制,这里只贴出关键代码。* B% B7 [9 m$ S$ m; ~
8 p: n& y2 j: N
2 `# x. _3 b& W

7 d* w+ q( f9 @' O8 e
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二次开发专题模块培训报名开始啦

    我知道了