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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

& I) Y! \4 ^; T$ X) U/ Qvoid selectedge::initialize_cb()
3 f/ n; G& M; E) o9 T7 Z{! p2 r$ L8 Y- }7 U/ v
    try; ^: T3 Q! s' u, F' @; H
    {

/ z% L. ?& _0 U/ X. c8 I        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
! h! U! l5 Q+ ]0 V0 ]; X1 m        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));$ @5 J# [( P" @& N# u
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}! _8 i( E* Z5 P  H
    caTCh(exception& ex)& Z5 g! F+ T9 _1 {8 U5 q2 w) c
    {
" y4 A- J$ v0 ^( V% X        //---- Enter your exception handling code here -----
- Q. N; L" k* R$ G  t0 Y        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());9 R  L' \2 \' a! l. c7 V
    }. ~: T4 g( V, Q# H5 y
}
0 @% ^4 w. p! F6 E6 E3 [6 L/ G7 T. S7 W
int selectedge::apply_cb()
5 U2 l5 O# F% v' n. z  w{
$ v/ k* h4 `+ P4 l8 E% o; x+ k    int errorCode = 0;0 L% [- c, u& i( o- k- C7 ~
    try
( [/ s# |* l2 e7 P6 w- S    {
9 h& E2 M  v$ k* \        //---- Enter your callback code here -----
# N0 e' J$ e& R! r2 W% o1 N" w; c$ i' h/ T' z3 k  q
* f: e4 o$ f1 e! o+ x) C
- E$ q' S! @4 C. _
                Session *theSession = Session::GetSession();
" V9 f( m) @" i' n5 V: }/ U4 u) b                Part *workPart(theSession->Parts()->Work());: ~  u8 V; H- k5 H$ ~
                Part *displayPart(theSession->Parts()->Display());+ G5 z7 l- B9 n5 q2 O& J
# a) n9 I1 E6 g) b" X& n8 b: ]" ~+ B! b

/ F1 D+ x8 {0 C9 _) B3 ?                Features::Feature *nullFeatures_Feature(NULL);
4 d8 C' W7 V$ b& Y5 `+ m                Features::EdgeBlendBuilder *edgeBlendBuilder1;
( l1 Q  J( i  G9 d0 D                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);: j6 F, @+ A7 T0 f% c% H
; I, \8 z4 C$ ^1 I! k6 s: l

$ m# J3 ~6 a- j) t, p                ScCollector *scCollector1;
' f$ v+ [! c8 z3 d                scCollector1 = workPart->ScCollectors()->CreateCollector();% N, l8 q. S! n: }8 i

/ Z  g$ T  t$ g, w  L
9 ~0 V( v# L/ u6 {
                std::vector<Edge *> seedEdges;
4 R: K* F6 q% {: M                8 b- W) R  ?, f) ?" h
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象# I% E( z% [1 O+ F* v' e
                for (int i=0;i<selectob.size();i++)* h7 c6 j% P' E6 }9 u
                {* E" s7 w0 H$ |# i+ F" D% |1 I
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
9 n: q% r1 @3 l0 h7 K) Q1 `  }
3 u0 ~5 {/ d) t5 A: u5 z' n) J8 N1 g/ R6 W3 `
  double dia = expression0->Value();            //获取表达式的值4 J9 f+ P2 o6 ?' w1 g
                stringstream DIA;
7 G7 P) g+ y% b! l, i                DIA << dia;% `# |' Z" s6 j% A3 O! P  p& N
$ H2 P4 i. P, y* h; ~8 s4 Z

2 @% G2 B7 ~6 y; i3 V: \" ~0 `$ @9 ~1 }                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
: d! _% d6 w+ q4 ?5 L4 @' [2 e4 L* U( \                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
5 ?0 t$ E6 i" }# W8 X. i; F
4 [2 x! X" U5 F& B
3 T# u) U/ h( y! h
                std::vector<SelectionIntentRule *> rules1(1);  Y* {/ U+ r9 X# Y1 k
                rules1[0] = edgeMultipleSeedTangentRule1;
1 N7 W0 B, z( l, [9 m5 E                scCollector1->ReplaceRules(rules1, false);% {2 g9 F( U8 Y9 P0 s
* W  d8 E# b- Z1 R9 O; C) w
- ~& T' t* k& u
                edgeBlendBuilder1->SetTolerance(0.001);
8 E7 X6 n% T7 a" I5 {( J8 ^, w( s! _8 V! F

( {! q0 Y/ @& A* S                edgeBlendBuilder1->SetAllInstancesOption(false);! G) N, L  u/ V# O& h# P. s6 u7 D- `
* i) r. e/ r  J

3 b8 Y& I% t$ R! m5 u/ C/ S- E0 h                edgeBlendBuilder1->SetRemoveSelfIntersection(true);4 c9 E; l+ K- [" ~# Y

8 r$ ?  u6 f: t. |# F

; Q: ~6 i9 _/ J0 U" w                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
4 A' _; U1 S: F- c8 y
$ k5 d7 V! G% P, k$ q. h7 b

% w4 O0 P5 O* \6 J5 S+ s4 ?- y                edgeBlendBuilder1->SetLimitFailingAreas(true);
( b$ A" e! n' b/ X7 `% ~
6 R  }" V6 Y) \5 Q8 y" ^5 x
: m' S' i& P3 G* ^  w! |. G
                edgeBlendBuilder1->SetConvexConcaveY(false);) {9 q/ R  ]+ Z( s$ v4 C; N7 N
4 Q/ V. s7 |% p) w! p

& O1 X0 Y2 |2 h6 x7 m                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
& J& s. M& c* }, ^5 w: ^( e' ~8 g5 O" c2 O$ u# p

8 X4 E1 {  m- _8 o6 U' b2 d                edgeBlendBuilder1->SetRollOntoEdge(true);2 k4 v- c6 x" H9 V( F' v2 K

# L4 n0 y; B: i/ w

8 `! N6 O+ w3 L' Z8 D) ^                edgeBlendBuilder1->SetMoveSharpEdge(true);
$ y$ Q1 B- L) o  p( [4 `8 U* J
6 C; N, o& o1 b6 \) t6 B$ V9 `

9 ~( }9 ^  b$ X1 }8 N                edgeBlendBuilder1->SetTrimmingOption(false);
. f% S3 O. `% p
+ Y' k4 g3 [4 n# A. v& D

1 Q( {! t& k( l3 z: h  B. d                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);; w# c; B: q0 w( _* i
/ a# z4 ~8 t- k# `/ {
& x5 b8 C. `; l# q* l% R( r( E
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
8 r6 s# u& H& `2 R0 P+ r4 b) q
: r! @. X: l) @6 S$ u) r/ N

. J+ e% P1 V. E" Q; u9 r7 F/ Q4 |$ Q                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);5 e$ P3 u& A( W% N6 o* y

# A/ t& \2 `2 ^3 ]

. J! q$ C6 h6 l3 }% _; W) {                int csIndex1;
6 F3 J# m2 B& m5 l5 h+ [                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
$ A* H3 k' f; D: t8 [
5 J8 e; [( A7 v/ p( A$ L9 A
, B- B: ~, y4 p* {3 Z
                Features::Feature *feature1;( W+ [2 ~7 s0 k3 ]
                feature1 = edgeBlendBuilder1->CommitFeature();
. T: Q$ p  g4 A
! R( E" O8 u8 `/ B1 C/ [
' c6 \  i, O/ Z5 s# N% |% d+ K8 a
                edgeBlendBuilder1->Destroy();
" Z; C% d" ^; H: ?* T8 {% C* L* k% g
    }  u( p9 Q* z' O6 N9 E+ c
    catch(exception& ex)
. m0 Y# @0 ~: k" V    {
" |/ R: z' e- L4 e, ~7 z) ]        //---- Enter your exception handling code here -----: C# I4 n' j0 B& V, i
        errorCode = 1;8 A2 ]) r& ?9 L; |2 a
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
% C  R0 e9 w& j  r- T/ c    }: [2 ?. b9 o' J7 ]9 G$ ^& [4 k
    return errorCode;) Y* L3 m" k. o
}

9 u% }& O8 X. _. f% z" M
3 H. ^- F1 s2 K" B1 E# A
说明:因为字数有限制,这里只贴出关键代码。" w5 r; ?5 J5 T. A2 d0 s
  \5 Z& h' u+ v
' M9 @6 V7 V7 U. a6 U
, D$ e( q/ ^- K8 e2 ^2 @
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二次开发专题模块培训报名开始啦

    我知道了