我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!9 p! e+ P e# X1 R, u$ {' P& n2 b. y
发生器的代码如下:
' f# m6 I3 o9 @6 E- d/**Custom Code*/
& U. W$ O4 q" Y4 n0 r/ G% V$ u6 t! k) ] G& j5 o1 G
Object current = ownerobject(c);
7 K8 D. s, ^( {3 D1 mObject item = param(1);) r/ P. a w% }# T
int port = param(2);
) V( S, I+ h, W, k6 }& O& {3 F
4 X2 E' r3 \% f' h fObject involved = item;
& p- ~$ R0 F. Ndouble x1 =180;
( e, C A2 w H. G3 K( a2 Xdouble y1 = 0; P( I4 |. }0 v! X) _
double z1 = 0;7 l7 y/ |5 W9 O/ N
% s+ ~# v6 ^. ~* h5 ~
double x2 = 0;
0 m8 b+ Y+ B6 [5 V# C" Idouble y2 = 0;
+ z" l3 e; r6 Z/ e3 F* sdouble z2 = 180;
% r' S% f+ Q3 q \0 o9 P1 x
) { Q7 U# k9 A& L- tdouble x3 = 180;
`& Z) l# k( F* E8 |# Vdouble y3 = 0;) u3 J T' @- E4 v
double z3 = 180;) M! h, K# O: i4 H
" b2 D% U. o& {
double x4 = 0;7 P' F2 H! c3 M7 T$ E
double y4 = 0;3 U% g$ L6 e4 o' x: s$ t0 ^
double z4 = 0; p$ K, q- Z. m O9 b' U
: ]2 z2 B$ a1 k
double randomVal = duniform(0, 4);
- |1 }- d. ~& i5 ]; ?& pif(randomVal < 1)$ F( K8 T5 r6 R. C" ~
{
3 ~4 A; E y, q8 [7 r l setrot(involved, x1, y1, z1);
* ^' D8 b6 ?: `5 J setlabel(involved,"Rotation","xRotation");. Z, r L7 \5 }# U$ O
}
5 T |9 p2 `7 Relse if( randomVal < 2)
. u* X ^6 G" G! a b4 i2 Y{
) u7 l$ K9 Y9 `; a& b setrot(involved, x2, y2, z2);
: D& g* ~0 c; z) V setlabel(involved,"Rotation","zRotation");) A+ y2 m, z5 N3 R5 f& ~
}+ x4 {" l9 O2 }' b
else if(randomVal < 3 )
6 p1 o' U9 t: Q3 S" @{
3 O% n0 \: s' o4 @/ w" a, H setrot(involved, x3, y3, z3);/ L! @! ~7 R4 B
setlabel(involved,"Rotation","xzRotation");' K) N/ X4 S( x+ j: e
}6 M$ \2 r2 N9 S: B5 z4 |0 E
else1 m) G3 n" w: [
{
* U& N* D% a5 k& k B; O6 }) w setrot(involved, x4, y4, z4);
+ r4 J& p2 M! z2 X a setlabel(involved,"Rotation","noRotation");
/ g5 |% I4 Y9 d$ Z3 J}5 B! c4 F7 K% k+ i0 x- v
判断的代码如下:
1 i5 e& j9 t2 E2 K' I/**Custom Code*/
% S- q( L V- S R: g- \Object current =ownerobject(c);) ~* \& [4 O( b8 k8 D/ A% {- `
Object item = param(1);
: `1 Q. H. V4 C7 U1 |( ~int port = param(2);
( Q9 p5 s9 O& r" E( A1 l+ |. ^% ^. J+ r O) D5 |* d2 a
Object involved = item;0 B3 x- Q1 S9 ?! i+ k! }7 r: ?/ r
/ d) O. ~, k$ P; W! o, P
string labelVal = getlabelstr(involved, "Rotation");4 e5 B: ?- ~2 h6 _6 Y/ a B
\8 \3 k) r$ K! _; Xif(labelVal == "xRotation")
: j5 o7 s0 H* R: u- [{ Q) {% U2 F/ z& b8 r, F
return 1; // Divert the item to port 1
F& i% U& M. t; M* d [& A}
6 N. O6 R4 z0 u1 ielse if(labelVal == "zRotation")5 t4 u. {, H" j8 C: X4 w% R( z
{
8 e9 G* \) S9 Q+ v" [ return 2; // Divert the item to port 2
/ m' Y2 L/ ?+ w3 R. \( z}0 J" I4 Y4 N! V! q7 G- p% B
else if(labelVal == "xzRotation")
, v% i4 V4 O3 X' n o, E( f{
5 T+ X. \, j& }9 e- X" N0 R* D- A% i2 _ return 3; // Divert the item to port 3% r) J: K- l7 o' _* X/ u& z
}
j: {3 f1 \6 ]" [ qelse if(labelVal == "noRotation")
; W& ^2 T/ T" G& @1 ~4 f{. E9 b+ J4 N# H% A
return 4; // Divert the item to port 4
- `3 g9 d9 `- n7 e2 J% Q}
4 K$ S! ^. |3 Z" s0 a# G
. J) R5 O( g! `; b* S" |模型附上:' m" I! ^! j* I2 W+ t9 R( ^8 h3 j; g: ^
|