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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x
: x) e8 `: W- T$ V( f5 y
void selectedge::initialize_cb()
3 _7 T5 \% l6 t$ J  o0 D" e{+ d2 i  V( B. [0 S$ l
    try
% R8 c, I4 @! y    {

; D" P4 Q4 ?- z+ E- l        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));6 O3 @$ @! N4 E9 w: F
        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));5 \7 b: s4 d7 Y; h
        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
3 y. j8 A% z. s; H- U    caTCh(exception& ex)+ P/ q7 J$ P- Y; B+ W( q1 d3 Y( n2 i
    {
; \' T4 X6 a7 H# P# k7 j9 w        //---- Enter your exception handling code here -----
3 b1 U- m& i/ ]$ i* y7 z        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());+ v9 ^9 o% f7 o/ T7 a
    }& C: l$ K$ r) ]
}7 H* U- l0 T! h4 t
' f7 }2 D4 O) T$ k+ O1 N6 z
int selectedge::apply_cb(); R$ U  u9 [) O/ v9 e0 h# S9 y
{3 P5 T/ e4 a6 H& r& j
    int errorCode = 0;
' ?$ n' C; c1 ~/ K    try6 R" {7 K1 u1 h: t5 V: e
    {
# p$ ^# n/ p# }: N' k- ]        //---- Enter your callback code here -----: E+ o+ F3 Q1 ?# L2 ^. k- _3 g
3 m6 z8 `/ z" z2 W  S8 Y
4 a' y/ [3 |/ N' n1 {
2 ~; \6 {( ^) }# h& ~3 L
                Session *theSession = Session::GetSession();
) H1 I6 p' q: N) N  K* y) N                Part *workPart(theSession->Parts()->Work());. z3 v% O2 P2 U7 l9 q! ^7 f
                Part *displayPart(theSession->Parts()->Display());
3 z0 q4 \3 \+ X* y% K0 a0 S7 o1 E

1 s- ?# ^4 G& e/ s0 O                Features::Feature *nullFeatures_Feature(NULL);
% c- o3 P- K1 ^7 K4 V% B                Features::EdgeBlendBuilder *edgeBlendBuilder1;
8 h" B8 o8 ~$ H  n' z) w6 C' S                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);& N/ l7 S2 K3 S/ f6 h

/ S: @1 [1 l6 v* z

! _( c$ h) R; v0 G3 w% k- ]                ScCollector *scCollector1;7 ^: Z" N, r. Q
                scCollector1 = workPart->ScCollectors()->CreateCollector();
) O! _3 n: A! ?7 P6 n) I* J4 d4 y9 F( e7 q# l% _

$ f0 W- J0 D; U# j, r* Q                std::vector<Edge *> seedEdges;
/ {% S- |4 Z# l# e1 W# r                9 s: l4 |. o3 m" ?
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象
3 ]7 o/ c$ h4 O  _                for (int i=0;i<selectob.size();i++)
( H$ S  X! A3 w7 L% U                {3 e' T6 F9 A4 q+ T- n
                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
9 f. t6 F0 E9 b  }4 ~. W+ j6 }& O+ l* p

3 O0 |3 b& L) Z( V9 S! m# E  double dia = expression0->Value();            //获取表达式的值  y) x& \4 `6 g/ j6 y; ~8 g
                stringstream DIA;
+ w/ D. h- w# H/ u' C& |# c4 c                DIA << dia;" h$ M/ L! g/ g3 x, q
, V7 _, e/ e; X  R
3 m6 b2 K5 L5 g2 r% x6 Z
                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;7 a$ v5 E8 ~7 w2 i% |
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);! S; T) ?, {8 g3 |9 n: a

1 z! y) |9 j4 A6 J5 v/ Y
! `" [2 a1 r1 R9 J7 A
                std::vector<SelectionIntentRule *> rules1(1);+ q6 y5 ]+ ?4 D! V
                rules1[0] = edgeMultipleSeedTangentRule1;* x3 b- l: v( I( J& y3 I
                scCollector1->ReplaceRules(rules1, false);  P/ b& h& a; T9 u# L: D

( R) q! a$ k9 [- ~, u- {# }
/ X- M9 j4 q2 M: R# ]6 }
                edgeBlendBuilder1->SetTolerance(0.001);
% b+ `# {+ k! {+ u- M2 e% F% B8 D3 h  y$ h9 f

( p3 y% }4 z9 i! l3 e/ F  n  W                edgeBlendBuilder1->SetAllInstancesOption(false);
% f) Q( `0 H" h4 t1 {1 q7 z0 N* V& u1 ]; i& _

/ }) ?) r3 R7 N9 b* ?$ i4 j" P                edgeBlendBuilder1->SetRemoveSelfIntersection(true);; y$ X# f+ B/ ~4 B% j( f
. I% `' L" u% W& Y1 w
( S; Z' {8 Y3 |2 I* P
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);
/ L% f& N+ m2 l  [) D/ Q2 ]2 q1 W. |
8 _3 L+ i& }4 k! I2 v% N5 l4 {( j
7 B/ C! n+ F2 P2 L% q9 x
                edgeBlendBuilder1->SetLimitFailingAreas(true);
- k/ g- @2 t6 C; Y% `% Q+ F. Y" \0 {/ ~! N3 R2 q+ L( d; Y

1 C5 x' ~- ?+ t9 v1 Z                edgeBlendBuilder1->SetConvexConcaveY(false);
* F- L3 O2 Z; p" j) f( e% O1 b, Q% ^. I; q: s& w2 V8 A6 F8 u! ^

  {; |7 e+ j6 n                edgeBlendBuilder1->SetRollOverSmoothEdge(true);+ P3 E3 I8 M& e
8 o9 {3 v- O! W3 ~4 s& R' Y+ k7 ]& G# }
1 p. l) m! W3 R4 X) r# L3 J
                edgeBlendBuilder1->SetRollOntoEdge(true);
6 a. W! U$ A1 D  z, e
- F5 Q( P& k6 L$ r( y
5 c& Q" C- b" [4 V
                edgeBlendBuilder1->SetMoveSharpEdge(true);% C4 N! J5 @( r3 {
8 Z6 Y) o/ `# \0 D; h

  ?8 j# J% b" o                edgeBlendBuilder1->SetTrimmingOption(false);
/ I, q, J8 Z0 d% E* j; I% h3 s9 i  W/ Y: O
5 @% i7 t8 d4 ~9 p# e& W
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
# d- m4 P3 {: j7 }; A
; w2 [( q% \! n) R% v

/ ^# H% v: W: b# e" d& ~                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
- O# x. G% W$ e  \7 h3 w# q
7 \% l. d0 w5 L$ E) ?9 o# U

1 h4 Y, b# o# U2 `9 U7 S8 z  c                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);  I$ ^& _$ s* B- y* J0 R

! T; k3 U6 c: s2 Y  [+ O

1 U8 m2 S0 X; s                int csIndex1;
  Y' z. W5 E7 T1 R                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());* T3 |3 l0 L2 V7 O

: z/ ^- _3 [) Y9 i! q
+ M' [2 N7 n# X6 @
                Features::Feature *feature1;0 h0 B4 ]/ W) I- Y6 S$ W
                feature1 = edgeBlendBuilder1->CommitFeature();4 H8 \7 ^3 T0 Z6 ]" P+ X) L7 N! q
) k+ q. w. Z1 X9 q
) Z3 i) H4 k5 y( B
                edgeBlendBuilder1->Destroy();
1 s& `- b$ C4 m+ j0 c. J
/ H0 i' G/ Q  V    }" |, w9 H: ^) H  Y0 F" ~/ B
    catch(exception& ex)# i! Z& Q0 T' |5 s  J5 O
    {
1 a. w) y! x( U; e. L        //---- Enter your exception handling code here -----2 p5 P5 e$ I$ q" y& d1 X
        errorCode = 1;
" e9 h9 x! G( s, c! D: T2 v& @) G        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());5 V& b5 [" w/ P6 v( K" h9 i" {
    }2 Y, J# y+ C- Z4 ?0 D; ~; y
    return errorCode;
6 |& F, P+ b3 ?' z2 ~) [}

1 O+ n1 Q9 Q$ a: h8 ?4 h

2 A" m; y6 `6 ?6 _. \说明:因为字数有限制,这里只贴出关键代码。
5 X, d! X+ x, l$ x" m7 P- Q
2 \' E: q. p+ d2 }" @4 b; X0 O% d- M* f& K$ S0 q8 Q

9 d6 B. V. v# j$ \4 ^9 i& C
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二次开发专题模块培训报名开始啦

    我知道了