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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
' }; l) F; O. @3 {  t, j) L
void selectedge::initialize_cb()0 C5 [( i" k% \
{
8 H: Q- K0 L3 z% y( W! f! v/ @( _    try. X% I0 {! L; E& H, S! N
    {
  S# @* @6 k6 T  v5 D
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));$ {. g' W- d& \
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
/ n0 r  J: ~" K6 _+ v& a        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
7 D$ P1 p5 @, U/ F) R" h9 \    caTCh(exception& ex)
& M1 f0 k0 b: ~5 ~: Z/ {2 P+ s7 h2 G    {! E2 \$ I1 Q4 N% A$ V% {2 M
        //---- Enter your exception handling code here -----
. g1 Z7 ~, l  L9 J; r        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());( d9 |" s0 {6 J6 y% C
    }
, c5 P, _, g0 ]' U& E# R}4 \: g( t1 _3 Z* r4 j6 a& J4 Q

( M9 x1 d; K/ }! F8 |) `, Tint selectedge::apply_cb()) m; U# E! `8 A! F9 S
{
8 W7 q+ h& c5 \* \9 E    int errorCode = 0;
( c% M. N3 y& h7 M! `    try% P1 n8 `. H5 T% M# K' B9 k
    {+ i, t% x" @% G$ M5 x
        //---- Enter your callback code here -----
/ P* M3 [& F' @& N- i6 ]! t" \6 s2 v- S

- g" W7 [9 {4 p+ U7 E0 A8 @7 R
! |& ]4 L$ G$ y, d
                Session *theSession = Session::GetSession();
2 d3 L9 V) j5 U1 |+ Z0 Y                Part *workPart(theSession->Parts()->Work());7 |: F* r! z$ _: i4 X5 w9 V
                Part *displayPart(theSession->Parts()->Display());- o$ c9 p6 \4 S* v  ]3 w, G
! J4 s. N8 ~) h1 `- B6 z2 P

% X6 H/ J7 b& l1 p: O                Features::Feature *nullFeatures_Feature(NULL);7 Q3 V' b  a$ v0 D
                Features::EdgeBlendBuilder *edgeBlendBuilder1;6 C" ~( `8 }' j$ V
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
. j. q3 @7 e/ P/ u
7 I6 ?5 ?4 u- k8 e5 A: F

8 H. Y6 w, j3 b. w/ c' T                ScCollector *scCollector1;& Q, D" u7 X1 o  d1 v9 l5 D
                scCollector1 = workPart->ScCollectors()->CreateCollector();7 @2 ]7 Q, p9 h, _. ?% G

0 }- S( U6 f( R2 E* v

& P' I' G+ [6 t4 p) c- y                std::vector<Edge *> seedEdges;& M) }5 v" o# G) q! s* I. p7 _6 j
               
' Z5 |) K4 e' u0 H                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象" E3 X8 H4 m5 t  k! O* Y* u; A
                for (int i=0;i<selectob.size();i++)
8 g/ F: c5 o, R( F                {$ {" d. f; i% S: y4 b  J
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
8 D# a" G: C/ v% ?4 Q1 v  }
1 ^3 h- X: |' g9 u
" N& `1 v+ R& U8 p9 f* A  double dia = expression0->Value();            //获取表达式的值
- ^8 i1 ^0 v" N* {8 F: E% g& Q                stringstream DIA;- O' s, d! A( x! H* c
                DIA << dia;' Z0 C9 U: \+ C/ ]
' D0 z( j7 s8 h9 I+ q
4 |: X4 P' \& v- ?3 p
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
) @- f$ u. V  N: W" ]  T8 B/ w4 T: F6 w1 k                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
7 \& _/ r) N: s7 {; l! K7 H9 f; X' o/ z7 _& Y* @+ C
7 k  e) D# M6 _; D6 ~6 I: T
                std::vector<SelectionIntentRule *> rules1(1);
+ a* ?, b* E) C2 r, b+ q+ ]5 x                rules1[0] = edgeMultipleSeedTangentRule1;
4 W) w2 h3 F6 P4 t, f9 @) p  m. H                scCollector1->ReplaceRules(rules1, false);0 v3 a- \# u$ E! q, Q" X
7 \8 x4 j) J  A; {3 e, R

4 u2 y, W; w+ d) D7 ^; G) f3 T                edgeBlendBuilder1->SetTolerance(0.001);$ C- O( @  u# g5 F0 Y- ~; m4 W

% k, S4 u" n" Q- J
/ o& f( O1 i" P- _( Q; `
                edgeBlendBuilder1->SetAllInstancesOption(false);
/ Q# j& S# O) }& o/ [  K: j  O& m- Q" U1 Q, D

& Z( n2 ~/ T: b: L                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
5 Z$ ^6 X% Z9 _% l) H
! A9 J+ g2 N+ V' T1 e. Z1 K
0 l$ c% o, M6 v' f( a1 O" U* N
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);" @( K0 i. w: L& ^' \
6 T2 a# T( z+ b# k' [
9 A5 l- y7 e% N2 u. B
                edgeBlendBuilder1->SetLimitFailingAreas(true);
: i6 h# v- |  R6 O& s7 `9 O3 W; ~* @5 [! K- x" o7 `: I, j
) J/ ^+ E( r+ A$ b) D/ ?
                edgeBlendBuilder1->SetConvexConcaveY(false);% S  W; J  w5 A' c5 n! E

4 ^6 i  y$ f  S0 |( \
# g2 B& Q3 {9 |: w/ W/ ]" c0 h% `+ ]; [
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);2 G2 S# B- n2 s) U& Y( R: `# K: K
7 d- D/ A; `( y" }+ ]
( ]* Z& A8 {; p* e! x
                edgeBlendBuilder1->SetRollOntoEdge(true);
# F& ]% S2 y; o0 H
+ ]( s, |$ O9 x6 ?# v, Q% j" P& G

+ k6 L- k# }9 ?                edgeBlendBuilder1->SetMoveSharpEdge(true);, ]% t$ h1 T+ [9 b

& ^  k6 B& r+ ?3 w) o

, e8 r. P8 d) H! l  f6 t9 H" Z                edgeBlendBuilder1->SetTrimmingOption(false);
* h% K8 V: E* O& H# ]
8 v0 ~6 b1 p6 s! {9 V2 w
! ~; T3 E" i- H3 [, U
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
# S  z4 T  k, C6 k1 x  f, _! n& v# Q- f8 W9 V

9 b* C$ h! ^9 b8 z) Y" K% B9 q$ d                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);4 p7 |2 u6 q3 O& A

0 k, ]  E( o$ x; `) \

  l5 L/ c, V+ b                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
* g" {8 V7 H' h
4 S, r' l$ B( M1 e: ]: D' L' @. y7 D
4 D& [8 Z0 t# s8 y! t
                int csIndex1;
( i; j/ u- b+ Z  b- x5 F                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());# ^- d. r! }: \+ S+ U$ _

. @8 `1 e) a. @1 c

. r4 h  I$ [/ I! o/ S3 M# M: D                Features::Feature *feature1;6 f( S/ H- O, a8 _, W5 M* @
                feature1 = edgeBlendBuilder1->CommitFeature();
; x3 `: _0 n) _- e
: G  T# z7 A: S$ y, l# J8 M% _

0 d$ S& h  H: L8 d" {                edgeBlendBuilder1->Destroy();$ f3 A6 [4 M% y8 R$ z

1 |7 V9 ~% I7 X2 a4 g    }$ j1 a3 A- \! C& d9 h$ N, {( ]
    catch(exception& ex)
' ?% b& D0 |1 F- _, B    {
3 b; c( s4 `9 S        //---- Enter your exception handling code here -----) D+ V; H( o, N/ Q
        errorCode = 1;
" F3 v1 s8 `0 x2 `" r5 T        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());) E4 k/ n# F! \, _2 n
    }
' @9 U% o5 _- j9 H0 X    return errorCode;
4 c  \/ c4 N# J2 G) K; O6 Z7 r6 E}

4 n6 Y$ q$ l  j1 N
* a2 K5 D. J' f, \
说明:因为字数有限制,这里只贴出关键代码。2 a+ Z: T' ~( V2 Y( x5 {

' W' K6 h" E6 R8 \& Q1 w  s  o. I. j! w, t8 g0 C; P8 u/ j
0 C& J3 d" i* L
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二次开发专题模块培训报名开始啦

    我知道了