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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
3 r! X' R$ E' [4 q
void selectedge::initialize_cb()9 m! X7 @: {+ V6 R& @
{" L% Z; P2 Z5 w3 v
    try" H3 Y+ F( `- x$ w1 S) }& D6 C
    {

  ]4 ]! Q$ V0 Q. s        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));5 }& g/ X% c: T' w! y2 _6 d9 A* l
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));0 I! Q" @+ V' b* B0 W% s- ]1 o: e
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}' }7 |7 v/ v& h: C* [
    caTCh(exception& ex)
3 e8 Q" e# B; y7 X2 c, E, N    {
! A2 K, D& a  M$ c0 S) ?9 T        //---- Enter your exception handling code here -----
" _. g- L& A9 ?; ~% j. P! U2 b1 v        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
. L' [, F$ C2 P0 @0 \    }* t  a7 `+ H! M" R% `$ o
}
/ O; `7 D" L" d  f% S3 G
$ d$ [" n* {. M$ m2 oint selectedge::apply_cb()+ B/ V- ]5 y. e' y0 C+ [3 |& Y
{# n0 G( q9 G1 \$ U: ^
    int errorCode = 0;/ v6 d% d4 H9 @% W5 N1 h
    try/ @/ R" P+ t# E* I) B4 J
    {  N' R' T* X8 O* x, L
        //---- Enter your callback code here -----
- X, o( l5 i( {$ ?
7 B- `+ _7 k9 f) G( T% S% l% a& \6 Y9 y6 Y& H: Y/ O! l$ K
& @8 q7 K% f4 \" O
                Session *theSession = Session::GetSession();  g: D; m# @8 M* y) [5 J
                Part *workPart(theSession->Parts()->Work());
3 w) Y8 r9 D  A2 ?: D6 W5 s                Part *displayPart(theSession->Parts()->Display());9 y: ?) Y- v0 k" y8 W# S

+ k' t6 A; h$ P: D3 Z, `

3 w. w2 |3 I* B+ Y& n  p5 K, f2 _                Features::Feature *nullFeatures_Feature(NULL);
5 [  }; f6 F$ X& o- ~                Features::EdgeBlendBuilder *edgeBlendBuilder1;
9 O6 C- r# f1 ]                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
/ P" q2 y7 o3 h% D5 j9 J: w) h
' J2 O+ W+ A/ A# K

& T+ M$ L& [8 ~: z                ScCollector *scCollector1;- ?, h4 s8 b8 D; }0 M
                scCollector1 = workPart->ScCollectors()->CreateCollector();. h$ b" E- j* v. o
: H/ Y9 G5 M0 e/ _

& d+ I$ k4 X& \" s" n+ L8 K+ M                std::vector<Edge *> seedEdges;
5 c8 v$ L9 P# V8 U+ [               
4 G8 S1 r6 }; J                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
( J# ^8 \- {- a: w+ p5 c' \1 x                for (int i=0;i<selectob.size();i++)' H, K/ V0 O3 c, a7 k+ q
                {  b6 x! k; _. ~* N; a7 h( r8 F  i& h
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
1 N: }1 g2 r, N  I0 p  }
$ Z( @% Z! P" n( _. S% S  P# l  k1 y+ I/ h
  double dia = expression0->Value();            //获取表达式的值% t; Q5 q$ p" D8 R: H6 r
                stringstream DIA;. t* {% s- ]  d6 G: U0 W
                DIA << dia;# b8 g' R2 p8 G

% e9 Y, W& e# Q  i6 l( u

( x$ r- G/ n- I. z. I2 }7 s                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;
  Y* p) M+ H- o/ y! M! P4 |                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);! [4 J: c- @) D9 r7 m' h

& s9 v5 b' ]/ ~% w' J4 M( X

2 j# X0 P8 n2 A7 w+ J. L0 d; n                std::vector<SelectionIntentRule *> rules1(1);
% s2 [. N$ w- q  R& `                rules1[0] = edgeMultipleSeedTangentRule1;
9 L" s8 O! E+ y: i& F7 a" S$ ?                scCollector1->ReplaceRules(rules1, false);' e% a- _% V; @. d0 B4 g$ g" {
/ K" I* A8 m+ W: I3 Z+ I

0 P, h8 q& S# g, i  Y8 f: W                edgeBlendBuilder1->SetTolerance(0.001);! n2 Z$ ~, |- m# x9 a

* a) x( E7 o" ]3 S
' q% c: ^" X- O$ c; G( o" X
                edgeBlendBuilder1->SetAllInstancesOption(false);
& _& }4 t2 p  L: M2 o8 j
& E% E5 ]0 x: U) n
8 l9 r3 c4 Z4 `6 [; _6 p7 Q
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);5 |0 @& f2 u$ M$ z$ f
9 a3 t5 F  l" Q) J
9 K: |# k7 ~" ~% e( e. ~- d: D2 b
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);- l, ^7 X6 k' _- s, U+ Y
5 `* p* j: V: [- y$ E, [* z9 _
- F( E( F! O7 R% r0 Z9 s
                edgeBlendBuilder1->SetLimitFailingAreas(true);0 j  Z4 a. {, f
( m  c7 Y7 i. k# C- U4 y0 i( c0 L

* T) g. L" @6 Y. @                edgeBlendBuilder1->SetConvexConcaveY(false);
) c4 {- w6 j3 F9 {* B" l7 w) N
' Q/ t+ J' j3 u) Y" R  k- r) c1 Z$ H

& ~, j) X3 d& [  V" \: P                edgeBlendBuilder1->SetRollOverSmoothEdge(true);" @( i" `) T1 `5 Q' L" ^/ G  q
7 e9 U4 Q$ f4 ]
& b# h$ C. W/ R% h3 u5 p, F: S  A
                edgeBlendBuilder1->SetRollOntoEdge(true);  n8 H, ]% Q5 r* I; \9 {0 M

0 E4 y( O* z2 _* p# c
" d" y( w$ T! _' s
                edgeBlendBuilder1->SetMoveSharpEdge(true);! J1 o3 r- e7 i  D; N

# [0 V, m) b0 k$ I
( ~5 }3 O) a. V  K" L; _' o
                edgeBlendBuilder1->SetTrimmingOption(false);& T" b* o7 v; r9 t3 z+ `
' a& w; Z/ _: b  f

7 Z3 s7 F! c, J8 _                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
5 }" c0 ^* w) b4 q# x: Z$ j( I; M* Z* ?7 X' R

/ k7 K; [. |1 `2 J8 b6 q0 C                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
8 k3 u5 C& j; w( {" ^( X4 `- L+ A) b$ v: H0 O
5 W! h% L3 L9 c2 H& d
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);, t4 Y8 N# [# l' b+ ~: v" a6 |% b$ Y
/ T6 u: h$ n4 u1 m+ D2 x

" N" ]0 y/ J. {% x                int csIndex1;
5 F) p3 P+ {% b' c% D                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
; _0 M! S6 N# O' k5 L8 Y, ]! _5 `5 ^5 Q# G6 w4 L

% b. @, q  o! Y: W; ~+ d& J2 F                Features::Feature *feature1;; ^) S, c) [" B+ {' E
                feature1 = edgeBlendBuilder1->CommitFeature();% Z& l5 @" V% n8 ]2 q5 V( n
4 |$ S; X6 ]4 p

* D- j$ f* w8 i% B# H& t- {                edgeBlendBuilder1->Destroy();9 ?9 K& M- \' ?2 e* B3 |( m3 o  U) F6 L

7 p/ Y4 L4 q5 k    }. V% Z5 u4 ?" U, F; ~) {: A" Q
    catch(exception& ex)" [: D7 M2 O8 D! i% j2 N
    {' ^5 ]' Q- ~- N& N6 P
        //---- Enter your exception handling code here -----5 `1 S0 Z/ y5 _2 F$ B; O3 x
        errorCode = 1;
% p4 x8 e6 u) w6 ]5 W% S        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());; z6 x& g* W: `; ]6 U3 l+ X6 A
    }
6 ?7 n2 A' I  o! F2 T& A& P    return errorCode;* ?4 I) O6 X/ Z" Z6 z2 J- G' A
}
, J" H9 T+ \3 N" T$ S% F; E& V2 I. }, ^

* n! C2 k# B5 X# D9 w$ k说明:因为字数有限制,这里只贴出关键代码。
# W1 G1 m% \' L. L1 C& w/ J  ]/ B! A! ]. F" `: T; n' ?
7 X+ X& }- n, b# s7 V
+ Z' D6 j6 Z( J) F5 t
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二次开发专题模块培训报名开始啦

    我知道了