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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
0 c8 X  Z1 W7 e  y3 [
void selectedge::initialize_cb()# R' s3 ]  h; u4 S) Q! b
{  g1 J0 ^& `4 _7 E
    try
% g3 U- _, u4 q8 P# R    {

, @$ G& P7 I  p2 k5 n        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));7 D& }! T4 g1 I% k- U/ H9 C
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));% y8 _0 R4 W) }$ w# Q8 [9 l
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
" K/ b5 u- m( p' @9 e    caTCh(exception& ex)
, D9 Z+ z3 H. l    {
  w6 v5 V1 @! O% M/ |7 e        //---- Enter your exception handling code here -----, h9 K) k8 G$ E
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());* t8 k9 p* I2 @1 p& E5 u. b6 T
    }
5 |# z! D" V( p& A# E- l1 f) H. z" R3 _}, |. n& I0 q6 N' ~

- `7 ~* G0 E8 nint selectedge::apply_cb()
0 s0 h" @6 l) e  P{, \% l8 ~6 b8 H4 M/ E* E% G$ U/ v9 i3 r
    int errorCode = 0;
3 E7 a* J3 T) R" H5 T: J9 S& e4 a    try
* k3 S0 l5 x) P5 W1 M    {# b* W4 J1 ^7 y: F: l: s! I& B
        //---- Enter your callback code here -----
3 j8 c9 _: x$ D: \8 d9 v* ~
6 i  h/ X/ t2 i9 c8 m; v$ l! ^2 Q1 X& Y

' _$ m: W" D6 j- q                Session *theSession = Session::GetSession();$ N' [/ d- O/ |2 @1 n9 g! h. w2 U
                Part *workPart(theSession->Parts()->Work());
, n2 C. H8 |/ [                Part *displayPart(theSession->Parts()->Display());/ p/ `8 g* p+ D3 X+ w; S# {* X& ^

9 v- {/ T3 q- a7 i5 E

6 E* H' Q5 M2 W; l+ t4 g                Features::Feature *nullFeatures_Feature(NULL);% |* P% o) ]8 D; ]$ m, V8 }
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
% l9 j, k5 P4 k, }: B                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);% X1 C; c9 y- s6 Z  y; @

$ |3 `5 W: L/ m4 F+ [2 q

/ n" R  m7 y/ |) ?! _+ h" P                ScCollector *scCollector1;' j! S0 x9 ~) z3 l
                scCollector1 = workPart->ScCollectors()->CreateCollector();$ J+ O% {2 o+ o5 I! |' |  r
. t9 m6 _- u+ q; ~8 L1 W0 d) M
2 C5 B' v4 f1 x& n7 |% }1 \7 s9 C/ i
                std::vector<Edge *> seedEdges;
/ Z  N5 u3 B. k7 o' @0 N. Z                $ q1 B( W; @; `/ z5 D) P" M
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象" u9 O) p% @; |4 a0 H
                for (int i=0;i<selectob.size();i++)
% T* l. y; K5 E$ E' N: j. @/ C                {
/ e& y( B) Y% S: g                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
2 y0 O" N6 y' @, L7 p  }
. w' V" z$ x$ H# Y/ e, r/ u1 P) o5 }% v3 P# x5 D) l
  double dia = expression0->Value();            //获取表达式的值
# M$ h9 d5 E4 v% {* X8 s                stringstream DIA;
+ X2 X* E6 `( g; c* h9 d3 c$ a( v3 P                DIA << dia;7 m2 E5 j4 I8 d* V$ l

% M, J; F: M; b: D7 [/ w7 _$ F
$ D" @; S5 r0 A! }$ C7 X9 P
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;2 s1 J* G6 R& x: S- }
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);% P  o; }2 P7 Q! G% P. D; D; @

# N* o' u5 N* H9 j- a
- c3 l$ \$ f6 S9 i( ~& B
                std::vector<SelectionIntentRule *> rules1(1);. `" ?, d. O7 ^$ r% R
                rules1[0] = edgeMultipleSeedTangentRule1;
2 T3 [& |: o- q5 w- P! y8 e                scCollector1->ReplaceRules(rules1, false);
9 B( u8 f7 V7 M2 M; ?3 T
9 Z" W& @8 w. `* b; h& H) o. o

' f# k- N; X; @                edgeBlendBuilder1->SetTolerance(0.001);8 a7 C0 ]1 {6 d+ O( L) `6 i* u

5 |: x1 l" j: r5 Z' F
7 z; s; j7 d. n+ z  Q0 k1 \; S
                edgeBlendBuilder1->SetAllInstancesOption(false);' @$ J( a; g  g; |/ e
7 H8 L! x7 w" X- E' Y' z, F

3 m4 ?- Q$ F0 ~9 ~1 P                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
0 N2 D# K" F! p$ B) @0 ?
! l6 E5 M1 y+ \5 G( x

5 ~, z& l. `% l3 j                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);8 x4 D! O' h4 ?

( U5 n% f$ T7 ~4 L
9 l/ @! W8 O6 Q" t  ]  C" G
                edgeBlendBuilder1->SetLimitFailingAreas(true);
$ e4 ~1 y; ^6 o2 Z1 P3 ~% _* m; q1 w! }; _  f# W
5 R% t" I9 f( k4 q( y
                edgeBlendBuilder1->SetConvexConcaveY(false);
1 {5 R, l, C3 z
. |/ r) ^# F! S3 F/ W
. N- A8 G5 r5 ?9 A7 i8 f$ ?
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
' L7 e9 y6 s/ R! P4 Q9 ^2 s9 N# U2 D" X+ g' w
/ p+ p- X1 d! H9 G
                edgeBlendBuilder1->SetRollOntoEdge(true);
/ O) x2 r; p$ X9 l$ ]6 @2 q5 k0 K$ D8 e1 S
1 }+ [3 K2 U* O9 r! M  r. g
                edgeBlendBuilder1->SetMoveSharpEdge(true);$ J) T, O1 l6 a

& N  F/ p3 {, D/ p% U

% |* W- W, m; j. m                edgeBlendBuilder1->SetTrimmingOption(false);4 ?# o) ]; I: b+ g/ `9 P

0 o/ Q6 o# O4 H+ r' @  J7 l

' _7 W; ]: S1 i9 ]                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
/ c1 J6 E( }/ M5 _. n
5 ^& F8 G' X4 m4 t# R  c
# i6 n0 b& T1 H' E
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);. f5 I* |( e# ]

5 }0 G4 X( N" Y; ]

. L5 J8 }0 D) X                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
+ F: _- n( T6 d$ U: O9 `8 {
4 g% d4 C) K$ n8 j/ H
8 A" g5 n5 x/ `; r# k$ o- G* I
                int csIndex1;5 Y3 r' g/ K2 }9 o; `3 j% N
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
. r/ P5 K5 e& U, x% m" o4 C1 P
5 O2 o) O& Y' {' @/ p% D
6 F& t* w4 S. n/ L# }
                Features::Feature *feature1;
2 C* L5 E" i, f; d' w; E                feature1 = edgeBlendBuilder1->CommitFeature();
( {' `2 X4 Y- M! z& u& M
& p6 W) a. s, X) b

( S! b3 V( Z0 c. {4 U                edgeBlendBuilder1->Destroy();
) x4 i: N! C- k! _& ~8 s- K9 h
1 H( f0 M0 N6 P- }$ v    }( k: p* y" n0 \( R3 L7 Q4 \
    catch(exception& ex)
" e7 G6 \# A4 [: G" g3 \6 h& z$ Y    {, e/ k* @7 g3 n! S) D( y
        //---- Enter your exception handling code here -----
+ m0 H# ~# l2 c' a5 k        errorCode = 1;
1 t- i- y* Y& R        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());4 X9 U: D) y& z& f+ g9 R1 e
    }
3 X6 o# `( ^) C; i. y$ q    return errorCode;) f2 q. u: H4 C5 o
}

7 B$ g8 Q) L4 d' ?8 s7 h4 h

! l8 C* t. ]' Q7 z( W* h0 Y说明:因为字数有限制,这里只贴出关键代码。- j& E8 w8 m) J$ m
1 F/ n; J% F" w: O: F/ f1 H# ^% ~

. P6 B8 I) Z9 P/ s

4 I% T7 b1 C& w) I3 @! ^
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二次开发专题模块培训报名开始啦

    我知道了