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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

  _, s$ A' F1 _) a5 x* E  ovoid selectedge::initialize_cb()" k, `' _  X) p! v
{
- I# F6 j9 }) _; P1 L8 S, g    try# ^$ n- k! O8 k% A5 W7 L$ e
    {

: l* q" B' m0 W" M6 P' e3 M+ B$ _        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
& U2 R7 [; Q! [# q        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));% ?9 N( x  O, C: g: d
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
4 j$ t. a1 `' y/ E% B, w    caTCh(exception& ex)5 H" h/ Y$ Q5 m, p
    {4 D- J# r3 Q+ R1 v
        //---- Enter your exception handling code here -----
0 S, ^% j: [) p1 R, x7 M        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());# k' e; U. f, x8 M
    }: W7 q6 @6 Z- K# ~6 g
}
) ?" \2 E' `% c/ n. W( m/ s3 o4 K9 U5 \4 ?3 B1 d
int selectedge::apply_cb()/ B" G% g7 p+ k. g  p& y! A
{' R! y+ _" |3 e$ b7 v& ~7 z  s. G
    int errorCode = 0;! \; G8 g  o  s5 U. a; ]( g
    try, X! x1 I' |/ F
    {
; H$ J: e  D, m- J& N; v        //---- Enter your callback code here -----) X! ?, b5 Z. Q+ v, c. R) B
! k) w) [% T& j( a
' L3 Q0 t; Q5 O: H8 s3 C  ]5 U9 m
; \# _' B+ [$ g" h/ j; B0 h7 y
                Session *theSession = Session::GetSession();( B% b* M1 H9 ^3 T0 s' z( i+ k1 Q
                Part *workPart(theSession->Parts()->Work());) u' g5 l: n( J4 [9 u
                Part *displayPart(theSession->Parts()->Display());
* @3 l3 h) P3 D! L3 E9 [$ F! A% N, T3 |
, M  e2 m" g3 H, I. {& ?4 {8 h
                Features::Feature *nullFeatures_Feature(NULL);4 R7 a7 q1 ~' D" z. r- Z
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
7 S! z4 c! U1 g, C+ r" O                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
5 b) c: A3 k$ B4 ~5 D
0 y( C- a: k0 k; N

. t7 [/ x7 {- V4 }, J; b) O                ScCollector *scCollector1;; L3 r0 w* W$ y( s
                scCollector1 = workPart->ScCollectors()->CreateCollector();) s& L* N, _; Z: u  ^

1 D0 j- }- i8 v3 G7 F% n

  t$ Z2 o3 o  b9 m% S                std::vector<Edge *> seedEdges;8 z1 s6 `% ^, Z& p
                - V3 e# r  _# u/ J: o# w3 S7 c
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象' p- z  M' M* D% E" O3 `  F
                for (int i=0;i<selectob.size();i++)
# z( {# ~; V4 u$ ?$ Y  U. r                {
$ e& b, L, Q# x, \; q                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
) o. e0 l+ H& v$ e  }7 _! D& L8 ^6 f% T
7 Y* B3 q# y1 P
  double dia = expression0->Value();            //获取表达式的值
4 A& {6 ~1 e4 M' T: v                stringstream DIA;5 T2 B+ ]" W* j% ]: ?% E$ @
                DIA << dia;* |+ h+ r) @; K  T/ U6 r

8 z& J2 C% o7 j( @( K: J+ Z

0 I8 T7 W: r, Z9 Y  _* }                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;1 z: B, _! S% {7 ?4 D% m. V: }7 c: O
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
8 g. D" Y8 ~) B, }! J7 }# U
  R3 `% r% H5 v& l1 u$ U

8 C/ Z" p6 X9 \% ]                std::vector<SelectionIntentRule *> rules1(1);$ A( [7 c) m% d7 X) X
                rules1[0] = edgeMultipleSeedTangentRule1;1 q( V+ G  z1 {/ N
                scCollector1->ReplaceRules(rules1, false);& k6 S/ Q' E- B, i

" v" g* M$ E/ {
0 _/ A1 M; e! O/ k2 A9 R) ~; d: m
                edgeBlendBuilder1->SetTolerance(0.001);
# j; P2 m! O5 o! @/ l+ Q9 ^7 T* q1 n% T1 V& B* f

8 @. z: v% M, s+ g- E                edgeBlendBuilder1->SetAllInstancesOption(false);
6 w# q' L' o4 o: g8 S- X+ W* Q. v
. ~* b/ I/ v5 A$ j$ _& y) r8 V3 K

9 V% p- e8 \2 K% Y7 ~( N! C                edgeBlendBuilder1->SetRemoveSelfIntersection(true);
# U# z2 }* h8 V% ]  b+ S% P
6 K$ O& b+ l! l

0 o3 Z8 B3 G( O                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);. h: Z% d  m7 k1 N

: ]$ l1 s  ?6 q5 G
- G& i, f) j4 `, z7 _5 [
                edgeBlendBuilder1->SetLimitFailingAreas(true);
6 Y" j) t) z2 a& e/ m+ Z' ~4 i% f, `& \! E$ s
' t1 g# q6 d7 y/ `
                edgeBlendBuilder1->SetConvexConcaveY(false);) x+ H9 _7 g3 c- o4 }6 k  w; o
' o  m8 x( B. D% D

6 u  r, p1 V' F: U0 n                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
/ p! j6 @: W8 s7 o! C' ?
+ ^0 R' D1 Z) ~( y3 `1 g9 D/ O! C8 e

1 t' N9 M' A/ K1 ?! c+ d8 }. k                edgeBlendBuilder1->SetRollOntoEdge(true);4 s: T8 Z4 ]) r4 x( L
. r5 T8 Z7 ]" b0 u& ~5 b9 E
2 O5 B4 i9 D7 c
                edgeBlendBuilder1->SetMoveSharpEdge(true);# |  @- R' W/ F$ E* Y. U
8 {4 i# N' D2 y) ?! I3 N# G/ s

7 U; L$ F! n" o1 `- u6 D                edgeBlendBuilder1->SetTrimmingOption(false);6 Q1 i" s1 P% a- {* ?+ S! k

# Z1 [% C+ ]# R0 D% Q. \  g9 D0 v8 [
( n* u2 v! W- I& Q* \) Z- G$ N9 p' P
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);4 E& F  B, @# s' \: J
1 _" t9 M2 D# ^* U+ M: P0 w" {
: d5 o. {- ]0 Y: K: v* z
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
9 Q; Q; ?! N$ C$ R4 S9 u5 G: j/ Y% U8 R# @
! j9 P. [- C! j  e  @/ a6 c
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
* Y& q0 K0 c- N7 W/ f. x
+ X# l/ n3 P) W
8 ~" d: V8 w* e: ^0 w+ \: k
                int csIndex1;4 z2 Q# O+ Z0 v) n
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());! ^' b$ G: Y2 N4 u2 O/ w6 ]
' K- J( f: w. c3 M+ v
$ s, K) y; j) E% |6 E, Y* u- I9 @
                Features::Feature *feature1;
+ A1 K) e' P, Q" D# z5 J* E                feature1 = edgeBlendBuilder1->CommitFeature();; b* P0 C, a' L0 _: [" v5 f0 V1 o
' ?4 P) Y4 T! E  G" e: z6 m6 Y

1 y+ ]& ?- F0 T  ^0 t3 q                edgeBlendBuilder1->Destroy();
( w" r5 W% C8 i* d5 Z' C9 d/ m, `5 F  j9 {, [6 i+ M1 E
    }! @' x/ A8 ?) R# @
    catch(exception& ex)2 I1 U1 g' |# a$ E2 n% \" U/ B
    {/ v' C5 _4 j% ]' l
        //---- Enter your exception handling code here -----3 J3 T0 L; W) a* u6 i# _+ ]
        errorCode = 1;* @5 B  A* m3 l- u) Q6 s: K
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());3 `. S8 K1 o. S
    }& D& N8 R5 e! l0 T
    return errorCode;& s" t+ i/ k# d0 s3 @. Q0 ^
}

5 ^3 [  Y: R* p& J0 k! |1 _

1 j$ s7 ?$ F3 Y3 ]' ]3 `7 s说明:因为字数有限制,这里只贴出关键代码。' H! F/ H0 L) J" G
9 ^- |% ~& f+ s6 e3 n" ]# Z
; }! @6 T' o/ v0 {) d- k9 o
# r- g: ]2 g( d- f/ U
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二次开发专题模块培训报名开始啦

    我知道了