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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
( o4 h% q5 D! Z+ Y9 _
void selectedge::initialize_cb()2 [- c3 z4 Z* a+ V2 f+ Z. {; t
{+ \' }/ c# ]7 Y" {, u
    try8 ^- h# @  g" d) X6 C* b
    {
9 `5 M1 ?3 C4 Z9 w
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));: Q9 ~1 r# X  |  ~3 N
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
% u4 S8 x. A' O8 d$ ^3 x        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
. ]/ r; G+ M* {0 g8 s# l1 I2 n    caTCh(exception& ex)
5 o1 A9 H1 G' T- C    {
9 d$ p" I. m' F6 q0 @1 b' j; e        //---- Enter your exception handling code here -----
3 }7 A. D$ O7 P) ~        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());9 L' |6 ^/ B6 S( {+ Z) d! K
    }
0 I5 ?4 Z5 F: z( p' K# i" \}
3 H) S9 L4 y  L) B; z5 c, j: r7 p* j# x$ ]0 L
int selectedge::apply_cb()
5 o; a  e1 z- I/ G* t' O# s{/ F6 j: k5 g" u7 b
    int errorCode = 0;6 a* D' e0 P* F2 c
    try$ r, p% N6 c9 t0 ~  d' {
    {/ N  D/ j- [5 y, l, l6 L! R9 y
        //---- Enter your callback code here -----
+ }! X+ u0 }% R  ~4 O) u( |; A* @  E- J0 z+ D6 `! \3 P

  A( V/ `% Y/ A9 d) @) W
, J5 [! D7 M8 `5 s/ Y8 d( C
                Session *theSession = Session::GetSession();4 S$ C9 z/ n8 P
                Part *workPart(theSession->Parts()->Work());
/ i7 Z) v! A; i$ H( t" |& X% @                Part *displayPart(theSession->Parts()->Display());5 N: F2 N7 ^$ g& A" O4 V
9 B+ {  l; N5 V
8 W5 K  w) `7 x$ k3 I
                Features::Feature *nullFeatures_Feature(NULL);0 V. S7 M* }: @
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
6 x9 L8 B: ]* W% X                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);% u7 k" R7 S0 ?* y) ?
0 e  x/ a# T: y8 `
; g! W3 o6 O0 U# H! {4 p8 I
                ScCollector *scCollector1;; Q/ ^0 c/ A( ?: M, v; H
                scCollector1 = workPart->ScCollectors()->CreateCollector();
+ r* ]' _- R0 m: E' t
( \/ D' w- T9 ?2 u8 k
0 ^+ l) h( l6 V7 e8 ?( l
                std::vector<Edge *> seedEdges;
4 ^6 b; \! ?4 c( V8 ]" g                / `+ `1 T5 T8 L$ x
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象( Q, N: c" Z: f* P/ O2 v, f0 P
                for (int i=0;i<selectob.size();i++)
. I! U  g' d4 Y7 ^4 x                {* e( i4 q  D) ^1 r
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));3 d0 T  s  D0 k- }' E5 j
  }
4 d! ?3 j( n; L. v3 j/ [0 W
/ A2 z+ |# ]$ M* @- S9 Q- [- I  double dia = expression0->Value();            //获取表达式的值
$ u! B' M" }1 X  @9 L) B                stringstream DIA;. F5 {/ p/ V# J  U# C
                DIA << dia;
4 `, t  ~$ X+ F0 u3 ~; `! x2 b/ r0 [; m: u& v( }
9 L5 O* N( s. M+ `% t
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;0 Y' {  a- \; [; l$ N: p% L' f
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);0 j- D0 ]1 C& H, V
3 Y7 r1 w8 |+ }  w+ i7 O
2 [! v7 y# ~$ _. B, I: ~% C6 i
                std::vector<SelectionIntentRule *> rules1(1);
$ T  V; m5 U( |3 J$ o4 t$ X8 W                rules1[0] = edgeMultipleSeedTangentRule1;6 P# @8 X; O6 ^/ l: O& A  B
                scCollector1->ReplaceRules(rules1, false);% ?* M  P/ f) a  ?
; d& Q/ ^2 v/ }; ]

: D4 i1 t" l" E" G                edgeBlendBuilder1->SetTolerance(0.001);( q0 C0 N6 ?* [  i" G1 ^& B0 E) {+ l

/ ~$ A" x. W* t" T

2 z# [- H& J/ O% u5 U* J                edgeBlendBuilder1->SetAllInstancesOption(false);
1 h9 ]/ V& e# a* {% j4 j$ ~" Q. o  z( T7 ?) Q+ l8 o* u

3 z3 u9 F  K* w. {                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
6 p# K. _/ `5 X7 z& Q6 ]9 y; t5 n6 j

  `7 Y( H/ O: U7 F( Y7 S. P  I8 S) x                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);5 V& H  h2 B' ^# Z* y; K- a" A

; z; E' v5 J% }7 u9 N
# E9 F) s3 N  R9 B7 v
                edgeBlendBuilder1->SetLimitFailingAreas(true);7 P$ \# a& v! f' L
. m9 ]" {8 U# \& \; c
/ ]1 k# R; q; t. B( C& C
                edgeBlendBuilder1->SetConvexConcaveY(false);
9 X! E6 h6 C; W; E  K* v) ~0 F' N/ m% V/ P4 e

3 p5 o: v/ a7 F/ {/ w) m                edgeBlendBuilder1->SetRollOverSmoothEdge(true);8 ^3 Z( Q5 t% Z& q( R) E) f3 V+ v
  A: |* ?! O2 L1 S

/ b  l9 y5 r7 n, D                edgeBlendBuilder1->SetRollOntoEdge(true);
5 O/ d1 G+ U; W/ M3 p- x  _
9 {# I" J3 h: t) G( ^/ [3 d6 s" U
( ^; C6 Z: n4 J- [* }+ H
                edgeBlendBuilder1->SetMoveSharpEdge(true);
# v5 x0 }4 e* U4 Z6 T7 s
# [, R" r- h. v2 u/ S/ J1 u
) M5 }  ?8 F) Q% l- v& ~% }/ u6 \
                edgeBlendBuilder1->SetTrimmingOption(false);
) r1 Z- K/ Z& ~2 \
: Z  i7 Q1 `% u
; a* M& ]0 ?: C2 L& x5 `
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);( p2 x$ L0 m0 }' o

, N8 d6 l' L0 p% z
- S" R. v, o8 o5 D# b+ L2 g" R
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
* z, o& ^6 R* m9 R% F7 ]5 R) h' W/ _5 ^% j' h9 B# {

6 N! R* ^, F& W7 I3 O                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
" h% ~9 y. r2 D+ }7 M7 ?
7 ?3 L. W3 k. {4 c  @( d) l

0 p! k; m6 T9 W9 |/ S4 l+ ?                int csIndex1;
& \, U- c: s! l4 M                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());0 z0 X+ g) m4 b7 b

% {+ }* `' e: V

( o8 z, @; N/ n" n) u                Features::Feature *feature1;
' j& i9 f4 D) z" w9 V$ R                feature1 = edgeBlendBuilder1->CommitFeature();5 v! ^) V+ T7 k, E& v

8 l: K3 Z" M" q- o# j& I# A. k4 |2 ]

! H: I" \. I( [9 R                edgeBlendBuilder1->Destroy();
' F# k6 ?7 M3 P$ A- x
1 j& M; Q1 a/ Y. T  Q8 G0 X! y    }# C& r  K  \& a: k* L2 f
    catch(exception& ex)
/ A7 t4 E. u6 ?( n* i, v0 o4 X    {
$ \0 o* p9 b' D        //---- Enter your exception handling code here -----. g' r: J# h% q8 I& W2 t  F6 S
        errorCode = 1;/ i& i- H) o+ j' {0 J+ R8 x
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
: C, R  @7 |+ S* S1 x0 d    }
. T: J; I  e  v, a    return errorCode;
8 u( x$ ]" Y% z4 v& e}
: i& s7 ~& V  e# {, N0 W' w1 n
# y, h% A1 B. k
说明:因为字数有限制,这里只贴出关键代码。- o6 X+ F/ Z6 R( e9 M
# J6 B6 W* J+ f7 h9 o* S' Q

7 V- _" s! s% [. w7 D

- M8 I( Z- |0 E2 P2 z
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二次开发专题模块培训报名开始啦

    我知道了