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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
1 a) a' e4 H2 A) y: M) Q
void selectedge::initialize_cb(): V" C9 b$ i& J: E1 Z, V: C% D
{
& J. V5 K3 r, {    try
4 X9 x2 ?3 l+ D+ h: V    {

2 `. z5 a$ K- m6 ]& V9 K3 }        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));0 r5 i" G7 P! g; D4 k& r
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));  N6 c3 E' R) g/ a2 D' V- j
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}& ~) h5 z2 R0 N) d" X( p" j" ^
    caTCh(exception& ex)
% E1 Z- G0 t7 D6 j7 R) p    {  E, z8 |' j, Z$ P- W
        //---- Enter your exception handling code here -----
' c& k# ]. k0 @$ ?: Q- \. Z; ~        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());2 C/ u& Q: b) V4 Q" p( m9 d/ }
    }
; [3 n/ Q4 U( q}* L/ Q+ M8 l1 S$ W! k6 r
3 c1 B$ c8 F; D
int selectedge::apply_cb()( f* D9 e# w6 j# g1 z
{
; X; A$ U" e. V6 Q: f% q; Z    int errorCode = 0;: ~2 n* q" E+ y2 Y
    try
9 E$ }5 r1 X2 K' J$ z6 v    {4 T7 s& G, I$ v! i* q8 e- M0 g+ F
        //---- Enter your callback code here -----3 k+ U0 |( y* f4 P! P* B+ F; d
5 x. O7 e/ w7 q$ x2 q
3 T8 s2 H# ~7 a+ W
7 U* m1 w+ S8 c% v$ s# s
                Session *theSession = Session::GetSession();
7 o% X" t* m0 Z                Part *workPart(theSession->Parts()->Work());
# H' e, K+ ]7 A. x- F7 u                Part *displayPart(theSession->Parts()->Display());
3 s* l& m# B4 @5 b4 d9 T$ A* }( ~
  O& @$ R: @# U+ U! |% H( J& [
7 z( z6 r- [) g& o8 V  e( _: i& f
                Features::Feature *nullFeatures_Feature(NULL);
5 e/ i% H" y5 C8 S1 j                Features::EdgeBlendBuilder *edgeBlendBuilder1;4 Q2 s5 `  e4 @# R
                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
& J4 O% c, ]- W1 s( n& Z/ |4 N1 b
3 _2 Q0 b1 [( B4 a% S. |+ w
7 w4 o1 I% a: w9 Q
                ScCollector *scCollector1;
4 W- t$ C$ H7 ~% z) d                scCollector1 = workPart->ScCollectors()->CreateCollector();
! |; k! `* Y5 s$ c7 m3 E) X/ {# w) T9 a# }  a" ~
  x, z9 `; J% |' T
                std::vector<Edge *> seedEdges;
8 o" Z3 d: U  {; E7 \                + Z+ P! d$ {; l2 u3 i& l9 S3 D
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
9 l$ W/ o) C& n/ m* ?                for (int i=0;i<selectob.size();i++)9 L+ P3 B7 b9 D0 _
                {7 _  Q0 a8 c0 y7 G* \* k. `
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
7 ~5 g. I; H; W9 g  }: z9 q9 I$ q. J( v+ |! Q
% K- E% ^+ n/ O8 w1 t* _9 D
  double dia = expression0->Value();            //获取表达式的值+ ]* B5 P% ?+ d/ |# V1 m
                stringstream DIA;) y( Q) x2 C( h3 V; t% A$ x( K& U1 j
                DIA << dia;
7 g4 \' E0 ]" Q: x* }. e. @: z  C9 n; M7 {9 l2 F
: }% `7 j: j$ o) r
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;2 e: P8 q- Y3 Y
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);6 a2 J. _- M! g/ f! o  u
) v" w) z3 Y2 p

. C" F" o+ N' a& ^                std::vector<SelectionIntentRule *> rules1(1);1 F% w! y3 H) Y. \  x
                rules1[0] = edgeMultipleSeedTangentRule1;0 \& x% m2 I- b9 O5 O
                scCollector1->ReplaceRules(rules1, false);
: j) ~; E  `8 P+ I+ y' W
. Y6 t7 z, a' p' r4 G% Y8 M9 Q

, W+ d- W8 O9 t                edgeBlendBuilder1->SetTolerance(0.001);
. K% }. Q2 \3 }2 p& n
# y4 V0 K, W' U
) E* W+ v' Y5 ^/ o& v; \$ S& J
                edgeBlendBuilder1->SetAllInstancesOption(false);
0 ]2 P7 P  |9 a2 O* C/ L( u+ @& T

3 P( \: L4 p4 ~% F2 V                edgeBlendBuilder1->SetRemoveSelfIntersection(true);! v% Z/ V  T, `( G* \- q' H
+ K  f$ f$ f, P1 q' f- l6 l. R

7 t3 E7 L1 A7 l% u                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
6 P5 ]+ ^2 A8 {' B5 o& p+ ~$ U5 e1 V3 _, c) ]. o* V

0 B/ u1 ?  z$ O1 H( X                edgeBlendBuilder1->SetLimitFailingAreas(true);
" {- D4 X* m) d- Y( q& L
' z" C+ s3 K: q, K. x8 V) U
( K$ H, s3 _/ ]0 ?' u" \
                edgeBlendBuilder1->SetConvexConcaveY(false);  G$ K; t: @' u$ U
4 v9 _7 N  \2 t$ d8 G

9 p3 R  Y. L6 Z6 ]0 K/ Z( X, s7 |. Z                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
5 P7 ?6 ^: I* o) i
6 f; M5 l3 Y5 V, o9 l
2 t6 D4 I$ q4 i0 _, i$ i* q6 r
                edgeBlendBuilder1->SetRollOntoEdge(true);4 d: Y9 P: n9 t1 _

& f" n; v8 C: f* g3 g: p0 b
; M% n5 o& j: J6 M+ T0 u
                edgeBlendBuilder1->SetMoveSharpEdge(true);
5 ?3 ^$ ?1 k4 [9 q! w  l1 ^9 w0 d

. h, a; H$ D7 _; c                edgeBlendBuilder1->SetTrimmingOption(false);+ ?8 ~- `  z- @1 j

" {1 w2 p& f+ {8 `& r' K0 a  p

8 C4 Q% ~$ S" O' M                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);* g7 t& I9 G8 n/ y5 ~# X7 h

6 C: y1 `$ h' C- f; g1 ~, o. K

, i. S( z, p8 }: w( H2 s; I; B6 }; e. F                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
* d  O4 c2 V5 Y8 P
( @! r, `" I  V, A
1 J3 t* K+ S/ J: c, f6 @- I
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);0 Z, w7 G) Q6 o& ~. B+ @9 z
2 g6 a0 L7 S8 I
4 B# D- _( K4 k8 ~& q
                int csIndex1;
1 V6 T; i/ Q! A2 V9 H- w1 D                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());9 G+ Y5 z) Q7 F3 B# e8 e" J
  J8 v! ?% Z, ?5 u8 y# _/ ^

* ?! S- [" r7 h4 Y                Features::Feature *feature1;$ w. P; |2 ]4 m9 z* F6 @/ p
                feature1 = edgeBlendBuilder1->CommitFeature();8 Q' Y* ]  l$ S8 g$ b: P
! L" W/ p4 H, Y/ b3 j6 H4 a( M/ }

& O4 a8 V0 w* _0 v                edgeBlendBuilder1->Destroy();
  P) a& K, i: u7 M$ z
9 x8 x0 W$ W$ W9 N( Z% v) X    }
- @. g1 P4 m* H1 N5 N    catch(exception& ex)9 u& u2 A: N8 g3 Z: e# A
    {
# a+ u+ N# l- H) U0 x2 l        //---- Enter your exception handling code here -----
  i; h0 J' _6 x9 ~/ P        errorCode = 1;
) V" @! x/ ^0 [/ ]* D; T; e        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());3 ]! j2 W& p. V% \3 P$ y5 c
    }& s4 J+ S& L1 X% \- X1 x
    return errorCode;6 Y3 N% z/ e8 [% n/ r* N, K
}

/ E6 S- \$ F# |2 O2 X2 g
4 d) t+ l% f, p  q
说明:因为字数有限制,这里只贴出关键代码。
) t: {/ M: S6 p/ X
/ p5 S( }4 K* u  y  `5 X# E: ^  A* L; p6 O  Y
: H& @9 ?3 M. o
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二次开发专题模块培训报名开始啦

    我知道了