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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

5 ~$ r$ V; A( T, }void selectedge::initialize_cb()  W+ z( g4 K; v6 c# V
{
3 c9 ^' o9 P9 @7 X; Q) o) ?3 G    try
1 e8 h# Q- J' C    {

/ t1 R* _, ?: e( E8 e  C        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));. d: H. W5 z4 `. r3 s$ H2 F
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));* h0 m0 h& |' r9 x6 E* ]
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
4 {! w! x( G* U    caTCh(exception& ex)7 x& C5 |' b8 `; i2 a
    {  Y7 G, T, z1 n. j) o) w
        //---- Enter your exception handling code here -----2 f; D2 R; R9 T9 {* t6 q
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());$ v/ b" Y& `8 s; V; d7 @2 b
    }$ ]( n- u- @) ~1 E' H& I
}5 `: v- v  b2 i2 q; O
1 q9 S0 [) d* O5 O2 Q: Y
int selectedge::apply_cb()
# G: S0 p& S! Q) q! h+ j{: A; p) P; D& x' E" S
    int errorCode = 0;6 P- U2 n( n4 l7 S# z! ?  l. J" h
    try
. V* u; ~) `4 i9 p5 A8 M( K) p+ J( q    {% ?8 `' q% e, ?
        //---- Enter your callback code here -----8 i, |6 o+ _4 t( w$ {; D) r

* k% ]- K. U6 v% S9 N. ~- d
( a' A# T/ t1 m$ B

- u% f8 `  {, J8 f4 F, n3 S                Session *theSession = Session::GetSession();2 S# F2 B, S4 F5 E6 y3 c  u0 ]
                Part *workPart(theSession->Parts()->Work());
; `/ Y# _9 e# E9 W* K8 p/ E1 @+ N                Part *displayPart(theSession->Parts()->Display());
6 R! x& r" q7 X, c/ f, O0 Z/ I, M: e9 b4 A- C* G

& W5 R8 p3 ]( Z, V7 h                Features::Feature *nullFeatures_Feature(NULL);+ l( ?1 u( @2 c# r. }' T6 A* `
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
3 l" p- `: Q, k) |4 o                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);: a7 O: {4 ^' b+ K* {/ ~% j) _( o
" X5 v) A; @. }% \
$ H; a( t; k+ y! y5 j
                ScCollector *scCollector1;, S$ r+ m0 x1 }2 j
                scCollector1 = workPart->ScCollectors()->CreateCollector();
* P. _. d. r4 ?( U) R- G8 M0 S! ^( \( T1 ^

( q0 I9 F0 N: d# X! S                std::vector<Edge *> seedEdges;* g1 {6 P2 H. A; Q& y) h
                . z7 i1 q/ j& q! w3 f; y: o7 ]
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象7 j4 ^, e8 n7 l5 r. o1 g" c$ l
                for (int i=0;i<selectob.size();i++)
! ~9 i5 ^. u6 Z6 Q                {
- d( K, `0 ~) v, X                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
3 ~. H/ G3 j: \% f1 B  }- m$ S3 Y- j1 C( F, @
# o! j# t7 F: {# r
  double dia = expression0->Value();            //获取表达式的值
3 p# p  V6 [1 J( B% g  K                stringstream DIA;+ D; h- Q8 y# U/ k2 l8 o
                DIA << dia;+ K! c: V) s# A' s
  K9 C2 j: A* p& i1 B5 S' q

, O$ u# u9 }% W! u* D- c                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;, P; G. D; r2 r* u* B7 x  S
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
: @6 |- o  U3 |. t+ f$ c4 f4 d' E5 S* g( y
6 [; I9 Z' l) s% z& C0 |
                std::vector<SelectionIntentRule *> rules1(1);" @; T& \# z! ^& S; m0 L; \( R% x! O
                rules1[0] = edgeMultipleSeedTangentRule1;
# {& U% }+ G2 y8 U$ W                scCollector1->ReplaceRules(rules1, false);
* x1 d- G1 O8 s
: B, D/ f7 t' e3 G
- b3 m# k. c3 E: O; G
                edgeBlendBuilder1->SetTolerance(0.001);
- ]. D+ w! H$ i7 R( ^& @4 T; `; g, f
# P5 I5 Z* L: `) n8 Y) q9 h
                edgeBlendBuilder1->SetAllInstancesOption(false);8 \- X1 x3 ~/ M7 J
3 C* I# y& B' a; R7 h/ v

+ I9 i0 {8 r5 U9 |4 J                edgeBlendBuilder1->SetRemoveSelfIntersection(true);+ x2 L7 Q9 p7 a
1 f7 X/ N" x  {9 K
1 D* O" m: o# i) Z4 I4 n
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
5 A0 J6 [! ]* s* a' E
7 n+ m7 j* S; }$ O# V& Y

8 O: t1 x  ?  |) {- N- I- g                edgeBlendBuilder1->SetLimitFailingAreas(true);
, Z, j2 |5 I7 E8 j0 H
5 |2 \9 ?- i- J* {+ q' O

" k4 |/ P' t2 p/ ^                edgeBlendBuilder1->SetConvexConcaveY(false);4 }: W9 H5 m/ L9 [. {2 J" N

3 F9 }! u/ P: K
% F. e$ ?, O% g: |& B0 n: X
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
" K$ [, E+ R$ w: p% x; V
' A2 {4 b8 r: e4 [- z, y
2 [, q- m4 p8 m
                edgeBlendBuilder1->SetRollOntoEdge(true);  s2 ^  n7 G+ |0 j! P6 s
* H9 Z: ]1 o9 a
( {* u; \8 I  z6 M, i% n, }# J1 c
                edgeBlendBuilder1->SetMoveSharpEdge(true);7 B4 D" p$ }0 ^0 F# X) }

3 t+ a# o; k" B3 h

; R1 j3 J! E# a/ z4 ~: {1 @                edgeBlendBuilder1->SetTrimmingOption(false);
$ b: k) m: g0 ]& `7 f  e( \/ x7 [$ M
9 g1 F6 R+ h. x2 L8 j
) `) E1 n- x. k, {  g0 q5 Z# I
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);! z' \- D! P) D5 X5 ]% _0 ~% e
7 [2 }" l  D: N2 I" Q
# k& r! q" o% y: a' w9 l$ }
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
; W7 Y7 Y8 Q  q3 |  {8 _( b9 t
! s) D7 n4 y' k. _8 ?0 Z
& e+ c$ b3 l+ s' L6 D- G4 i5 A
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);& j1 X  q" Y8 q9 f( ]/ B

/ a% ^; s+ ?( ~
  Y* @- Q; \+ @* C6 L: g# D
                int csIndex1;
0 F7 o: z* x4 x$ ~+ r( N                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());$ y0 w8 a" p& i& b
5 Y* B! l6 U% q8 P+ N3 u" t

  e+ [/ ^6 Q% W. Z, D5 j                Features::Feature *feature1;; }1 |. d+ s4 }7 M: u2 U
                feature1 = edgeBlendBuilder1->CommitFeature();
" [( \3 P. h' U- l! }% Y& m
  d) j3 s! I- f
1 i3 |) g' D, |6 B' J- {/ x+ I
                edgeBlendBuilder1->Destroy();
3 g* P1 H, J  \- J. `% b3 a/ h/ Z! |7 N% c* M
    }5 b" B( \: S1 h6 g+ W3 `6 F
    catch(exception& ex)
- r6 N7 B( a5 i    {& K* W% }" Z! I* G- c
        //---- Enter your exception handling code here -----
5 J- H' U! x# H5 Z) K& K$ q7 O9 n. r. e8 ^        errorCode = 1;
8 e! G& n% d8 H0 u0 n& H        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
+ T0 f. E0 l. a7 A' B    }5 ?& J' Z# m+ t$ W. T
    return errorCode;; o6 [1 v' S" J2 M
}
% j8 d3 Z1 G5 J

! U8 V# f* s0 X0 L. j3 I( B说明:因为字数有限制,这里只贴出关键代码。  r) Q/ a! E( v  Q$ d5 e0 c1 e

! Y0 Z, K: Z  p# v' v$ c. R- i8 w: W3 }  j, U

; q) F% e/ I9 P
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二次开发专题模块培训报名开始啦

    我知道了