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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
" T' j% A* q- E- N  w5 H
void selectedge::initialize_cb()
/ \6 O7 f3 w! y  Y$ M{
7 l4 M4 v2 }# h    try
! d; M7 z1 x: z7 j/ u+ F    {

4 L, u; Z& ?3 ~( F        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));  u$ o8 P( Z  Z7 E, _1 Y9 q
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
: m) Y( F& C2 t; y3 \6 C5 m        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
: q+ k" r7 W; w8 n. `0 ^7 _: b    caTCh(exception& ex)9 q$ Z7 f* [  I3 P1 P2 s  C2 i
    {
0 Z* X; Y, A0 _        //---- Enter your exception handling code here -----4 M+ @' u) U; [& o
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());: i- m! f/ S6 g
    }
$ a" V( _, N9 g}
5 l8 n8 j, Q; i6 M5 D- \6 m1 Q* Q3 J+ r; R4 J8 |" c8 I' G/ t
int selectedge::apply_cb()$ K" F$ e, B+ w; w
{
- n* y  X) D5 X; P2 V3 h0 j    int errorCode = 0;
9 Q9 y/ @& `1 H% m* L$ U0 ^    try7 _1 U! W9 ^7 Y, a! b" L' G
    {
3 ~, T! B$ n5 v" g9 ?! O        //---- Enter your callback code here -----
: n' L* n9 S- D+ {6 V, t" ?6 \' ~$ q" I
2 L+ u. H4 m6 n5 H' y: m: Q8 i' ], T  C; Z4 @- m
& M1 e" a/ U+ m+ C4 q! p& R* G4 T5 G1 j
                Session *theSession = Session::GetSession();, [2 E: B. P/ {& @3 f/ d6 h
                Part *workPart(theSession->Parts()->Work());
  Q$ L+ R+ a1 s6 \2 s: F                Part *displayPart(theSession->Parts()->Display());! A& @& L7 y/ V7 f1 [

. N- A  N, D8 ]; r, q" T/ Y5 n6 a

/ ?3 q* c$ Q5 T* C  |; J% d                Features::Feature *nullFeatures_Feature(NULL);
7 _6 |4 b) O+ {) L! n, t% ]                Features::EdgeBlendBuilder *edgeBlendBuilder1;
3 e, z# a" y( B( L! a                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
; L  W9 G$ p# ^) F% J+ }
  h6 L' n0 C: |1 }6 T- l( U
: {6 b8 e( r) A; h
                ScCollector *scCollector1;  Z% L: x0 n0 V
                scCollector1 = workPart->ScCollectors()->CreateCollector();2 y/ k, G8 W! p5 v5 W  K! T
" F: `! ]* P0 V- J' D: P
2 P$ U5 [3 j. x. H' y7 d1 d: @; P
                std::vector<Edge *> seedEdges;) f3 t! ^& s& B+ F6 _  p& E
                . r) ~9 P4 x/ `. h
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象2 Z: p& \7 P& O6 V$ t+ j
                for (int i=0;i<selectob.size();i++)
4 Y6 C" g6 {% a  Z0 [3 m                {
4 V, Z* D! \$ N* R! z" o2 O$ \. Y1 J                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
' V- M3 u* |% _+ s  }6 X5 ?1 L6 A) [" E7 j7 ?- T, _% C
8 V$ M9 v1 s6 n# l3 v2 E2 J6 m! b  r
  double dia = expression0->Value();            //获取表达式的值( u) Q) S: N6 h
                stringstream DIA;3 e0 P' t( }2 u6 a4 B
                DIA << dia;
  g2 A4 i3 T; x6 r
/ U2 ]; @, d- C& [, `

, v% q# x+ |9 b6 w+ w                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;1 n+ r6 L; ~' N) V
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
: t' s9 c1 t$ u' n! ^  K% i1 }7 J/ G9 U& ]2 V, K! `
7 g: z) |' y( L1 _- G5 t: q
                std::vector<SelectionIntentRule *> rules1(1);
4 v; K5 w2 }1 c0 m4 h5 y                rules1[0] = edgeMultipleSeedTangentRule1;! v' ]0 S2 z) B) |  L
                scCollector1->ReplaceRules(rules1, false);  U1 M; I- f& J7 L" w% x9 H
- ^, j! ?6 h; S) g- Z- v4 _
1 A( q6 J1 E! A# J/ }1 M6 S3 I
                edgeBlendBuilder1->SetTolerance(0.001);
' N5 }5 y. }0 e6 S9 l) D
- K6 _) b) R0 z" q  X6 ?- ^
' h4 p  _* ^4 x8 E
                edgeBlendBuilder1->SetAllInstancesOption(false);
. t! K& \( }  i$ {& [
0 g2 J5 k/ j! M1 S' w& ?

( u  n2 ^8 N' V6 f0 }                edgeBlendBuilder1->SetRemoveSelfIntersection(true);# [' A3 Y  M, M' j' ^. r; E
$ Q" P6 q0 y2 ]" r8 P7 Q

! {. a. D" Z! N9 ~# Q                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
; S3 l/ E# c) v& R; w7 D7 ]; g, H2 W6 N% {2 T% J6 p7 }
0 G. V, Z7 _4 t: ~( v* k8 A
                edgeBlendBuilder1->SetLimitFailingAreas(true);& t% y, `/ e0 }$ B; s9 t9 y

' l2 r- [* L8 \0 ^& w4 P
1 q) S# l) x. {1 X
                edgeBlendBuilder1->SetConvexConcaveY(false);
9 x  D  U, T9 a# [* C1 p' Y$ j- B) e+ e: o" N. K& c

! _. j: M7 z/ y: G; N! Y+ T                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
% _) G0 V; L; M+ s
) i2 Y* b, X5 L1 Z+ Z; B6 A# @; K
1 n! q6 y4 h7 W+ Y0 ?1 B7 z  [: N
                edgeBlendBuilder1->SetRollOntoEdge(true);  ^' }7 {2 q/ O3 N
( u* b8 }- z5 m- M

* I3 `; |$ o3 y/ C, B                edgeBlendBuilder1->SetMoveSharpEdge(true);* I' s1 \6 U: o. ?) ~" [
) c/ T5 E4 g9 u3 |3 |

' M4 M* E3 L2 y6 g! ]1 e( Y                edgeBlendBuilder1->SetTrimmingOption(false);9 O5 M# m$ t" u# T$ d$ w

4 J  N, `, @( u6 r

- l, \& u. L. w" y$ K$ d                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
3 h% I1 ^9 I+ x- u9 w2 L
: k7 e' P+ c' i9 R9 Q

" w) ?: H; }) B  G                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);$ N3 o, S/ {8 L1 A
# H9 [: e  R2 c+ ]
  X* A9 I$ D* m& f6 k: O. w
                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);
9 |% E0 g) j  U2 ]* y' Z& y" |9 o
) K( N' t6 c, ^) z
5 ?. q' A" U' h
                int csIndex1;& m6 ?  e0 U, V3 }0 |9 f
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());& @9 ?9 e5 }& i+ b% b  M7 @. g5 j

$ a( G% h3 }1 I8 K. }% Z
& I$ k7 T8 B2 s$ b6 l- x9 O
                Features::Feature *feature1;) [) J9 W! J3 h
                feature1 = edgeBlendBuilder1->CommitFeature();
  ^" A9 b, I7 t* h# ^. ]% F5 x6 Q) k

2 O# l2 h% ~/ D8 _0 e                edgeBlendBuilder1->Destroy();
# j* W' m6 ]$ p6 a9 E5 t+ J
, b. ?- e3 T5 r7 H    }
1 [0 t! _1 a" _! r    catch(exception& ex)' I, x  |6 X2 I% ~2 e( i
    {
: T  z9 W1 e; ?: v9 Y( z        //---- Enter your exception handling code here -----# l% b' S8 T! ?& |, ?
        errorCode = 1;7 b9 `3 b4 ^% Y7 V6 q% v. g
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());+ f. Q! G& J$ C1 z
    }6 t" x# b/ `4 U. q8 P
    return errorCode;3 ]  g3 d9 @( f8 {
}
. k' w$ c( ?* D( u' y: d4 Q

: Y% G: I+ j& V4 |3 p说明:因为字数有限制,这里只贴出关键代码。
' t6 X+ S8 t( x5 z. W9 t( h7 w: w" j% X$ y8 ~) Z" F

0 n8 w$ A6 V# a( ~& R

& K  g# E1 N4 _
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二次开发专题模块培训报名开始啦

    我知道了