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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

1 v# ]1 M. Z6 }) u; hvoid selectedge::initialize_cb()
+ `3 d+ `/ i! q( G{1 @$ ~5 _9 S9 n* T7 f
    try
: a6 W5 j$ t( a( e! R) L    {

0 n$ x2 r3 W" \  a/ Z% R        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));$ U; i% x1 E' u* N  E
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));. v* s' D6 U$ h" {
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}5 }0 v2 F, g' P* v. L' z5 A
    caTCh(exception& ex)4 _2 J5 {% J- Q% A
    {
8 C  Z$ Q8 Z. o, w( R2 a$ c        //---- Enter your exception handling code here -----
' ~9 |" H5 J5 i: u, Z; I        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
) z: {/ Q% w: t, K8 z    }
2 h  z" w1 G, S$ ?6 a}
2 L% s9 I* M; A4 r! Q* {, h5 |5 K. o4 K& A# o2 p. @& s$ g: o
int selectedge::apply_cb()
, c% ?0 N7 t4 n  o{
6 F( y/ k- _. K    int errorCode = 0;
: M0 e. m" c2 ~    try
4 ]0 h0 z9 Z* `3 f* p5 g5 z8 ?9 o' b! l0 D    {
" x) K9 R3 E% l$ F* j        //---- Enter your callback code here -----+ S0 k$ }$ W( D1 c! K

+ S1 t. _' I' Q8 P. u9 H6 t
& q5 f0 V9 ~9 ]- Y$ J6 I
) J0 w, O7 A5 L  Y/ h) p6 p8 r
                Session *theSession = Session::GetSession();
" g( H" N3 N% [                Part *workPart(theSession->Parts()->Work());
9 j# r  c0 q" K" q                Part *displayPart(theSession->Parts()->Display());& R+ z) T/ c) u( n2 D& s; V
- _# s- s' p* u9 h9 A6 `/ I' ]& h

4 S& K; S" `0 N( |                Features::Feature *nullFeatures_Feature(NULL);
) x0 c5 }5 s  }                Features::EdgeBlendBuilder *edgeBlendBuilder1;
. N9 Z8 [- C- M9 u6 B0 s( G& j  ~4 b                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
7 A- r4 q6 U. K/ ?
2 f  i& q/ Q1 J' V

1 t* A# Y- t- r9 t4 P                ScCollector *scCollector1;. s' h0 A+ y# X& t% h( o4 H
                scCollector1 = workPart->ScCollectors()->CreateCollector();# G) R. _! I0 N! b" l3 n7 v
  L! w5 M) C8 r. \. E3 }/ ^

8 c( l! M  A" B* k" A" U                std::vector<Edge *> seedEdges;
( F7 H$ h4 p" E                ! U( L! G! J- h& p1 K2 [
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
0 \, i* e* G- A2 q7 y                for (int i=0;i<selectob.size();i++)' J- Z' e! G! `- }! f
                {5 f8 m2 c7 J" E6 A3 p# w) @$ Q
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));( ~8 L3 Q7 C8 q
  }
% U5 O3 ?" h  z, k( K8 d- U6 e; b% j- B  `6 e3 ~2 r: |
  double dia = expression0->Value();            //获取表达式的值
# i' I. z7 c+ b                stringstream DIA;
+ `' L* @+ f5 c5 M1 B                DIA << dia;
% ^  p" T: X3 s
. j5 T* y* [! g# k

* a8 H6 l3 G: ]/ N% y                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;) P' v$ [) G' ]
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);2 [. {5 O: t& C6 l- ]6 {
+ w+ ~1 P( R) O* d% v7 x/ Z

2 w  _6 q6 D, u" |/ l' M5 E                std::vector<SelectionIntentRule *> rules1(1);/ w& A" w. e: k+ Y1 _
                rules1[0] = edgeMultipleSeedTangentRule1;! g9 L. k4 l  k1 m  t; x
                scCollector1->ReplaceRules(rules1, false);
8 V  z" e( p2 M( v) p3 U) q. {. H( o" z1 ^' `5 y) \& F
& V: ]1 _; V2 z5 K$ i: w+ q, P
                edgeBlendBuilder1->SetTolerance(0.001);  d5 v1 u9 E4 a* w

' ~8 w! y4 n9 k$ S9 R6 q( {, E

$ C' W5 g$ y& t7 Q5 T* s+ A                edgeBlendBuilder1->SetAllInstancesOption(false);2 A& d' k( r# W& f8 d& J

7 D9 W* T; v1 _

2 ]( h- C* ^# }" x                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
0 z0 v' v: l9 d0 Y1 o  `+ Q6 {" h& [9 g3 e! z  r/ P
% e5 ?8 ^8 D8 m/ h0 i8 P
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
7 r) B3 q5 L7 ]0 E+ V- }, W" }* _  D# c! w, |+ \
8 j7 p& I: T( D* |
                edgeBlendBuilder1->SetLimitFailingAreas(true);
1 N' E1 n% D; Z/ U7 ^3 J$ c/ F  i5 n- S9 d+ P

4 o' z6 i# G6 C6 Z" ~                edgeBlendBuilder1->SetConvexConcaveY(false);1 f9 q; W2 ]4 t+ n6 u6 c, P$ j3 `% V

7 z: X1 D9 `( ?, D* U

/ `$ {1 {! P8 R1 ?1 I5 I2 e                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
$ M3 M! e3 A+ D! L- u( w6 G& n2 D- W

8 O$ n  o6 ?2 Q. E* x. H' w: A! U                edgeBlendBuilder1->SetRollOntoEdge(true);
4 I. g, O; m5 C
3 [2 d  r  N- |# f4 h* D" F

  }" S7 d: n. ?4 ]* P                edgeBlendBuilder1->SetMoveSharpEdge(true);/ Z8 h5 N3 O" x) a' H
" o) _: \! Y0 |3 j/ {1 n

  o3 K: ~: f0 ]5 ]- [                edgeBlendBuilder1->SetTrimmingOption(false);
$ x# t. W+ y# Q8 |' v- A6 {8 s; p/ B0 l4 c8 v; a" k: K" c/ l# U% M

& A$ s# q( N5 K+ F' L* |                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
  @  J* P- D6 x4 _5 V/ ^2 y5 R# p4 ]7 ~1 ^* g5 Y
2 A/ K) M. z. D0 S" c1 w
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
8 t% {' E7 v# F2 Q1 c# \  p3 d3 F* B. C" F5 J6 l/ y, k
0 c' Q% `4 I6 Q" e2 e. T
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
" {2 H( N& y# }) g
" n, l( M# e" r

" y; r' C) e3 q; q                int csIndex1;7 J) M. w% i% A, ?- x+ X2 S
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
5 G1 ?4 F- e: }/ g8 `" Q% s6 E" H3 L) d! D$ B5 u$ l
- x4 E5 i4 w) L
                Features::Feature *feature1;5 m: |( t! t4 v/ G
                feature1 = edgeBlendBuilder1->CommitFeature();
, e! G1 Z6 o$ I
6 P( _6 I/ r5 ]

6 c6 b& v* ]5 l2 M% e* H% E! |5 q3 x                edgeBlendBuilder1->Destroy();, t3 P/ l: o0 V3 x# c2 p

- T# F; d" V5 m4 [1 I% i) C    }2 h6 k% v% ]4 P; ^' a2 f  w
    catch(exception& ex)' i" w. u: U2 t* h
    {4 e$ x3 K+ q0 w* e2 M* D2 E* i
        //---- Enter your exception handling code here -----
% c, s5 h/ b0 n9 M+ R        errorCode = 1;7 k; ~7 M* o1 S. ^
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());. V4 L1 Z2 f4 w# Z& r
    }
; T' b& M/ D  r( t! C5 v    return errorCode;
7 W2 i( W" v" _* u- ?  j: Y" |}

) e- O9 w: Q6 ]& d
; y6 Z6 {; J) C& P0 Z2 O9 N
说明:因为字数有限制,这里只贴出关键代码。9 ]0 u- y5 }4 X' s1 f' \& N# O3 h
- Q8 G+ o( `3 q. M9 z1 C, K; Y
5 |+ {# o& w9 P+ v, ^" `) |3 U7 _
( F# i1 w7 K. @# R- d6 w: m
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二次开发专题模块培训报名开始啦

    我知道了