PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

7

主题

9

回帖

228

积分

培训VIP会员

积分
228
发表于 2015-8-15 09:15:43 | 显示全部楼层 |阅读模式

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

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

x

- m; o+ e" a# \( ivoid selectedge::initialize_cb()1 ?( {- Y6 d5 |! I4 B$ R$ }4 N! v& z, D2 l
{
7 B/ z8 p* y5 a% I, x, y* x) U% T    try
, w( a% S  f, T9 Q7 d    {

- d1 D& G* e( k' c        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
' e+ v3 \: i) Y! n        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
9 I+ t, \' y" l1 r5 g( l& b1 `2 B! c        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
2 u; n3 n  Q* l7 L& @  T    caTCh(exception& ex)
3 K# d, W; t. k0 [  X) M( E% b0 T    {7 ~8 W  U+ w1 ^$ z" n( O6 _+ q
        //---- Enter your exception handling code here -----, W# Z' R- r8 j
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
8 O0 z6 V! u; l( }2 N6 j    }/ @. M, ~5 d9 F3 h; l
}& a  f( b) L5 b0 d* y- j6 ^3 i. G

. }# k- |" ~, L# f9 M! \8 ^int selectedge::apply_cb()' d( L; A4 B# b1 C
{
  l7 c3 |8 k: p; k4 ?: F0 Y    int errorCode = 0;& k2 X6 b  K2 I5 ^# ?4 U) d
    try
$ G7 `$ c% y8 [$ d    {
* I% }3 L; m7 F! q( K/ f/ ?        //---- Enter your callback code here -----
( E* S7 K" y) ~+ b' `1 b/ \3 x1 ~% r& |" I; ~  R
3 b, m* E! p. V' ^8 I7 {$ `3 o

5 s9 S. A1 O0 n5 R" @$ h                Session *theSession = Session::GetSession();
" h$ P" E3 H  P: J; k4 b  h                Part *workPart(theSession->Parts()->Work());/ }( K% }3 w' h
                Part *displayPart(theSession->Parts()->Display());
9 ]3 q) p9 }7 \7 {
8 z0 P, R/ W* h5 e

8 w3 s% i2 g) z                Features::Feature *nullFeatures_Feature(NULL);" g9 s, d6 @5 ?
                Features::EdgeBlendBuilder *edgeBlendBuilder1;9 C& t" o1 P# h+ K7 \: _; @% F0 f* f
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);8 F6 [5 F4 S" h( |! G6 @, T

: H; Q0 u3 }+ E- R5 w: i

5 Y# _0 Q6 D& Y3 E, h1 j) }                ScCollector *scCollector1;
7 k+ N( o+ Q- i- f% X; P- t1 b                scCollector1 = workPart->ScCollectors()->CreateCollector();) `1 @: C' B) P' W8 f2 |: z2 h

4 J4 H& o* ~3 w* ]) r! e, d
4 A0 ~3 I# H* q; ^
                std::vector<Edge *> seedEdges;
$ l: z# }8 Y# P& k& B9 I               
/ O( T0 z( A  o5 _9 P' W7 Y                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象  [' A1 G9 h5 T/ g: z, M5 t
                for (int i=0;i<selectob.size();i++)6 @3 u8 N! h1 K2 L( X' P
                {/ {  ^: N( A" I0 R0 I0 Q
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
8 ?2 B1 B* C8 }2 l/ [  }6 d8 F! a  L$ i' X# I
# G5 q  U6 j) T' U1 Y9 H0 B0 |
  double dia = expression0->Value();            //获取表达式的值
: |) b4 A, c( F7 T- S                stringstream DIA;* [4 q, Q" i" z. Y. T( ^/ w
                DIA << dia;
$ l' [# ?& Z% k1 g0 n5 L  P% ^2 x* }3 Y+ `& o4 v/ @
7 N, \" c: S( D+ z% K: R- t
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
; i' ?9 C0 h  v% P4 w                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
+ I$ ~* ~0 v1 X) y
3 L6 r5 y" [' l
: |$ u6 A- I5 T8 l
                std::vector<SelectionIntentRule *> rules1(1);
4 k7 N# M4 b+ |                rules1[0] = edgeMultipleSeedTangentRule1;
$ r% y0 k8 n# [1 `+ G' x! s                scCollector1->ReplaceRules(rules1, false);$ D: p- v# o  A% Q# v& m! f1 P
2 T% |, @  q% j
1 u6 o: n2 a7 y% X( p
                edgeBlendBuilder1->SetTolerance(0.001);3 F) o- J% Z3 U- C2 ~
0 X0 A# O  A/ _8 j
/ f" z( L# \) O% Y" [0 B3 _8 n
                edgeBlendBuilder1->SetAllInstancesOption(false);5 h; `0 O! K( J6 P! P/ J! N* E
. T0 W7 x: U8 e+ I0 F( j# M
9 a/ F  i8 z( ^9 v* Q' s# K
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);! x. |; z$ w1 \! A

0 s  m; u, N0 C* L

/ v' Q: U9 k' c, |- X* k. y                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);# r9 U/ h# h1 U6 e

3 J5 o8 r' ~+ |7 E: D$ I) x" r

5 r: [- ~. D0 y; J1 ]9 H                edgeBlendBuilder1->SetLimitFailingAreas(true);
1 \6 [2 x# ~# P! g  |2 g/ z  z6 i# x* U" R- w9 V) @+ _
) k4 f4 I. {- h5 T4 W5 M, K0 E
                edgeBlendBuilder1->SetConvexConcaveY(false);
5 V( c% h$ z: q" G! F* ^5 K8 v  p
. e2 o" a- ~* o6 d; M

1 G) B. L) v- Y                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
+ y9 ]& d8 n- b2 |# a. s) V' o+ l3 a) z1 G9 e. L

$ M8 q" v6 g, D6 T3 D! _                edgeBlendBuilder1->SetRollOntoEdge(true);
2 B" o& }3 L+ h6 B+ y$ T  n6 l$ R7 H2 Z. Z: c: J

5 C1 t, f# ^+ z/ j" K                edgeBlendBuilder1->SetMoveSharpEdge(true);
6 i& B$ D% }. H- U
0 t& C- k; ~0 A8 J# H/ r
8 X0 A. I) ?: l0 W* o) ]+ r8 d
                edgeBlendBuilder1->SetTrimmingOption(false);
  O3 C' B" P. D3 K5 f) }: _; g; i# q0 u; W. y

2 r6 g. Z7 a& W8 L                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);- G# C  `4 V2 R2 p# B1 v2 w+ R

9 o% i" B  V, z) Y

$ ?& g6 ~" r5 ?9 Z, l                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
7 D7 b$ R& @0 Y/ P: D9 W) F; P( M1 ]! b' `# c

8 C, D; N" X9 B3 w+ q9 @  ?5 K                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);* Q8 g/ }: W* u- o: M1 f+ L9 s
  B3 I# N" E5 u
" c) v1 B& a/ E* Y$ e6 g/ B1 g
                int csIndex1;
8 ^, M# ^; X* p5 \/ O2 _                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());5 s9 W; X7 X2 f9 ]- N
* Y6 U( m. A$ O  j- e
% k% c8 T6 ]0 @1 D
                Features::Feature *feature1;. |- Z) w" F& t; _2 {& Z
                feature1 = edgeBlendBuilder1->CommitFeature();9 x. M) Y  U# [6 |- Y) t$ L

) r( G) L! e- a
" Y# i, S4 @6 U8 D8 {3 n
                edgeBlendBuilder1->Destroy();  `( P" X9 p4 M" I) K
$ A* ?/ m/ X6 M: K: t; |8 `
    }
5 Z! w. m5 M. Q" c" B. o) S    catch(exception& ex)% D1 y+ g5 n  t8 U' ^
    {
' k1 w5 Z( m0 j! Y+ p        //---- Enter your exception handling code here -----
6 h! a9 [( `# `        errorCode = 1;
: H3 }- l- `8 O) t  Y        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
: q) Q" Q& e9 A9 w2 n    }$ i/ b! W( x5 V  V
    return errorCode;7 \  J& r3 {" \! Y5 d
}

( x4 ?# F$ @- a' y- E; h' B

) L3 Z5 h5 h! I2 B" M! T  T* q& Y6 v说明:因为字数有限制,这里只贴出关键代码。' K. b! Z& H% r

7 m8 u9 Y/ Y  e/ D; ~: Q5 F0 Z9 I0 `

6 m4 Q, g/ k- l6 D
QQ图片20150814180022.png

评分

参与人数 1PLM币 +5 收起 理由
admin + 5

查看全部评分

上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复3

1

主题

10

回帖

125

积分

注册会员

积分
125
发表于 2015-11-4 11:12:18 来自手机 | 显示全部楼层
如果我选择是一个实体,怎么自动将所有的边倒圆角呢?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

7

主题

9

回帖

228

积分

培训VIP会员

积分
228
 楼主| 发表于 2015-11-23 16:33:40 | 显示全部楼层
遍历加判断
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了