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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

  d- s* i: d7 ~void selectedge::initialize_cb()5 L8 ?: c  z7 {" R5 }
{
; i3 z6 j7 V0 G1 w' |, a    try
! h$ r3 N0 G7 D8 h: y9 M    {

8 l1 Z# l6 X" n7 T$ e' u; A+ H        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));! N  k! Q; V1 R+ C( d, I$ v' |
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));$ m4 ^3 o  U' q# v! K. H9 W7 ^
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}9 k) ?/ M+ P- w3 X1 a
    caTCh(exception& ex)
7 p& T) S6 q; W3 g) y7 i, |+ t    {
4 P1 D4 s( P: r- [6 w# k        //---- Enter your exception handling code here -----
8 v& t' K( l3 d8 |        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());: I% D( }1 c" Q0 Q
    }. U8 h3 s! X/ S
}7 X3 _/ v4 S8 {5 j) U, e1 A: `

; t4 Y! D9 z$ p, Zint selectedge::apply_cb()
4 r) a3 `% ?4 P, G{
3 o, F0 k8 m# z5 ~7 R    int errorCode = 0;
0 W' s  j; `" n/ ^) D# y    try  k- s+ i0 A, B) P; m
    {" ^$ _% f! ?- f! _) I
        //---- Enter your callback code here -----7 U6 _  b7 n: [- ?: G/ c/ O
7 x& e7 p/ h- z: f

  K6 {. {/ z. `" C# F5 W

; U; A: @% e9 C                Session *theSession = Session::GetSession();
7 u3 l6 G5 F) d; ^                Part *workPart(theSession->Parts()->Work());2 i2 C6 |5 d6 m# j
                Part *displayPart(theSession->Parts()->Display());
/ H+ M& Q$ p! D1 q4 `5 |4 X
, H1 N% x  D- L% S2 ^
9 l" C# E* V( f4 b7 u+ x8 k
                Features::Feature *nullFeatures_Feature(NULL);( u3 `9 r" V3 ]) w& U
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
2 f" G! J2 ?1 y" a9 O                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
! `: N/ ]/ p5 k5 a, i" E, m6 c. {/ l) n5 W# B+ \' P

! b. ^( s; g4 u. Z' F/ w                ScCollector *scCollector1;- @0 f$ e1 o# g/ B6 `2 K- s# e
                scCollector1 = workPart->ScCollectors()->CreateCollector();! L; g; n+ D$ o/ W
5 L7 e* e/ f+ w* A) ?

+ B4 N2 l( ^$ c: T' f7 t8 M                std::vector<Edge *> seedEdges;5 M$ F( Y9 u7 X9 A# f0 V0 ?  N' f
               
+ U' J, r5 R. X, g3 u" N' C                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象- e5 I! s0 L& v
                for (int i=0;i<selectob.size();i++)
9 t5 l! E* i7 H8 c" E) q! n7 V8 g                {
. H, l1 ~  f. c$ f8 K0 m                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));4 u. `5 W4 {% P3 f3 U+ M1 t; O
  }
1 ^6 b/ R3 h; `) }6 E6 A' b
/ E3 E2 r  [; E0 A' [: T  double dia = expression0->Value();            //获取表达式的值, ^5 l1 ^' C2 a# B  M
                stringstream DIA;
$ {" K/ `  p+ ~" m                DIA << dia;& d# |& `+ U5 c3 Q7 Q4 T( ~

; @4 G7 n4 c$ z, P
+ n! ~- i4 Z0 n
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
1 G$ D7 s$ H8 Q1 M) v) b                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
5 W1 Y, ]7 n7 P8 E7 O/ c; |9 \
7 }1 ?' Y& }% V1 [$ V. g7 C
) \$ B1 N( I, J. L7 D
                std::vector<SelectionIntentRule *> rules1(1);+ w$ O9 ~( I! H5 m; T7 M$ f- J
                rules1[0] = edgeMultipleSeedTangentRule1;
: l1 e* ?# m- ]                scCollector1->ReplaceRules(rules1, false);
7 X0 S- i3 `, F2 B9 f; A- B' u2 y. I6 o4 E" q0 X8 m

( D  f) d. y7 J( P: ^, m. C; p9 v                edgeBlendBuilder1->SetTolerance(0.001);: Q) `" l' k2 ^) x
% K8 Y$ `6 p* P1 \3 ^
; X5 \2 u6 i' i
                edgeBlendBuilder1->SetAllInstancesOption(false);; R9 r& {* \+ L* D, C( i
& h* G' H* a7 b& F

- Y) K7 }/ k) ~                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
! o9 y( U$ p( R1 m" q& l3 d2 b3 U, A  E7 R

4 x+ s  {8 m7 [3 _/ j" @0 I                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
: V7 W; G: R, O  o
/ @, M, n: z! k

) H3 o6 x7 C* D8 z9 C& Q& K  h( r                edgeBlendBuilder1->SetLimitFailingAreas(true);+ L# C- J. c' E7 \3 v" w9 H
' G: D0 l$ |5 l/ q% F1 [) {
- {1 d! M/ U: T4 M3 |4 u
                edgeBlendBuilder1->SetConvexConcaveY(false);) g! |( ]: K3 [) v
* m" u) }) N- q# S$ L/ O! X4 _
  K4 C1 j+ ?2 w0 G- g% B2 G# I
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);) Z+ d8 J2 G$ l% d2 [
* Q6 K5 N0 y1 `: F
' x" h8 }, O  p  E3 s; i
                edgeBlendBuilder1->SetRollOntoEdge(true);
6 ^5 |7 i: l7 L3 r  s0 y% J9 |
7 g* D9 X4 ]3 I% r+ r1 D* h2 [, d

  c5 m3 A7 E# u8 B8 w                edgeBlendBuilder1->SetMoveSharpEdge(true);! H4 A% l0 a& X# }" P6 r* f
- I7 e$ I& u6 |& k

3 `5 l! h4 G# Q) q                edgeBlendBuilder1->SetTrimmingOption(false);6 S* c) d  f$ h* X$ [
# a8 y" w5 O" ~* [
' B. d' u" v5 M
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);% Z  Q) D4 x5 ~3 Q) k
& G( b; ^2 |9 I4 d* ?

, F. _! b/ b% N% `, S2 }  J6 V4 l                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
! [! w/ M$ z8 t
& A! F$ n+ \7 c; ]5 f5 X# ]+ N

9 b" h* M( y% Y% Z/ ^6 C$ z                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);- H* ~) D! N( g0 \' z+ D

! d! R3 V$ O8 y2 M8 D

( W2 ^1 a3 H6 x4 R                int csIndex1;" N) w+ f+ L8 r* Y1 i
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());" Q- \/ V9 ?6 E0 w7 v. j) R4 Z/ s

) R' p# \0 Z- A. e6 p
6 M- [8 d* N3 t
                Features::Feature *feature1;
" s- k7 ~4 p/ j* x" A                feature1 = edgeBlendBuilder1->CommitFeature();
! y- |" ]& n3 H0 V0 g. S% @  {0 Q: V% A1 c6 [0 }* z1 h
  A- K9 L" b4 N( X' l
                edgeBlendBuilder1->Destroy();- A! I5 u. a; w; p; H2 ~

3 r2 ^; v1 n9 _+ ~/ g  N    }
3 ]8 z& d& {4 d, _    catch(exception& ex)
9 t4 v& [" C# r4 }. _. |: e$ t! [, C    {
% T) e2 H; `4 z, k+ k, g: C        //---- Enter your exception handling code here -----
* E% Q6 _) r8 [, V- O' w5 J0 I        errorCode = 1;
: T3 O# t1 @4 u7 B& a2 c: |0 h        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
  Q' p. w9 A& _: ~1 C9 U6 c: A    }6 u+ b# b) P/ V4 k& m
    return errorCode;
5 Q, ]! ~- `2 [& E0 u9 Z8 B: X}

9 E) w# l4 {0 X2 }

! [7 R0 K5 L& Q+ V8 I0 F, N说明:因为字数有限制,这里只贴出关键代码。
1 N" g' m9 q( ?* H; d
8 Z4 G9 Q# `1 J% |0 ]
  g  R: S; V/ O; H* I- [

  _  C+ G: y' `# Y7 \. I: V
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二次开发专题模块培训报名开始啦

    我知道了