|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
0 Q" B6 q+ |% i: Xvoid selectedge::initialize_cb()& z, E7 N+ e6 N. P, [
{. W# B0 {4 G6 Z; |: ~! y5 I! w
try3 ~& \* G. h& f) G5 ~2 X- M
{
. J' H0 v' W9 t7 F' [" u group1 = dynamic_cast<NXOpen::BlockStyler::Group*>(theDialog->TopBlock()->FindBlock("group1"));+ I0 ]: `$ _ ?9 O4 n/ V
edge_select0 = dynamic_cast<NXOpen::BlockStyler::CurveCollector*>(theDialog->TopBlock()- >FindBlock("edge_select0"));+ p$ _0 j( o |- G5 X4 V
expression0 = dynamic_cast<NXOpen::BlockStyler::ExpressionBlock*>(theDialog->TopBlock()- >FindBlock("expression0"));}9 _( s1 _+ N7 q k
caTCh(exception& ex)
* d% _" ^( T8 a4 m, Z$ U4 Q {
: _: j$ I3 k8 C: d //---- Enter your exception handling code here -----
0 J( E" m! X q- i+ Y% ?+ Y6 G6 D selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:dialogTypeError, ex.what());, E5 R4 R& e2 { S' W- N
}
( d" M) s- p' U7 `}
4 l n" v. s1 x6 X1 A) U( b4 v& }6 P: Q9 f4 ] u) g0 |! r( G8 a
int selectedge::apply_cb()& |# o/ q# A% A9 m A, v
{; q; _0 d" _, w
int errorCode = 0;
1 q2 A* K( {/ f3 ?; u; ~ try$ |- @' | H/ w7 x5 z
{
5 M0 _+ L! u0 @ //---- Enter your callback code here -----
# `& P6 ^9 u, p, s9 t% ^
- H L- ]% W% ~. A7 S$ D9 M
5 ^% `! u6 b, C, t2 Y+ V3 P! e6 G% I1 F" D
Session *theSession = Session::GetSession();/ p T/ a$ }, V
Part *workPart(theSession->Parts()->Work());
0 g: `! O2 }6 G' e% O) B* j* L9 n Part *displayPart(theSession->Parts()->Display());
+ `$ W* C6 D( e7 p
t, n9 m; n. A9 J/ d- I" n. F1 ]( W5 _6 p- }
Features::Feature *nullFeatures_Feature(NULL);7 W+ s+ `+ R- f
Features::EdgeBlendBuilder *edgeBlendBuilder1;
6 K+ Z8 I! p& [. z& K6 k% I edgeBlendBuilder1 = workPart->Features()->CreateEdgeBlendBuilder(nullFeatures_Feature);( [0 B+ X2 a1 V$ S% A* b
* a1 ^. @+ r$ Q0 x) h0 Y* Z' x! Q6 D5 j: p7 s' s7 W
ScCollector *scCollector1;, ~* e+ z9 |& k/ j8 d
scCollector1 = workPart->ScCollectors()->CreateCollector();; C( }/ I6 Q) I
+ o8 O3 ^, z% `1 I( C$ B( x
& O* P$ C1 `. V1 A3 X std::vector<Edge *> seedEdges;4 [1 D/ x: O8 u ^! c' h3 B
* K2 \# R' u' Y- v' @0 ] std::vector<TaggedObject*>selectob = edge_select0->GetSelectedObjects(); //获取选择的对象
: o0 U4 L4 V! O: E8 m/ _4 d! { for (int i=0;i<selectob.size();i++)
B8 a! T9 Q7 k2 y+ d# Z K {6 S% d) [0 _6 c3 x7 w$ z
seedEdges.push_back(dynamic_cast<Edge*>(selectob));1 K" ~- F" A, e+ R
}
4 E3 p6 {5 B! `: P2 |* u2 P
9 S# G1 Q6 K8 n. i* g double dia = expression0->Value(); //获取表达式的值0 G$ k# V f) O3 r, V
stringstream DIA;7 x5 d" o6 P5 d8 O% Y
DIA << dia;
& r2 f2 ^9 H7 i5 N
) m) c' i q3 G0 D2 o0 t& U* K1 G% s1 e: i
EdgeMultipleSeedTangentRule *edgeMultipleSeedTangentRule1;6 x0 ^$ S9 A# i& b- |+ D
edgeMultipleSeedTangentRule1 = workPart->ScRuleFactory()->CreateRuleEdgeMultipleSeedTangent(seedEdges, 0.05, true);5 }4 ~: F% J# s! J
. g2 I# F4 J" j- H+ e- t" X
. J7 k5 a7 `7 e+ J( t7 P- ^2 } std::vector<SelectionIntentRule *> rules1(1);9 U: F7 G# S# C6 w
rules1[0] = edgeMultipleSeedTangentRule1;
( B2 e8 r; E! t I scCollector1->ReplaceRules(rules1, false);
1 f2 U7 Q" o, K, U) n( F# B
7 E( Q( [9 y3 n: E0 L& m* e' m7 ~' L: F: p
edgeBlendBuilder1->SetTolerance(0.001);
: I* X6 ]2 Y$ a0 `+ g# G3 _' y4 B, q: \. A8 U
3 A$ J( p! ]/ k# r
edgeBlendBuilder1->SetAllInstancesOption(false);
- {) p+ h' u3 g8 q
4 O" f% D P2 S" X0 _5 f+ [* W2 n' C1 P. U7 w l; P0 o w
edgeBlendBuilder1->SetRemoveSelfIntersection(true);3 J" | o* E/ ^, M0 v1 R, N% x6 [
) L: @5 m m; B1 o, z+ u
8 {$ m% u, n' [2 R6 n | edgeBlendBuilder1->SetPatchComplexGeometryAreas(true);% T6 [. Q9 K: Y, h
% M" f9 D! R7 N9 l* ?* |% E- d7 Z- [$ f* c$ ~0 H6 K. \
edgeBlendBuilder1->SetLimitFailingAreas(true);
. q3 _5 F: F8 ~( L" H8 l$ ~& S7 f( l9 m$ I, R" _
/ S* x% E% ~2 D2 x# V
edgeBlendBuilder1->SetConvexConcaveY(false);
5 c( E1 ?8 W0 X2 ]% E8 R: g! D% k. ^' ]+ Y/ S; A. B, L
/ ~8 n& Y( k* A1 _' `+ h
edgeBlendBuilder1->SetRollOverSmoothEdge(true);, z3 f- o+ d6 q3 F' B; {! @
: p8 v- s' I4 t2 x. A: z, n$ G1 v7 a9 p w
edgeBlendBuilder1->SetRollOntoEdge(true);
. u9 E0 ^) Z) o8 a0 u9 e* _. A# ^2 R4 m; ?" p3 L
8 o! c5 ~- M! v& ?
edgeBlendBuilder1->SetMoveSharpEdge(true);8 J# s2 w" @9 `, m- k5 n
4 y; W2 l7 m r$ K% {
- a2 W5 L- ]+ y; Q edgeBlendBuilder1->SetTrimmingOption(false);2 Y% ]9 M9 u2 h$ B. d. f5 X
! c, n+ P# i" E( Q: p- Y
1 t, u+ N( {/ X0 Y& _
edgeBlendBuilder1->SetOverlapOption(Features::EdgeBlendBuilder::OverlapAnyConvexityRollOver);
$ s- K9 E( U V5 U' {) j$ ^0 _( L
0 M# H E' p1 o$ K
( w G0 p( d& I# h+ ^, i m/ b7 e edgeBlendBuilder1->SetBlendOrder(Features::EdgeBlendBuilder::OrderOfBlendingConvexFirst);: y. V7 s: Z# b
) W, C6 _# u3 [' l
$ @0 r/ g# B, E. I3 E. {* b
edgeBlendBuilder1->SetSetbackOption(Features::EdgeBlendBuilder::SetbackSeparateFromCorner);- Y% X7 Z2 j# Y. C! p/ K
0 v7 N9 l/ Q2 q, s$ f- u
' T: Q v! B- |% r9 T
int csIndex1;$ }" A+ t/ [& L1 J) G/ ]
csIndex1 = edgeBlendBuilder1->AddChainset(scCollector1, DIA.str());
' F) ?) {6 e. ]8 h- U5 Y( p4 N, m$ O l- ~0 W( T
/ y4 s! h% y/ r' ]# n
Features::Feature *feature1;
3 O8 A% u0 x( `$ e feature1 = edgeBlendBuilder1->CommitFeature();% o' }3 P6 q. z$ ?% m9 t" ~! ]7 b! ^5 f+ z
# [0 K; D8 B$ g4 J- y& B+ O/ Q
# g2 J* {; F' E. F, J, o+ R edgeBlendBuilder1->Destroy();% R+ l% e1 m: [1 x
1 M4 o0 w) m: r9 R4 E$ O* Y
}# f( i7 H' m6 j8 Y7 m# L
catch(exception& ex)
5 W2 \, X# r6 F {
6 D! M. J- { N* I/ w! o3 e //---- Enter your exception handling code here -----
. z6 t( B6 B# J( A* s% ` errorCode = 1;/ f! \& p7 D' h5 s
selectedge::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());! s; o1 m! I. `& w/ @; Y& i9 R C0 D
}( V# D& I" y* [0 H) _% M
return errorCode;
( C( h5 B Q3 o; S; u}# R: y$ L% v7 r
3 N' E% ?) x, D) I+ w. U* s) F说明:因为字数有限制,这里只贴出关键代码。& F3 R M6 G. i+ T6 ], {8 z# T. J
$ W3 c. v0 P+ _2 Y2 @( k1 \3 Z
, r e8 f+ y, |9 A! e! J( U' k# _
|
-
评分
-
查看全部评分
|