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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

3 {3 P- B. d4 ^) }% X) l5 [void selectedge::initialize_cb()8 P3 n& h5 y6 T+ {& M* I: B- ^: d6 N
{- k0 O, ?0 S+ l1 `
    try
, M# y5 i, n  ^+ ?  e/ b: q$ O) c    {

6 _5 Z) I: `& g! K9 P+ n        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));8 e. w5 p9 _- k, T9 p/ u
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
: i- S! j- H, B$ L# A        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
* r% }0 W- L" m$ z& n  \    caTCh(exception& ex)1 @4 q6 ]# C$ x! [. J
    {" M& E! @6 w* k- @8 Z3 r5 I( G# F$ l
        //---- Enter your exception handling code here -----
7 d' H0 ?  ^; F        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());) M/ {$ H6 i4 V: R
    }
4 u1 G# Q7 v0 i* M9 M1 x}
3 F% ?5 q: {- z- ?- H4 ^+ s- I: J" Z$ H6 Y0 P  h" A
int selectedge::apply_cb()
4 f, f, ~% z7 t& Q$ Y{" M2 o6 |! t1 P/ q$ _
    int errorCode = 0;
# Q+ @1 z7 m) Y) T# [    try7 U6 k2 D) P" \' ~1 E
    {
' a' F  l5 r) A+ p. b9 |) W        //---- Enter your callback code here -----
2 O+ l* K0 I2 A- L+ D0 ^+ @2 Y
  @* K6 ^8 T1 t: s* G! E5 _8 @. G

$ Y! l$ {9 m  C* @8 e0 X8 C                Session *theSession = Session::GetSession();
# M, Z9 R: L+ o6 w                Part *workPart(theSession->Parts()->Work());- ^9 w7 k. R1 A5 v3 S
                Part *displayPart(theSession->Parts()->Display());- y, ?' _( n& W1 t9 s% q, @1 D

- z9 V3 |, ]* u% G! a* g6 f) r+ }/ w
$ @0 P2 N; m) S, i
                Features::Feature *nullFeatures_Feature(NULL);- o( Q+ k6 z+ x  [
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
3 q* E, ~5 ]; \  w7 Y6 K                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);# V4 e8 I, O9 q% P# e* [8 X/ s. i

% p( U, b2 N! C; A1 t- w

& k" E! H* |  ]7 L5 c                ScCollector *scCollector1;7 J4 d1 T1 s( M8 }3 ^$ K( A$ C& W9 U
                scCollector1 = workPart->ScCollectors()->CreateCollector();
; |& q" H4 G2 _* F) e# S
0 c7 r) m! S% o+ }1 g- q& d- G

! Q: F8 s  j3 l" K7 \                std::vector<Edge *> seedEdges;, X8 P/ t! V  A4 X' C
                . h6 C: k0 y3 v$ x9 d$ @1 b
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象+ C" Q, \. [0 j& s
                for (int i=0;i<selectob.size();i++)
( o; H8 a( m0 H                {
6 H8 L+ s  s( Q% |: {, _7 Q7 f                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));- i) b2 T( w7 O% S' M% g
  }& `5 N' O  Y) h
  k/ s& Y" n( b7 y. g
  double dia = expression0->Value();            //获取表达式的值9 R0 W  Q+ }* w% V
                stringstream DIA;
8 @" O. |, ~' ]/ b) ^4 h: w" X" i                DIA << dia;
/ @) u! h$ i' L, l' A0 ^# A. R& N3 ?% b1 A% y# W5 R7 k% A1 U
2 f3 [) v* ]1 G. Q' j" m4 F
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;0 Y3 S  g+ i! Z0 {
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
  l& h" I: o* d, v% E3 p0 {- a# ~" k& S* {: m
& D2 D1 j% {7 C
                std::vector<SelectionIntentRule *> rules1(1);: t' X/ Z- G% Q/ F" |& V
                rules1[0] = edgeMultipleSeedTangentRule1;% t3 d- T* d$ I8 V; a1 _- _% v
                scCollector1->ReplaceRules(rules1, false);# C$ h: t# F# |+ X$ l4 Y& E# w3 }
( g+ i5 L- z! ^& j6 D/ j
7 m* Y+ E/ w) o% O7 d! Z8 m
                edgeBlendBuilder1->SetTolerance(0.001);7 a" |. F- Q& ]  v- F/ W' d
" x& B* v7 i% o2 m$ z
; |# C! _+ e9 v8 N5 _
                edgeBlendBuilder1->SetAllInstancesOption(false);
4 g$ c% l9 h" U: g( s1 M+ d! w% O# _  z* L
' d1 E; ]' M+ j  q+ V/ l
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);2 _% O# h" T# R! X  J7 I2 Q+ e1 S9 v

, u' Y. ?1 f3 Q8 W! c
1 I& }7 [3 n+ [
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
4 ~( E; P, f+ D1 g+ Y1 Y8 B- X& E* {2 ^5 c: Q, u8 n$ W
  ^. A; Z0 v8 t5 q: r! D; K
                edgeBlendBuilder1->SetLimitFailingAreas(true);1 a# g  H* y% l& c  V5 k/ j0 \

$ E" e( b* y8 q! E/ Q. B

( Y9 m7 c; t8 z- }* r                edgeBlendBuilder1->SetConvexConcaveY(false);7 Z' Z9 c6 W5 R) y

& _/ A8 y) j$ B* ^
% y9 [. Q( z! ?2 i: V
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);' x8 |2 _' ~7 D/ J+ N+ |
: p, b5 N2 w- U) |) e& o/ _

3 R3 e& A; K0 i4 v$ v; ~                edgeBlendBuilder1->SetRollOntoEdge(true);% @! z+ S6 f  f$ ]1 [: C0 N) N

, w2 L, {0 Z; k8 ?& f
- A. {+ D$ J8 X' K# Z+ h
                edgeBlendBuilder1->SetMoveSharpEdge(true);
) J$ Q+ J  Q6 f' ]8 L2 i9 G6 K+ W3 Z8 P, a1 g0 ^: I$ u
# o; X5 I" l0 c' }. V
                edgeBlendBuilder1->SetTrimmingOption(false);
! m6 R+ B% g: Y* b# a$ C9 {" R/ ^9 V8 |. Y1 w
+ P* E# ?* j7 F( {/ R. E. O9 ^
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);4 P+ o, K' a) Y

8 S) x+ R+ c  A# M
1 Q5 G% ?9 ?' d9 j% d$ ~. z: W
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);/ c' ~' Y8 W, c) ~0 T! h& ^
8 a9 ~: I( v5 H0 [, T
( b% \/ c/ K7 }9 H) a% E1 i9 z
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
; Y3 E% U' `8 |, z8 p3 W: ^, M' C/ r( C

8 U* [3 H0 U( I/ V                int csIndex1;" @. O8 ^8 ~  L3 O1 [2 y) Y0 d
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());1 w7 w( m( ]* Y2 F
/ |# O( o$ j8 `0 w; U

: Q; b% X( H2 Y. H: S( r. Q. W                Features::Feature *feature1;
  e3 i; C. x& F                feature1 = edgeBlendBuilder1->CommitFeature();
# _  t/ Y6 n5 `* ^9 Y. l- u9 m0 k) |9 S: E& t2 R  b+ r/ _# F
1 h, h% Y9 A. m. G2 k
                edgeBlendBuilder1->Destroy();
1 _% b3 h0 N: P% G! D/ F) ^
5 `4 B  N0 d- A2 v& D. t! j- b    }
! T& ~$ D4 [2 X; B    catch(exception& ex)
' J. r& S8 p, f    {9 c3 q. Q% _) G% n, `# H9 C( p. O
        //---- Enter your exception handling code here -----
' Q8 C3 A; S# B5 z6 {        errorCode = 1;  ^/ [$ F3 _3 U9 t0 d) ^4 }
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
1 f2 o% w9 H% c  ]9 d* J3 Z    }2 m, |6 d5 Z/ \/ Y; [8 [( o
    return errorCode;/ T5 W' h" c9 P5 B# Z
}
! i& [& E- H7 e* J& S  E' Y
2 [* i$ E- o5 f+ }3 Z, O0 k% _
说明:因为字数有限制,这里只贴出关键代码。
8 k5 ?9 n9 V# |, M3 Z+ X: |7 P$ j. _0 c

, z7 \. K. ]$ P3 ^$ a8 l) c# k
( H+ m* E# o7 a, \
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二次开发专题模块培训报名开始啦

    我知道了