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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

- `& w' F+ u. b& P1 G- K& W6 v% Nvoid selectedge::initialize_cb()( D4 v3 y6 }6 {* K
{% I2 e) M, J3 Z& j, N8 Y/ b0 a
    try" A- o' o" o- b4 w- Y9 r# ^4 {
    {
- x' E- C% z+ Y2 R3 |7 |# H  K
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));& Q  d# C# H0 \. s$ X
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));0 B- ]. T( U+ ?: F/ u1 ?
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}8 w) y1 M9 @! a' l
    caTCh(exception& ex)
% \0 H/ B; ]/ b( [3 D: F; X& y" R    {8 {! w- [1 f4 h: Y
        //---- Enter your exception handling code here -----+ I. \1 n' T6 K" O0 ^' t
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
2 U/ g  N3 {  b7 r, m8 g& v, I    }' m8 L  Y3 w& i& ~9 e) [. v
}$ R. [- e' l9 p! ]% y0 o

9 I. c+ f5 k5 w: [; {int selectedge::apply_cb()
1 p' y+ s! J5 ~& h/ ~9 q5 i{1 a7 ]! s# e: i! q% l$ F6 b
    int errorCode = 0;6 q/ L7 ]# ?+ g/ |
    try
5 z/ x# }3 U3 s0 J    {* P+ e- X* ~  N; T( B, D0 r0 ~
        //---- Enter your callback code here -----0 l6 S2 ]. A( F9 M; d- X" g/ k
5 k* {9 I3 z) R" N

* r( J" b$ T1 l! U' O
; A/ l) Z# G( l
                Session *theSession = Session::GetSession();
' Q! v" d3 s( j- L3 u3 [                Part *workPart(theSession->Parts()->Work());* I) k% p7 M; n8 R% T
                Part *displayPart(theSession->Parts()->Display());
# X/ u4 z6 Z; A& m8 k( V) S7 ]  i! l9 `
; y" A3 R! ~) v( K, `- U9 [

. H  t- e, d1 ]# G' T- X$ }2 S                Features::Feature *nullFeatures_Feature(NULL);- n) ]( n) h0 B: a) V" l8 Q# C0 W; _
                Features::EdgeBlendBuilder *edgeBlendBuilder1;" V5 g( D+ W' j9 m4 T+ l
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);4 b- a" K7 g/ ~) \1 ~

- R( o" k+ A) D3 j( f# i* F, k
8 N4 K' W3 l8 h$ s6 D/ t
                ScCollector *scCollector1;1 G9 l5 w- g  b0 S8 {0 D
                scCollector1 = workPart->ScCollectors()->CreateCollector();  U4 a" U" }1 G& L' E5 @) f$ B$ P

5 Y! V$ d# X6 r5 P% \
5 l- C: c' Q3 B  X3 y  a
                std::vector<Edge *> seedEdges;8 h3 S( h+ {; `6 W  D8 f
               
- H4 K' @% a1 R3 q" T6 m                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
) Z- }  t8 r' U; C                for (int i=0;i<selectob.size();i++)" n+ {5 x% h) X) E! J
                {
# O( A) {6 {6 [                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));* y2 v7 ]+ O5 z, V6 E! B, _5 S. B) ~
  }
% S* l$ `4 v) z. d+ `9 A- B& `: l2 c. U, C! T3 O$ X
  double dia = expression0->Value();            //获取表达式的值
% V) C- ]6 }! |# f2 a                stringstream DIA;
% f2 E+ C' r1 Y/ [) M                DIA << dia;
3 F  ]4 Q: Z7 Q$ e' V: c5 o
/ X: h6 d' Z7 P8 }% z) Z) I

2 R4 m9 f+ L3 {                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;+ x+ r/ l$ }; ^
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
5 @  @  k0 V& P
: m( ^' f7 o& n) r8 k: x3 v

- k* \* M5 ~! Z                std::vector<SelectionIntentRule *> rules1(1);' x4 w6 p4 G7 K) e2 N
                rules1[0] = edgeMultipleSeedTangentRule1;- J. V$ r  l0 X( S
                scCollector1->ReplaceRules(rules1, false);# J! J, [6 ^/ ]# [- m% h* Y/ d

5 g5 W$ b8 s6 {  ^1 Z4 E! Y

! |8 v- j: D6 W- ]                edgeBlendBuilder1->SetTolerance(0.001);
' t) `) F7 X! q( i  {$ R1 {, L- p6 w7 q" n2 i
! s; z, q$ F  f- w* n  \
                edgeBlendBuilder1->SetAllInstancesOption(false);5 p" |6 s! d7 k

( R* b3 O) X1 j
- g4 _$ D4 p9 W* X2 B) F5 ^
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
- `' d  v3 |/ o% \1 ?( U
0 Q, b: [0 b+ A* A/ `- R: s
, m0 U6 V( s( o+ H/ z  l" C' c
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);" Z$ b' a. s/ k" q1 a2 G
; h8 H  _. V/ Z; d9 P: d

+ F4 I" X3 k! \* K6 k                edgeBlendBuilder1->SetLimitFailingAreas(true);. ^0 _, [$ s3 `. G
0 y8 M6 E! |5 Q

0 P. B, v( C$ J" n                edgeBlendBuilder1->SetConvexConcaveY(false);
6 S+ \4 `& ~2 }2 x8 [
1 d& K- D* \  F! M+ x

2 z0 s+ O  w2 c+ h- y  f. }                edgeBlendBuilder1->SetRollOverSmoothEdge(true);; M$ x$ h9 e- O2 J% C. y+ R
3 x: C, R+ L7 {& t5 V5 S5 o

8 N% K6 S- s0 D  w                edgeBlendBuilder1->SetRollOntoEdge(true);4 M% k& K0 h3 c0 t- Q5 d- S2 S. Q
% }% r& ?$ V( N* o  \7 x
# k6 t. H' j0 _. T& K/ }: A. Y+ e* D
                edgeBlendBuilder1->SetMoveSharpEdge(true);' G  q4 K4 I) L& n

. ^: H8 B3 ?- G( @0 D
5 z9 S' ]8 }8 B3 @6 {
                edgeBlendBuilder1->SetTrimmingOption(false);* \% \- B1 s6 ~
1 P4 |8 V4 |/ N+ C. C8 {1 |$ s
9 i0 e( f& U# B/ e
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);  i, I/ d9 x- h
) z  b* g3 H/ m% D+ W5 t( p$ o

! Y5 N  B# D5 W) e& ]                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
/ U' h1 f6 j3 Y6 ~+ ^( ~/ {& t3 O* R2 \: E
8 A  [% }& v$ X( ~

, b1 Q6 }; j3 E8 \5 d# @                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);. n1 C4 J0 j* X+ i, n
8 F0 i" f5 }# |: }3 u5 C

+ e6 V( p! q" H+ M                int csIndex1;
9 H+ I8 ]5 r: P/ E& P                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
# d5 S5 J. _/ Y7 b' @" f5 f9 t/ u& U* l  k: \1 b; k
, s: Z# m4 S5 K9 ^% F* J
                Features::Feature *feature1;
0 T/ J- O# ~7 ^  j% I$ |! g/ o0 p/ C                feature1 = edgeBlendBuilder1->CommitFeature();2 u( V9 q; D4 }/ w0 t+ W
* P1 n, U8 j# F

  B, u# g. u$ }/ Y! ?/ b                edgeBlendBuilder1->Destroy();
5 C! a! ?5 J& g) s" K! F  y9 h) `: }2 S7 L
    }7 R; F' c# M& ]3 y5 d% l% H' {4 T
    catch(exception& ex)4 z- k! l7 S0 m1 M: N
    {5 L) o) `7 P" o: n7 F
        //---- Enter your exception handling code here -----
9 ^) o. a; f; ^) H        errorCode = 1;9 ^; S. W  ~' N
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());9 D5 K1 p# c' f. g  v# _/ ~+ N
    }
' u- g- T1 {7 }/ h+ t' \    return errorCode;5 d1 |3 Z$ e" [$ s/ n3 s: }
}
  X6 u  l* U+ {

' R, N3 Q2 g3 V1 y说明:因为字数有限制,这里只贴出关键代码。
( C  c9 ^& r0 G( _" O+ M% N, I- u6 a# q- ~0 i( h9 [7 y( o
! _2 X- D0 ]& W3 N- r' b4 K' P

4 Z/ F" g4 I& r# E- t' 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二次开发专题模块培训报名开始啦

    我知道了