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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
% b* I/ J( E: b3 A) M7 G2 f! L
void selectedge::initialize_cb()/ s' }5 n4 V- {& Z$ g+ ?
{
" i! [' Z' ?9 h$ G. ^    try
& r$ |2 c( Q. |+ ]9 p; {! _  F% W    {

5 H, V- `2 m- k        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
3 x% ]/ Z8 b- P' ~& y3 G        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
3 C- F2 Z. n: T& ^. N5 L2 e) R$ [        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
- E! t6 N+ o5 \# v& a    caTCh(exception& ex)
: [; a, h' l3 s1 o7 E    {
7 B6 g7 N6 D5 I        //---- Enter your exception handling code here -----4 g$ b+ H+ ~- `! H9 t9 a! b
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
( Q. ~8 X8 X- K    }# s1 t+ [/ n6 `2 a" S" @( I+ E
}; ]1 U' J9 w% Q( {8 e7 D
; C9 F9 _6 {, k0 E! O1 [3 X- j/ d
int selectedge::apply_cb(); [8 v) c+ S7 Z$ T. A7 n% ^
{* F% r$ ]5 ?1 g
    int errorCode = 0;% C, h1 z" W/ s; e3 i$ T
    try
. n% `; i1 F) Z4 |  n  [    {( X- ~6 u1 t  R
        //---- Enter your callback code here -----
, a, V  Z4 o7 }2 E+ W$ t3 ~( [" B
; I2 q  N1 @6 F1 {) z# n3 [/ \5 F5 N5 l
: W& X  `* i2 d9 l
                Session *theSession = Session::GetSession();5 V2 `1 k2 d, R) K3 S4 X9 x' j
                Part *workPart(theSession->Parts()->Work());
7 p2 I: ^& L! H# s                Part *displayPart(theSession->Parts()->Display());) }% Z* x& \3 c2 P& Q! C9 c
) z' T) X% r/ ^& [! W; v8 |% v

9 w( r2 v' S( p+ E4 P3 n                Features::Feature *nullFeatures_Feature(NULL);+ g) ^) i4 e1 e$ T( O" E
                Features::EdgeBlendBuilder *edgeBlendBuilder1;4 |  K; B+ D6 U$ z! k  ~
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);8 F" o! `0 }2 [  C9 \

  B9 s' C5 n3 Q
/ {+ a/ \) O9 ~( n% C$ H2 S- O
                ScCollector *scCollector1;
2 Q3 N' |6 Q' T& h                scCollector1 = workPart->ScCollectors()->CreateCollector();0 [) v$ A$ D5 F

+ o6 E4 l) G4 w8 v5 x) k/ N/ r' v

9 d- u; H5 x$ g- g6 |' U# U% Z                std::vector<Edge *> seedEdges;+ y3 O# x" j) H- W
               
' x/ v4 R* U4 |8 A                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象. K" Q: ~3 m% ?+ F3 p
                for (int i=0;i<selectob.size();i++)/ s; D# i' w4 V7 }% i# e
                {  b1 ?% {6 _1 a3 j# P
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
; D7 n& x- q9 K0 s3 C  }
0 ^8 [* F( i5 J$ k
( f* \$ B7 v; y/ }# B5 K  double dia = expression0->Value();            //获取表达式的值
# w+ T- I5 i) b3 ]  l5 D                stringstream DIA;& r( r: Y# j* p
                DIA << dia;1 \7 a; t% M' E5 K7 o! u
" s- ~5 _( \: V6 `7 n
  q4 k6 S; k% U/ _  V. Z8 O
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;8 d; g" ]9 D# ~) F; f
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);9 n4 I- M$ j5 o% w
# }+ Y: Y6 O% g0 _4 G3 P

8 B- M9 p4 ~1 x+ s+ G                std::vector<SelectionIntentRule *> rules1(1);
# x( s2 V" ?( s2 {! k1 m                rules1[0] = edgeMultipleSeedTangentRule1;6 s/ m% W3 G: c3 q) g2 L9 A7 z7 u, c
                scCollector1->ReplaceRules(rules1, false);! q3 R: l( O6 m( f) j, ^4 T
* N/ F2 w& T% Z3 j7 u$ F5 l. c
9 A* o9 K& ?9 X6 V1 v; q
                edgeBlendBuilder1->SetTolerance(0.001);
  {# P$ Y+ O& K( R/ M* ~) z4 I) v- r+ M3 Q

6 f: K. U5 A2 r/ o5 o                edgeBlendBuilder1->SetAllInstancesOption(false);
1 s, l  E  n/ [0 S; }+ z) ^) _
! O$ [; G+ _; L" S
) b% _1 N+ i: o7 u
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);2 r1 x# ~1 J! S1 b% f4 ~7 t
- m3 ^- `' ^" d4 Q

4 K' a. Q% k, g8 I                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
. `4 g  F$ O1 ^& v, i$ W& n& {5 Y" y  v  K0 t( v2 v& w5 O7 @

* X: H5 k2 l! L5 `7 J) G/ A                edgeBlendBuilder1->SetLimitFailingAreas(true);
8 R% v3 J/ E  U: {- z8 s( Y
( j' {, H/ i6 e7 Y  D3 ]
- A/ ]1 A6 }6 f. F0 K$ J
                edgeBlendBuilder1->SetConvexConcaveY(false);
1 K; M6 y. x* u9 _5 Q. G$ |2 H$ t4 d- m3 I0 b- u: Q8 s
# r) ]4 D% c4 B5 U+ v0 D$ |7 }2 d
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
) U3 C4 J. ?! X5 A6 e% e' s6 C1 T& L. V& a  y9 g
1 v+ Z8 K( e! r; Z; y" _8 \1 [
                edgeBlendBuilder1->SetRollOntoEdge(true);; u0 X0 N, x0 f( l0 Z% d

! x% n7 A+ n. T7 r+ n! t5 A6 \" z/ i

$ q  d. Q" q- L* G                edgeBlendBuilder1->SetMoveSharpEdge(true);% o4 o7 T# h, o: n, E

3 C2 y9 Q, Z8 a8 I) U" t$ n' T
! W$ G2 s3 ^4 I; c0 a8 K
                edgeBlendBuilder1->SetTrimmingOption(false);  F  \" C# b6 n( ~
5 V1 K. N/ F, T7 I

3 x8 c0 j0 z7 b                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
. `$ E8 y; q* d' S- q& Y% M
; x7 M: g' ^- a, E3 x% F
8 `9 `- N2 s" k$ ]' R0 Y  ?
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);6 J7 f0 A5 R: F* M6 l' R

) {/ |2 X8 o! G

3 C/ |0 x* k6 a' w6 u' m! ]5 ?2 L' R- f                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
1 V; d  h' s4 A8 d
! P( Z- z" [* k6 `3 t: R
/ c. c. N3 B  }& s
                int csIndex1;; O5 Y  }2 A# s- W9 r) H7 ~
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
9 I1 O3 u: L2 f; W  W, q
6 s6 |' g7 Z* G9 W. [
& h4 T" j3 ~  ^6 Z! |
                Features::Feature *feature1;* {# ]# w0 M$ y" B
                feature1 = edgeBlendBuilder1->CommitFeature();
( ^. Q0 i. E# i0 I# y( X2 a( j7 `+ `- |: y, t7 n0 U7 J. x

1 d* Z$ k; h1 z+ Y- u                edgeBlendBuilder1->Destroy();8 w/ N! k  Q$ T( k  G: T
% Y' R4 T& u0 d4 ^- g+ y# I
    }, \  G) E$ W& B% O3 c( L' e" q
    catch(exception& ex), y/ S$ L& T$ c& U$ k% ]* c
    {
) h+ }7 P5 l7 {        //---- Enter your exception handling code here -----, i" f1 O5 I; h% \# I- Y7 h
        errorCode = 1;) y; v, B5 a6 o: P3 T! E
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
8 ?+ Z: y/ W3 i1 q( E    }9 ]/ ^& s' @0 I1 ^% n/ J
    return errorCode;
7 r. s2 ~. L4 A5 p( }}
+ E3 m' I$ B* E: J4 r+ x$ M
% f& n# U4 C9 I% e* s. d, I2 W
说明:因为字数有限制,这里只贴出关键代码。
6 p7 p  K4 {* S( v7 U" l4 C1 K' V' A5 m
5 g& M4 Q  T6 f
% ?& ~) @, i0 Y. y2 d7 t. p  u/ H
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二次开发专题模块培训报名开始啦

    我知道了