PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

- F1 _+ t6 o3 b3 p  N6 `void selectedge::initialize_cb()
8 M! m+ n9 ~- G8 d3 |/ y( r' z( K{! d* _, Y8 ?2 |; B+ z# W2 X* G
    try
7 ^4 @0 o% q) }: @0 a, Q& v# j    {
- |9 v/ T8 I+ q' `: n) x% V
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));: N3 a& g8 {5 I4 J  k( Q# ]8 ~
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));* Z6 a; x. C# p
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}" }2 L' I4 M6 {8 S) h+ o
    caTCh(exception& ex)
# }; R- x. |0 C+ l+ H    {
; `7 H8 H8 K8 f, \& a        //---- Enter your exception handling code here -----: A# Q1 Z5 a9 U( n; Z8 M& E" H$ P
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());4 f: C" |/ k, _5 [1 U+ k$ _$ @4 y6 R
    }) o+ q+ U: M; h2 U
}
( _: a; Z4 k. `/ b/ ~% n# @# \! j+ ~; M3 V) o3 q- q) ?
int selectedge::apply_cb()  ^/ U! |3 \' Y8 {: {& }) J: @3 C
{. `. y+ a, B% S) P' J
    int errorCode = 0;
  b) F% T; ~; }( Y+ s    try
* \$ U/ @$ n1 T! B9 q1 N6 G& u/ [    {; j* K3 A" p& J$ O% @) g4 O
        //---- Enter your callback code here -----) ?- c; n3 N  ^, o
4 w# [; O1 s. A2 L+ [

* t5 c+ x2 j* r( Y$ ?. u
8 C; V/ u: L2 u: Y) C
                Session *theSession = Session::GetSession();' \4 S; o- y( W) c6 Z
                Part *workPart(theSession->Parts()->Work());
( d3 r9 D! `6 t' J7 e                Part *displayPart(theSession->Parts()->Display());  y3 V. W: ~: k

3 d' [$ C) o1 q

& Y( f" U' y5 k" V% Y7 b                Features::Feature *nullFeatures_Feature(NULL);
/ J* n) e& s, A                Features::EdgeBlendBuilder *edgeBlendBuilder1;
8 i1 [3 `8 F8 {; k                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);) Q! ~! Z+ x  D  ~. Q4 v

, f+ O2 T" i: M! H% T

6 J( Z2 E& x- r                ScCollector *scCollector1;
5 m( w; m; W3 `. C+ X! P                scCollector1 = workPart->ScCollectors()->CreateCollector();
7 F, L; K( @  l9 ?; Y# _
2 P3 e. T- a: F- b) Y

& @# ?9 }2 u0 ^  ]2 w                std::vector<Edge *> seedEdges;
5 v* J8 C- x* A, O; k) F                0 v. J! K" R9 N% ~6 p) j
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
" Y9 E+ a2 L, H                for (int i=0;i<selectob.size();i++)* X4 a9 V9 c( O& D% J) \$ w
                {
/ u' m& a% N+ J0 K% Q1 n# \                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
4 T; @) M$ x! L3 N, r- ~  }( B5 r2 Z, ]& S" Y9 }

' S8 E; T& }5 `4 F$ T  double dia = expression0->Value();            //获取表达式的值, H1 ~0 i' t' U/ L5 E$ F/ m
                stringstream DIA;
4 z% g: j3 k  \4 k                DIA << dia;! C7 u+ ^* R. f  A& ]
0 U) \0 ~9 Z  H4 n) F
" g( M9 t* D  h4 `' l
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
& C2 S# H+ M! t* y                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
8 i* i! o$ w7 N, ]0 C! T% s2 E5 {( m, {! K/ w" C6 }
& d! U3 c: m# z6 f: p3 `
                std::vector<SelectionIntentRule *> rules1(1);
2 d5 F* k0 }/ ?4 t" X! z& V                rules1[0] = edgeMultipleSeedTangentRule1;
5 }1 I, Y# A5 f6 i; k( d9 ^2 g                scCollector1->ReplaceRules(rules1, false);1 J: x* O5 Y0 v0 v; V9 D$ }' _

% y' I0 Y2 }5 P- J0 T" T5 U- ]: l- L, l

# f6 y0 i+ R3 L2 G& e2 M; u                edgeBlendBuilder1->SetTolerance(0.001);
; Y2 Y8 C* _, M; z9 h5 U
) d5 [( t$ k+ F$ c1 u3 Q$ l

8 ?- }# k$ s' }4 Z# p* U8 J' T" g                edgeBlendBuilder1->SetAllInstancesOption(false);
" Q" {2 x! ]4 [  ^5 S# P0 G" ~) x8 n; i; P" t

  m; N' t6 b; U) p7 ]& K' Q                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
& z4 ]1 Q6 ]  [* c* n2 e1 f5 {* V/ V

; _) ?6 S  K- x, g  a8 c                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);4 J; e8 h: m- k( R# V) n; e2 ^
! d& a  N& j( m5 v# x

' `0 y" K2 I2 _                edgeBlendBuilder1->SetLimitFailingAreas(true);
2 D) ?8 t; p- g$ F! s' U8 N$ }1 k: j( ]; W/ D+ u! s- ?# e- M
' C! V2 F* A% }" ]* S" x- N
                edgeBlendBuilder1->SetConvexConcaveY(false);
* n1 ]6 j( F  ?. s# f5 N- g1 C! [# U1 e* }( M, u* J

- X9 ^, j. b" U* h! r                edgeBlendBuilder1->SetRollOverSmoothEdge(true);' q+ p% g/ H6 E% E' U; P
7 q. l) V, p' t. r1 Q
- V3 q0 j9 x- e; Z) c/ V! e* L
                edgeBlendBuilder1->SetRollOntoEdge(true);. ~+ b& l# g. I% Q( D+ K
/ Z: N6 v9 @' e: P
; K5 f+ u1 p+ E+ c4 c: B. W( x
                edgeBlendBuilder1->SetMoveSharpEdge(true);
/ m; @  W, ]/ @' Q! T( j8 s! r. }

6 g8 J5 L0 O  \  G) p( p                edgeBlendBuilder1->SetTrimmingOption(false);: W( l, b- h2 c: {2 B
0 N* H) t9 O1 P# B

/ Y" ]( `, f% m) t* n                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);) n& }; T4 w/ J, ?# ~; _

  U% e3 d2 d2 ^6 b) S. M. J

* m( Z  ?" M1 M1 m6 D) }  Y                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);5 i$ w5 J! \# R$ Y* G

; b6 m9 Q8 }: p! N8 }6 }0 t0 c' l

- m) B# g2 U9 d% @( j0 d                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);% o  o; F* N* r" {" {4 j- K

$ k% N7 Y# D7 b0 O0 |- m
5 G/ s( V/ a) V. j+ ^
                int csIndex1;9 w" J4 R8 `/ ]( \" }" X/ s
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());6 J& C. F  m- Z) O2 N: J: E  c

. l6 k8 z+ U9 _- {

" f3 E/ j4 R2 P; p; l9 D' \& H                Features::Feature *feature1;& j. ~$ W; Y  q+ Z* b0 v
                feature1 = edgeBlendBuilder1->CommitFeature();
* `1 a$ l3 a2 M( w6 D4 `, N" P* \' N/ w

7 Y% ]+ u- M+ }& ]                edgeBlendBuilder1->Destroy();
: l1 q" c" U+ x2 ?
0 I9 a% i4 d4 S5 n    }
& n3 {$ y6 [" G+ s: B    catch(exception& ex)8 G6 E. @5 L: u' z8 w2 @) R, E8 P
    {9 N, K* z# x7 }/ s
        //---- Enter your exception handling code here -----
# k3 e! f5 L# J* v& N5 y  g, {        errorCode = 1;
# l9 Z: O+ H5 h, m        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());0 h) U! c4 M5 Z& V+ _% d
    }# K' T  G# v/ g5 H( Z9 b
    return errorCode;  d6 W& v1 r3 U% b$ B4 W
}

5 r; L$ d3 v2 B

* ?) q- m7 u& a: x3 r" F8 v" o说明:因为字数有限制,这里只贴出关键代码。7 R& z7 h  M5 S5 A  X. ^, @6 D2 B
' C9 ?. V5 x# I. ^( Z/ \
# D, H; }" F- S+ {: k
1 o5 k4 P* ^3 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二次开发专题模块培训报名开始啦

    我知道了