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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
1 U$ h. G& I0 X7 l5 ?
void selectedge::initialize_cb()9 T) l# U& ^" Y9 \7 c* F, Z; _3 I$ b
{
( |2 O0 f4 `( C    try
1 N. ^, i  S  q, m# M% `0 Y) h2 J    {
" r9 m7 }; @% Q' M; P* q# x9 p) \
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));+ X3 w! p8 D. R, `% d8 t* p
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));! L7 M( a5 S- T. [
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
+ h# ]$ l7 _& z& o3 [- J' m    caTCh(exception& ex)) y; p7 o% y  ?6 A2 j+ Y6 \- [3 _
    {
! ]! H' M# M* S, I1 p! I9 P# Y        //---- Enter your exception handling code here -----) ~+ z& O+ ~6 K+ l/ Q. W3 e8 u
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());: ~9 I6 |5 ], w& @
    }
' a/ s7 t" V/ E" z/ J% `$ o}9 n& D9 \( B1 H- l3 a, T3 K

  Z- A. c6 f; c! |) Aint selectedge::apply_cb()
% D4 G% _: Q- E; u{
5 L' z! I0 X" W  I; Q! ?" T    int errorCode = 0;
. s7 v% ]8 \9 }+ A4 v* n    try
" T- E* U$ ^0 p9 @+ t$ G    {( ]( V+ U0 y. g+ ^$ R# R
        //---- Enter your callback code here -----
+ ?. K* P6 w! j6 t( f/ V$ A- U- F* X# B. t7 U5 t9 s2 [  [
0 Y! W. G8 ]6 U6 n6 [  g3 n# E

/ n. p5 ^; ]8 m                Session *theSession = Session::GetSession();
, c0 O# ^' h+ O                Part *workPart(theSession->Parts()->Work());( e; ?/ l4 B* D( \6 U; W3 s
                Part *displayPart(theSession->Parts()->Display());0 U* a8 b% C2 ], p

5 D, y/ d# q/ B, U5 Y

9 X5 {8 e7 P6 @; S) k1 `6 a                Features::Feature *nullFeatures_Feature(NULL);5 l0 ~' G6 X. ?7 u; j& }% c; R2 A
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
' U6 [# u  E, D3 t' \. j                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);7 n  D1 E) `& r$ ^
5 C1 Z( q8 C; {% a1 H2 a- t# ^2 U
6 U5 Z) J: C1 a) o! L- q
                ScCollector *scCollector1;& n! q! ^# ~0 y' t0 N' g& g
                scCollector1 = workPart->ScCollectors()->CreateCollector();
6 C& H" m) c7 b& K# y$ M
% I) u% _, F5 k7 x0 U" B

2 J3 r1 v/ n7 Y$ F9 \$ H  l8 `                std::vector<Edge *> seedEdges;
0 Z! ~) A; F5 P% T1 S( V  J* Q                6 j  i" g( u9 R- E  o& u
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象2 x& W, z4 s4 P
                for (int i=0;i<selectob.size();i++)
# G) O/ @7 x0 x  n4 x                {6 u1 S' }) Y1 X9 g" W( e
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
6 P; p- I$ F; k6 P- M, j1 A  }7 z6 X. r9 k: |. E1 b

* L; ?+ Q' P# r  double dia = expression0->Value();            //获取表达式的值4 [  n& J: v% ~" @. g" J
                stringstream DIA;
5 b) I4 P. C9 m  V1 g                DIA << dia;$ V4 p( Z  M  C3 v0 g! v/ Q
) Q2 n1 [" {1 C) I0 t% t
1 _! x0 @& l: \, ]
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
" l& G9 b, Q  h$ V( y$ }, H4 [                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);2 H: N+ m$ ~& D
6 {) u9 z: ]0 J( X' f

8 G* r& h; b* [; N, b$ {                std::vector<SelectionIntentRule *> rules1(1);5 v( R1 h* l0 N0 p* u
                rules1[0] = edgeMultipleSeedTangentRule1;
) z4 O+ f+ J% d! l8 H$ u) Y                scCollector1->ReplaceRules(rules1, false);% B# p6 n" z4 z) \2 V9 `2 \
+ L& o9 v0 h! @4 ?3 `5 @

- C+ P+ a2 R% D  O) ?                edgeBlendBuilder1->SetTolerance(0.001);# W; F! B* x0 f- Z' A' |( o
) `1 {( p2 L& r; E# t2 ^6 S
- g4 m* \. Z6 \( H/ j1 E3 n
                edgeBlendBuilder1->SetAllInstancesOption(false);
2 W" p6 K: b& h7 a/ L/ N' v/ S* [! ^2 g
5 x# y$ c6 ], W$ m  E
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);: R& G7 I5 I, Y' {1 `( F( z; N
* z5 |( H1 \: M
6 e9 ^7 d' w% ^& P' g
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
3 L$ A, i0 g. ^' \6 M  O2 R' C) d4 q
6 }+ j& d: d1 [9 u( f  H$ U
                edgeBlendBuilder1->SetLimitFailingAreas(true);
) ]9 P7 P3 C, o- i6 H; C
$ Y+ n  k: l  ^

# T8 F' G; b' Z9 Z% r5 L                edgeBlendBuilder1->SetConvexConcaveY(false);) E* ~, C, z% a+ `6 \9 U5 y

* n1 B2 O! K1 \* y

, M; s$ s1 p  s# u) F. Y  b0 d0 b                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
& }2 u- i3 l+ f7 u+ z+ t4 }
% \$ [6 A8 m( h  _' T& x
, E! l* _! |3 ^' h* Q5 R
                edgeBlendBuilder1->SetRollOntoEdge(true);  {9 _2 q- y- y% N/ G. U& p: B

- o0 O7 S- z( T

: N# a4 i, Y; d/ n& O                edgeBlendBuilder1->SetMoveSharpEdge(true);3 R  ?* o5 I. O, k, N* [
+ L% a2 ~4 ^( ~! |" s9 u2 p

8 t/ ~3 s' T4 B( `- `6 |                edgeBlendBuilder1->SetTrimmingOption(false);
0 n6 U& V. Y. f$ C, }1 \
% N& A8 {$ c! Z' c- N
1 g3 q8 s7 h. d
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
, [5 `1 ?4 x) o3 I7 Y  H
  O" s* |& s! [2 z
3 v0 q. q1 F6 |  Z& z+ Q& s* R& [) y
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);7 [/ E" n, H7 f' C& N, w/ @4 V7 j. Q4 k) T
( \( b) C- f, o) @6 v. a/ i1 f
1 C6 l) G/ E9 B1 r3 F8 l# ~) k! D) ?4 [
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);( \1 U$ \' e  x$ L) u+ G
4 p4 S( h: \6 D& J) }

) L9 Y! r& r4 ^: V3 c! u                int csIndex1;7 Y* }! @  Z1 P0 t% i" V% H
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());( ^; l3 i5 z* Y* _0 D7 C6 }! Z

: _4 m7 U: L% p( d+ t% m
6 @1 H0 M- _8 a( F! R
                Features::Feature *feature1;
( _5 u% n' a1 d" w7 N* }+ h                feature1 = edgeBlendBuilder1->CommitFeature();
- d2 P$ E, z9 f# h+ g( O% T  I! r2 |; v1 z- S$ @0 z

4 o3 M  i. p- Y: L( e                edgeBlendBuilder1->Destroy();
& Z* R1 W8 ]1 m8 f/ b' e/ m
" `5 M- A. l2 a6 [1 Z) f    }
  |* t: `7 F7 V- K* d8 j: ?    catch(exception& ex)9 l" x4 z3 u) {* a  L; _% U, [
    {- U! w# Y( U: l' Y. E" N
        //---- Enter your exception handling code here -----! m: u/ p, s) y  B* x
        errorCode = 1;8 C1 C6 h' ?, r1 F9 c: [. O3 n
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
3 A( B( O1 C0 }# U) Q6 P    }1 J1 E4 T/ z) t7 w
    return errorCode;# L# l3 v  ?# Z
}

* n- Z" B' _5 C3 ]
. Z3 ^/ E% T6 u2 D9 ^% p
说明:因为字数有限制,这里只贴出关键代码。
5 M! ]0 [, D- ~* Q$ h) F& J8 c. R0 d1 A; V

0 Q1 r6 t; F5 W! X0 h
& t/ |& I# z8 b
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二次开发专题模块培训报名开始啦

    我知道了