我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!$ Z: }. i7 W+ I7 y, W
发生器的代码如下:8 Z8 I) Z1 [% _" n
/**Custom Code*/, b! r5 M) X: i! s/ u# _
2 V) k* ]" \2 qObject current = ownerobject(c);. @8 c' X( O3 P2 i8 M8 b7 T( W
Object item = param(1);. g9 j) N/ ~1 K9 i
int port = param(2);
" d0 S3 W4 @4 |3 v9 N, A0 ]8 U& h, D- c/ u
Object involved = item;! T; M- x, h% {$ F, y
double x1 =180;
! A6 K- g* ]; U2 Cdouble y1 = 0;! u& @ Z5 _/ H! {% i
double z1 = 0;. p- U- H7 t3 s- a, [
$ T; [7 n9 n# ]8 l
double x2 = 0;
: A( |3 I% j- R2 E5 }% }* A; S. pdouble y2 = 0;
8 n& X% q+ s& @$ a G' xdouble z2 = 180;
. A. Q! A6 D5 g, w: R/ @0 v3 m$ P A+ s/ e" p0 O G2 v
double x3 = 180;
* D: C ]/ F9 B% Z1 k, N9 Qdouble y3 = 0;
1 k* r2 `9 t# Q! G9 p" n: }8 Zdouble z3 = 180;0 I8 g; _/ \( I5 K' d" ]7 D' ?
# s9 c2 E, n& }; h$ c% u1 H/ M' Ddouble x4 = 0;) [( Y' C) B+ Y( I4 [. b+ {
double y4 = 0;! p. w% j1 [6 a' {
double z4 = 0;
; l; o9 i |: g0 i2 p. W# ]9 m
$ p6 e3 Z$ h3 E, S5 c% adouble randomVal = duniform(0, 4);
& m; w$ i- L" Z3 _, O2 n# Q vif(randomVal < 1)
% |' l% r4 f* J0 d{9 v# V3 Q. @6 b6 B; @4 g5 g
setrot(involved, x1, y1, z1);
; |7 ?( Z2 H) {% C setlabel(involved,"Rotation","xRotation");' X7 W0 l1 P+ d$ C" J
}
( D' u3 j* G6 jelse if( randomVal < 2)
9 M& V b9 A+ u% }$ E{
8 m, O& I* | T4 Z setrot(involved, x2, y2, z2);9 c7 T( W: m; r$ F+ u
setlabel(involved,"Rotation","zRotation");
+ a% S1 P& ?& a" q0 L1 K* }/ F4 _- @3 G}
5 ]- F* N) J! m6 |% B2 A; |else if(randomVal < 3 )& L' d- f: Y* N7 r
{
7 G* G% n2 h k* j% d1 \+ q setrot(involved, x3, y3, z3);
% x5 T) g3 j5 H/ P1 B9 s setlabel(involved,"Rotation","xzRotation");: k1 J1 J7 f# A8 h3 Z
}
2 M( c N" M" T# z* u3 I2 qelse$ {. b$ l" C; e! Y1 p% }" m) @
{
% e! z& v3 }' x. M% E setrot(involved, x4, y4, z4);
7 S0 Q5 s' b& P& t4 |6 |% k setlabel(involved,"Rotation","noRotation");
* t1 ?+ r8 E0 H' v4 a" S}
# o1 d" D, U3 }( U* \: n判断的代码如下:
' Y* |! a$ r# a% L4 _5 a$ T/**Custom Code*/2 n' c3 g8 B* y8 k$ w& j4 Q9 T
Object current =ownerobject(c);
/ ]7 O. e3 `3 K* c# W0 j4 X" AObject item = param(1);/ b* T' C. j; k6 r. o3 o7 @
int port = param(2);
' v3 k- E: c* X2 p% i8 m0 Y2 _' K
6 l" x/ j2 F. A" O7 aObject involved = item;) }; {' F. i. d% x- D4 ~( `- h
+ U; H% x7 @8 n6 Hstring labelVal = getlabelstr(involved, "Rotation");) B8 V* x5 _8 s5 A; G( Z* o; x
- e f" N4 I( n# w# h" m$ `3 ^/ Z
if(labelVal == "xRotation")# v8 T8 B0 P* Y8 [ `- ` w) s
{
( L# \, d& o, i- C return 1; // Divert the item to port 1
4 p8 w" H" |+ U X$ W. f}/ P* L$ ?4 \( y8 A" x8 P1 l. B
else if(labelVal == "zRotation")
p/ q7 P/ b5 Y) V{
& a; ~& O8 Y7 m) i- X9 b( j return 2; // Divert the item to port 2
( [+ Y. W/ u( |6 T}
, {+ _+ P) Z4 zelse if(labelVal == "xzRotation")
" V& I6 U' f8 s4 W& d( J. q{7 X \' b }1 P0 V T {0 E8 A) S
return 3; // Divert the item to port 3
# K: {! [- L. v9 Z5 [6 g; A# m' _* X}5 |2 y% g% O9 J% x6 J2 _
else if(labelVal == "noRotation")0 I% I, ~0 M' L+ U4 V
{! S/ ^8 a+ j( a- w1 b) u
return 4; // Divert the item to port 4
$ f: u, N" t [. {# K4 ]}
) r6 G5 R' [& t) @% ] j+ S# |6 J6 w! u" J! N" o0 [1 j( a
模型附上:
1 W+ z; K3 G# @! Q2 Q* V |