我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢! I- O" ~$ e; y2 r: X; B7 n
发生器的代码如下:" ~3 M0 F3 B$ G4 h4 n- V
/**Custom Code*/
/ u. m o& a5 n7 B/ _: W
0 j3 m$ j8 i- F# b/ o, t" gObject current = ownerobject(c);8 c* o; k! X* k$ f5 t4 o
Object item = param(1);
5 Y; k6 C* x. P6 y: ]5 p) o1 O! q# I, Oint port = param(2);
' f7 T8 T- b- \) v; h0 ^ r5 n+ O1 p4 H% c7 D$ N; G+ e
Object involved = item;
8 T5 J& }. W) \" U% v2 J$ }1 E4 \double x1 =180;# ^8 A% ^* a3 J4 I
double y1 = 0;- m6 ~, N3 Y& L w% O8 ]
double z1 = 0;1 W0 i. b2 t9 m
) P( i: x7 M2 S- x# l. H1 _
double x2 = 0;
: ~; J/ d. F4 }' h& \$ ydouble y2 = 0;6 o4 C, H( q2 e! j0 e
double z2 = 180;2 G3 r- j& U+ q: E$ G! B
3 G2 c5 q( Q/ ?' ddouble x3 = 180;
" W- @+ B. C* Y9 ^- f7 Mdouble y3 = 0;
/ G6 n9 Y2 s/ }9 kdouble z3 = 180;
" t( o3 S- b) Q, g+ p0 i$ Y5 V* y
6 a( \. T6 s/ l( t6 m' ]double x4 = 0;8 O. z5 l* h% Q6 B* b
double y4 = 0;
1 i* `3 c- [( y) F$ _. Ydouble z4 = 0;! |7 o) K3 ^* l3 `- \( G
$ f2 Z# P! U, D: {
double randomVal = duniform(0, 4);7 m. t. S4 q, S: p& K4 s
if(randomVal < 1)" \; v9 E1 i; ~" d# e/ c2 N
{
0 f1 y! {0 z) j, ^ setrot(involved, x1, y1, z1);
0 i2 T8 j" v$ Z3 a/ }3 W! r8 S setlabel(involved,"Rotation","xRotation");' y8 V4 G: d5 c2 ]5 S* G. h" m
}
6 v; a' n3 ]- e: Q% i. ?( j w1 xelse if( randomVal < 2)
% P) }" K1 |# V! p" W, e6 y! p{
& M2 ]+ C2 O9 M/ u W setrot(involved, x2, y2, z2);( Z2 [4 s9 R% e& y+ M9 x
setlabel(involved,"Rotation","zRotation");3 a3 e% Y% L$ S& b
}
% D1 K% o& M1 K3 Gelse if(randomVal < 3 )6 _/ d" }+ X" x0 k8 e
{' |5 c9 c( d( V7 u+ `
setrot(involved, x3, y3, z3);' u, v6 q# ~( w0 o/ u, a
setlabel(involved,"Rotation","xzRotation");0 R' u/ s9 J+ ~, q: L5 R
}6 J. ~9 Z7 C5 X0 W
else
% s, x. T- f7 k/ g4 ~* k{4 |8 z6 t! Q9 ?2 r, w6 w$ v3 r- g2 u
setrot(involved, x4, y4, z4);
5 _" z8 ]7 O5 D! ~ setlabel(involved,"Rotation","noRotation");: o" B' s ^) ?" G' R) m% `
}6 M4 _) \0 |8 Y! o
判断的代码如下:
5 Y1 z: {/ D+ f, B7 B& O/**Custom Code*/% D4 v& T2 I+ v# F
Object current =ownerobject(c);
! j0 |/ v6 E+ U: e2 s TObject item = param(1);
K+ g/ B: F* E9 Z+ bint port = param(2);
6 O; ]. F) P6 l
( ~$ Q; W! C# hObject involved = item;# [% ?8 B+ s+ [* |" w) K/ g" y: V) d
. I( s8 O& ?" q. a# jstring labelVal = getlabelstr(involved, "Rotation");* s8 @- C4 w2 t* n
2 Q W4 u5 { `9 R' H1 |6 Uif(labelVal == "xRotation")/ ~4 k0 P% ^; ~# E( J) \/ J' M
{
/ Z/ B4 M# E2 `5 r. a return 1; // Divert the item to port 1
2 g9 @0 ~; h G4 k9 s}
' z: i; j9 l# C# pelse if(labelVal == "zRotation")
$ T" z- ~5 T: `* ^. H{% M' f+ y8 m: S2 G. `' s1 u, z
return 2; // Divert the item to port 2# S+ u4 E q+ P5 o% O7 z' Q D
}
d0 ]0 [ J: S/ Aelse if(labelVal == "xzRotation")5 s( Y% M2 P! @5 ^% }, K8 e8 {
{, i2 ~+ A9 Z' f
return 3; // Divert the item to port 39 X( [ d, g: A/ y$ w/ y
}2 Z3 k- W( e/ U' i; e
else if(labelVal == "noRotation")
% N p" b0 q# |1 S{
" S# j3 Y( [1 Y' S" c% q return 4; // Divert the item to port 4
J, h- v$ d6 ~}5 m6 w' D* c5 t
5 ^% p" b' Z! o9 K0 j% R模型附上:
7 E% ~: @( `6 @, x2 U3 E |