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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

0 a) m2 h/ a: D4 Z% Ivoid selectedge::initialize_cb()7 [: e) I: G3 N. v
{) A( c: F* X1 K3 A, V
    try
* N% r: ~7 V) A% N& H$ h    {

# T/ Y* @* m$ y; X# s        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));- L9 W# q* }& Z  C5 V+ Z0 }
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));, Y5 E" w& F  E6 v# F
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
! W+ F6 w) Q9 O7 v    caTCh(exception& ex)3 W' o8 w8 U$ f8 n& m  p- w% l
    {; A/ z! {, O: E! ~1 l" R) Z8 m
        //---- Enter your exception handling code here -----. O2 h% ]9 v/ n
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
/ @) @1 u! C7 G    }
! r' E" \2 A9 h6 `% H: x+ A1 h5 K}
. Q5 |3 Y+ C* j% c  q
* I7 i; d# w- D7 G1 u1 iint selectedge::apply_cb(). P9 O8 G& e: m
{4 ]( W  H3 O2 N7 F" B. t
    int errorCode = 0;) [! {# l0 ~6 H, \' o0 @* n
    try
' J+ C) ?5 G2 I+ ^    {* z4 ?4 `. o' b, E9 n1 T
        //---- Enter your callback code here -----! [; v+ {+ _: v# s/ d6 Q

6 h1 s' w* g  q, @5 Z; E
: W# U! J3 n/ R4 n6 P' U8 N

6 B& d5 @+ ]( U$ G. |, c                Session *theSession = Session::GetSession();8 O/ o( Y0 K' Q) c% c9 F% @
                Part *workPart(theSession->Parts()->Work());
; b; d6 \+ n+ _% E8 x3 o                Part *displayPart(theSession->Parts()->Display());8 ?0 F$ b# J/ d( E: _7 f+ k
2 t* _) A" ?- e

8 E! g' k) T( Y: a# u                Features::Feature *nullFeatures_Feature(NULL);7 H" c' v9 }( _* @" Z: ~
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
/ b- E, q# ~: r                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);# a- Q" i# k% a, H' i

" n/ Z) }% m* K

0 U7 g2 m+ u& H/ n6 U                ScCollector *scCollector1;3 f& p& ~* f# E6 S% B: S
                scCollector1 = workPart->ScCollectors()->CreateCollector();! e. {9 o9 s" A" q" P* F# I
( h3 ^; O  D4 q) J& j: K) K# o

) C& T3 ?; e; J6 B/ m                std::vector<Edge *> seedEdges;- }! s2 ~, E. K' z
                & j" N/ N$ O) k3 ]
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
7 A/ v1 {6 h3 a8 B$ c                for (int i=0;i<selectob.size();i++)
' S' J% @5 k0 K, B2 l! X                {; k- `- k# X( i9 S
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
, o2 b" C- a  B. B) E8 B  }
( ]+ m+ h- I0 y- x! {% m
. {0 y. L' ]% R- T2 u/ V  double dia = expression0->Value();            //获取表达式的值
+ s% f8 J8 w# t9 ~8 M                stringstream DIA;) C  x' E' C9 w$ R* c5 K/ {* `2 }
                DIA << dia;5 o; V" L* V& ~8 g. L' e7 l/ l

3 g; x+ F% c8 A) U) f0 ]
8 h( {. k) q9 u
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;- n9 B/ l% L# B+ f$ r+ r+ Q9 ]! B
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);* j! G* x& C4 |: O3 ^
+ C' L& L# Q0 p) e" K! m8 \- ~
6 F% _& o; @. \- J+ l+ w
                std::vector<SelectionIntentRule *> rules1(1);
8 o; O( g: X0 |6 L                rules1[0] = edgeMultipleSeedTangentRule1;2 y2 \! H! g. `# f
                scCollector1->ReplaceRules(rules1, false);
. H" L) \$ s3 t( T7 {& P& Z( K
* Z& n3 K1 P9 H6 {" N; p: l4 S2 h
' Q0 r5 z& t% ^
                edgeBlendBuilder1->SetTolerance(0.001);
5 T: I5 H: Z, K& n9 e1 o% q" K* K, `3 O  x' I# {
/ W: |* n9 K- D( Z% M" N
                edgeBlendBuilder1->SetAllInstancesOption(false);
, x7 b# T, n5 v, T- i6 H/ i7 n9 a3 t  N0 _/ c
( r9 L, I% _, G6 v, O" {6 m- ~! J2 j8 T
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
+ W+ Y3 P5 s  @  c/ H, L- o# I! ~4 k
+ L# s$ y* l3 F; P! M

: [5 g  q& {3 H' o, w7 S                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);- i" P/ ?5 t2 \3 |/ ~, e5 Z4 ~
% q- H8 D. n2 F, w, x

" J4 w2 B' o9 ^                edgeBlendBuilder1->SetLimitFailingAreas(true);
4 E5 v! H* q. W2 a( D/ B6 t" {
- F  o3 w+ c9 X' a, y' F

) |* E0 y9 P* C2 w: Z                edgeBlendBuilder1->SetConvexConcaveY(false);4 U. m" V. Z% g- }2 a, \

: A- l4 s4 r6 K1 {8 [( S

% ]% x- \6 r6 L0 |; l6 F+ {                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
  ?1 R4 ]# u  j* V: `3 Z  M6 C# x  u: z0 z; U! _/ V( F" d! n
) B3 y1 O# j- g3 h# y2 M
                edgeBlendBuilder1->SetRollOntoEdge(true);
( j( k) J8 I0 L2 B7 v2 ^5 q- b9 ?8 o# X$ O* }0 k
# A) `1 G6 l6 E0 w1 e, a
                edgeBlendBuilder1->SetMoveSharpEdge(true);0 \$ P, |% G' k# ~0 @0 H
( Z: a/ v, x2 Q" U( `

, x- y' {1 ^0 Z0 ~# w: G6 A                edgeBlendBuilder1->SetTrimmingOption(false);
3 Z* s6 C0 I9 [; ^& |9 F7 i3 p% j4 Y0 D+ n: T* [9 [9 y
2 r  Z& ?  u8 Q9 l0 c; I
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);: L1 e* |; m. P+ x( {0 G) o* M
4 G1 O% O! `& o  t

- }5 U1 C9 y$ V: ?* r. a, |! K                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
! k& I- q$ [: k7 ~; f+ x
* q6 L* ~) F$ ?! `" L

" h7 X( L' X9 l0 Y* q; S+ W                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);# T! V" D- ^% g0 @, l; v, A

5 B( m, u: O7 l) l. S8 O: g
0 E% {! x8 g0 P* N/ o4 c* F
                int csIndex1;
. A0 j# q% C3 V" O2 S                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
" S- J# l$ Q  ]- P9 @5 ]+ g0 E: D8 H$ C2 t6 K  M+ c2 v, c

1 ~/ V$ `! {0 u7 g6 \                Features::Feature *feature1;
: H* j+ X) @  d0 N! E. B6 p( w                feature1 = edgeBlendBuilder1->CommitFeature();
5 ]+ z& w2 J; o1 J: U' s3 b5 a& J4 p+ @8 }1 y+ K2 s! x" h- }( X# \! Z

8 f% C7 |& G& J2 P                edgeBlendBuilder1->Destroy();
( d9 N* X6 Y0 _* W5 M; X7 \; W5 P6 t  S% ^, t) G  t' i
    }0 D$ P, j; j! p0 f& b
    catch(exception& ex)2 U. l. i; e8 t9 w# ]' J# \
    {
8 H' Q& G1 a4 K$ P) O7 k/ x        //---- Enter your exception handling code here -----: F4 V/ f! u1 U# J' V
        errorCode = 1;
. K+ r" [2 ~  ^        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
) t( o! t/ Q! a! _/ g6 ]) y    }4 H2 d# x- b2 ?4 s
    return errorCode;
8 P! G7 U0 z5 c}

2 j5 d' R2 _& t* H& D! c" s

9 Q  ^% M6 Z5 E* q; z  f" j; }说明:因为字数有限制,这里只贴出关键代码。8 d* l9 V+ j' z" Z. [8 x; i
: W. D6 G# x3 D; u5 b; A
5 c( a! x) b& l9 V2 o1 y
4 \3 f% ?2 U/ ~9 b$ ~
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二次开发专题模块培训报名开始啦

    我知道了