我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!: u$ ]6 ?8 D8 }. Q" f9 i8 Q1 J
发生器的代码如下:6 m! G+ `$ n* L
/**Custom Code*/* P5 `" l& I& {
/ ^: J4 c6 g# C5 X& G$ K. `
Object current = ownerobject(c);5 p5 J! d" Y* A
Object item = param(1);
8 p0 D3 L2 I3 [: ~& F6 mint port = param(2);
* q$ [3 I* w0 {7 G1 o
/ K2 j" _) e; q; KObject involved = item;
6 o6 I2 h, }$ p- e& H+ Z2 V- v1 bdouble x1 =180;
3 V0 X9 m# A+ @( j2 K& X5 Jdouble y1 = 0;1 C6 i/ k6 ^- O3 F8 V2 L+ s2 c3 j3 l
double z1 = 0;$ w* `: [8 j+ b U, P1 S2 ~) e
6 i* t+ c) P/ ^ b: ldouble x2 = 0;( q' q+ R' [) @) h# T8 }2 w
double y2 = 0;
7 b2 y2 ?! ^; gdouble z2 = 180;7 M7 F3 C) A7 X) ]+ Q. C
9 T) s% D- z1 k2 m" z* C
double x3 = 180;
8 Q/ b2 e4 I7 j, K) D' hdouble y3 = 0;
& g2 [' B/ d+ ^ _double z3 = 180;/ e' b0 K7 B) V8 B1 w! s; r
5 C: Y) z, k8 \% d; U5 ~
double x4 = 0;
) r- Y$ I+ i, |( X! c1 N) U- G5 S9 h: kdouble y4 = 0;* n" x0 G# |; `4 t" }- K8 p
double z4 = 0;
: L8 }' o* `, `0 r0 x
7 \- M- ` a5 Udouble randomVal = duniform(0, 4);1 o$ `. L. R( ^: x4 m' I2 v- d
if(randomVal < 1). \+ U, U) }. Z# n; D9 L
{
8 q. o( C. C# f8 T. D; G2 H setrot(involved, x1, y1, z1);3 R3 }% }4 R& H
setlabel(involved,"Rotation","xRotation");
9 M6 v/ R8 ~, D6 v}/ Z* R. X/ v& t0 |
else if( randomVal < 2)
" K# \! |, u h$ L5 K% Q2 C{ * `9 W% p# B2 Q2 ]# W
setrot(involved, x2, y2, z2);' Q; J4 {- x2 v% H0 c4 _
setlabel(involved,"Rotation","zRotation");
! A4 s E8 m9 s+ K) A0 Q}* W% _/ ]: f( B2 t% y
else if(randomVal < 3 ); U0 O/ V8 ?" b1 S
{9 b9 [4 l0 ^8 P9 M' k; V
setrot(involved, x3, y3, z3);0 O' q s' l8 Z7 V& q8 y
setlabel(involved,"Rotation","xzRotation");' I( j5 j! S, c& i0 `9 Z: _
}
5 ^( e' `9 a5 v; V! L. P1 |else. J8 d; g$ Z: c0 [! X1 N
{
9 b% n" a% i1 }1 M& K setrot(involved, x4, y4, z4);+ x: A8 u2 Y* h
setlabel(involved,"Rotation","noRotation");
) x3 v7 D: r+ F3 \/ {0 B- x$ ]0 t}
4 ]8 J- r* I/ F2 y7 ^判断的代码如下:
6 C5 f) Z# w& e/**Custom Code*/5 _* F. i! s3 S& u, U
Object current =ownerobject(c);
- v2 \6 y# h9 lObject item = param(1);0 s. w% O' Y) p. [5 z' X* n+ I7 H
int port = param(2);
8 N/ n4 E2 A; J8 i: ?8 S
7 K# @7 V) w+ q! V$ l5 O2 u7 WObject involved = item;# p6 t' J( k: T
% g! K9 M# A! Y3 }& ystring labelVal = getlabelstr(involved, "Rotation");0 P" r; R' d/ |2 X: ^
1 U1 M6 y; M* L* G
if(labelVal == "xRotation")7 l* R( I, c. c9 L* C' N
{
1 n6 e$ x4 S4 q2 L4 j+ R return 1; // Divert the item to port 10 X \1 c/ {3 U6 h$ e
}
: n1 J$ Y$ {* Q! M( delse if(labelVal == "zRotation")
. y; x/ ]; M3 _8 v9 U: Y{
/ F& n6 k, q( w1 t+ g* u" P+ N return 2; // Divert the item to port 2
, F( V2 _# l, g8 D& K* c& r5 o8 `}" R' q5 Q3 J; y
else if(labelVal == "xzRotation")4 m& U1 C5 |& {7 ^% a: u
{, c T! P& v/ z Y- B; f- N3 H
return 3; // Divert the item to port 3- R- M3 W3 g: E. Y+ z: X2 G
}
; G- m" Z P4 B. uelse if(labelVal == "noRotation")6 [$ h, c, [3 x" n0 }/ }
{
& w4 [0 U/ b( P2 { O return 4; // Divert the item to port 48 p7 ]! \. A/ B% N: g( c$ T1 q; T
}+ y% D0 s; R0 q0 n, N4 B* R
. _6 u8 ?7 q9 I6 @
模型附上:: S# h0 G: y4 S }! x
|