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

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

  [复制链接]

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

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

秋爱 楼主

2015-8-15 09:15:43

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

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

x

! u3 U) w/ O  V7 v3 \  o, M8 [void selectedge::initialize_cb()
, _' e" S' t( [8 B& P{2 H- w4 z4 X" ~
    try; H7 L3 }2 @; S, `/ S% r: {
    {
9 V: F3 |: L7 d+ n* y: p
        group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));
7 ~* Y, W# |0 U% u        edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()-             >FindBlock("edge_select0"));
6 x) L9 r7 i8 Q. x        expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()-       >FindBlock("expression0"));}
/ [, A! R" F  j1 a+ }& @    caTCh(exception& ex)5 E0 b3 _- D% i
    {
6 `7 v# g8 v& ?7 H* r! G. ~1 U, \        //---- Enter your exception handling code here -----
9 i$ U3 D! g- `        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());
" p2 r+ d! N9 j$ z% @- y! V/ X% M    }
$ ?* U+ ?; d& k2 k) A$ k; S}
$ w, c5 v2 E' s& y) `! h4 u2 }; N" [
int selectedge::apply_cb()& v% K+ V' r! y% \+ v8 C) B
{2 z: L! P) |. m: {& _) `  L
    int errorCode = 0;: S% X6 \7 i" U, ?: Q9 }: g3 w
    try
# K: G7 w5 r4 i% x/ q$ V+ @! g& @    {
/ R( y" ~3 z' B        //---- Enter your callback code here -----
6 E" p2 h. V! P. T# A) x1 f1 i5 }1 Y( c& r) L, A
4 T' l4 F5 b, @' y5 y

6 N( ~5 s3 W, n+ o4 S; u5 C                Session *theSession = Session::GetSession();' t( K2 G* V4 B# i5 O8 R  H" _% o
                Part *workPart(theSession->Parts()->Work());7 t6 @1 s: ^# k. H0 j7 `
                Part *displayPart(theSession->Parts()->Display());* g3 D6 `7 ~/ \2 V

7 e/ S5 [! c  b7 W1 u8 Z
0 Y! a  A4 C* N' h+ F
                Features::Feature *nullFeatures_Feature(NULL);" T( p( o" q, P7 ^& z1 g1 ^$ _
                Features::EdgeBlendBuilder *edgeBlendBuilder1;
( q" }& m3 N' H( o6 L2 a+ }  o3 Q                edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);
/ X/ w& x8 Z# N0 m
* p% _+ j; A! w4 y

6 l* l& d* M- L+ ]) U4 G# V! n                ScCollector *scCollector1;
5 L/ W$ n8 L3 h( W1 S5 K4 G) T                scCollector1 = workPart->ScCollectors()->CreateCollector();
' z3 J. _7 N$ x4 p( t
* ]- P! W+ C5 T& d  o

- j2 r1 s  f3 Y% ]' c                std::vector<Edge *> seedEdges;( d/ H7 x  M2 i; i9 h* I( T7 A, R
                - h) W; K. a$ y  A" e: R( x+ \$ Y
                std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects();       //获取选择的对象8 `  q4 y  [. o
                for (int i=0;i<selectob.size();i++)
5 Y& L* c* o7 v0 S% A                {
' }% D" [* f5 N                        seedEdges.push_back(dynamic_cast<Edge*>(selectob));
! G4 k( j9 D9 p1 @8 a7 j% \  }
. g7 A% |2 W* c4 s3 j7 _' s0 {
# J% B- p( B; Y+ a8 x  double dia = expression0->Value();            //获取表达式的值
1 ?6 V. A9 E9 B: k0 Y6 y- i1 q                stringstream DIA;
4 z. @7 ~, T) d8 {: z8 R- f                DIA << dia;
& Y" |3 |- J% \2 b
! b4 M% e! m) p( V/ O

+ E: n- Y. K" \0 X& |# S. O, Z                EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;# }# }( H) P! x$ Q3 i
                edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);
: J9 d( s) Q/ ]- P/ w
. @, e# @: O* b  }  f

. K" t) h- @7 t: g9 y8 s                std::vector<SelectionIntentRule *> rules1(1);3 j0 k% G! E4 I& b4 S2 j1 {7 x
                rules1[0] = edgeMultipleSeedTangentRule1;& I6 ~+ ?! w- L
                scCollector1->ReplaceRules(rules1, false);
* o, F! Q. y& ?9 Z% c+ I
  K/ h) S2 k( K$ l5 B+ _8 k

0 i1 x# o1 t5 q' Q1 m. {% k                edgeBlendBuilder1->SetTolerance(0.001);# j5 w1 |( R8 u% e3 z
) n4 `& m, F: e4 r
) |, ~) T1 G% }5 g- `6 N
                edgeBlendBuilder1->SetAllInstancesOption(false);' m& S' _( g0 s2 j$ A2 u3 t

  o: k: A9 U* a+ S
. L, {% L9 ]$ |. N- n1 ~
                edgeBlendBuilder1->SetRemoveSelfIntersection(true);3 o: {: c3 r9 K* o9 N; B

  L# k# i  ^: |( ~+ c% i
3 F' P8 E6 M# w( o! j3 p4 A
                edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);4 Q# k. ?* K& k) @

+ C& E0 V* K& Y" L

3 _; t: y: j8 h; \$ Q* j8 ~3 J                edgeBlendBuilder1->SetLimitFailingAreas(true);
) n2 g7 f4 a8 V( e! N5 Y% G! W0 U+ J- S9 Q9 W& r4 b1 h, o" y' P. n$ E3 F& U

# u( [6 A+ |" A6 [                edgeBlendBuilder1->SetConvexConcaveY(false);( t" A( Q6 q5 S. |0 f
/ ]7 k0 `* r) |' q8 q) d2 W
# i9 |# T- ~5 {
                edgeBlendBuilder1->SetRollOverSmoothEdge(true);
: ~( n& j0 I; h& v2 Q) Z8 |7 `" N& i7 O

$ N! |1 c% {- w+ H( p                edgeBlendBuilder1->SetRollOntoEdge(true);$ e% C$ c: X$ |# N2 C; g
3 A/ u; p9 n7 U2 r" I9 ?
! `. z7 p, t& x5 ]
                edgeBlendBuilder1->SetMoveSharpEdge(true);9 a* {, U6 O2 m

; }, i' T8 `/ O3 b+ T- [
% {- J; r% x5 X( y, r+ i/ K
                edgeBlendBuilder1->SetTrimmingOption(false);( w$ O' v, t1 E2 l

9 M  L5 J  Y. Z$ K
6 v  @6 t- |4 k) d7 d9 W
                edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);; S$ ?1 R, d( ]. q1 v. i! ~
6 n( {6 `* I3 a
1 {8 |7 k% Y' e$ A
                edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);
7 [! P7 z+ ?, ]. Z) S3 W& c* ?# B- P3 u* z& f* A$ z% O4 a3 k

3 n& @( m& d/ k" o7 J! C7 P                edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);  @. j# t3 T4 H+ n3 l$ Q# A/ f) Y6 F

6 e* r/ {9 W2 U/ ]. Q
4 `. N3 N# t/ z4 w7 I1 Q! H( n/ U( Y
                int csIndex1;% `) d( F8 I/ v# C
                csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
; `6 C1 v* s& S  Q. o* Y  W7 J" w! I1 m1 e

: ?, Q' s+ f, _+ v                Features::Feature *feature1;
7 }3 X/ t& M6 D1 w9 y                feature1 = edgeBlendBuilder1->CommitFeature();  I5 l1 o- g2 F0 a
/ T' Q9 W9 l) E% ~& B) k: ?5 _8 C
( E0 x0 |( @: R
                edgeBlendBuilder1->Destroy();
' b: L( |8 h: T/ p* L: h- [' ^; f7 @
    }' u  }- G6 E: i- v( i
    catch(exception& ex)# j4 n" h5 |1 b7 d! r& b
    {
+ P. J! r) t! N        //---- Enter your exception handling code here -----" d% E5 N4 r/ _& F. G$ R( ^8 S
        errorCode = 1;; M0 |! c) W- Q1 N3 B6 Y' ~
        selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());! b9 t: \; P- G8 d( ~* i5 w
    }( T& L& B9 m; [! }- q
    return errorCode;
9 m5 C2 ]3 c4 `  c}

7 ?1 j! X: ^2 J* H8 z/ X- n
2 I3 p: V" S7 ]# F6 \
说明:因为字数有限制,这里只贴出关键代码。
( x; Z0 l2 Z8 ~2 a% R6 ~4 S+ k0 p5 B( X+ x, _* }

$ D6 ~% u% l8 M6 T( ?  Z! }2 c6 N
& v8 |! T) y( q1 [6 l) ^- 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二次开发专题模块培训报名开始啦

    我知道了