我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
0 @0 F, P) O9 U; W6 S% k5 f发生器的代码如下:2 L- e3 |9 j- n8 P! G; l1 l/ X
/**Custom Code*/
! S# v7 j: Q( ]0 q; x% A& Q1 W
Object current = ownerobject(c);
- A, b# |+ X& e2 }+ j' `+ T* [Object item = param(1);
8 y% o# p) G0 `- z. R% rint port = param(2);7 ^7 d7 i) ] D- o+ E
& e- r% L- T3 g; J+ Q
Object involved = item;9 q# z5 k* e, m
double x1 =180;) `3 W$ D! d5 l
double y1 = 0;
* d* `' e6 p# C* w _double z1 = 0;
* B) Y) ]& C+ _/ w5 }1 @6 ^) z% z( { } g3 Q2 H; N! g
double x2 = 0;
) |% `0 [- z9 J% t! q$ k6 F9 Pdouble y2 = 0;
1 p2 v; i0 J3 ` @+ Kdouble z2 = 180;6 I( Z0 B' V$ W" |/ O6 S% M
4 U, Y9 Y: T3 Z
double x3 = 180;! R% p# _, w9 [- c2 v- i7 S
double y3 = 0;! x+ A' j8 _+ }; [2 s; w
double z3 = 180;9 R+ Y# b) j, S) B& K: Z+ k
0 n- E. S5 s2 @& }0 ]5 u3 b6 Y
double x4 = 0;
# e+ ` i. j; ]8 r, U. j% U0 Odouble y4 = 0;
* G! ~ r: |6 B' c$ a6 Cdouble z4 = 0;. w/ Y; ~! s! ~
% m( n! Y* }" b
double randomVal = duniform(0, 4);
2 Y; a( [( Z7 n; Dif(randomVal < 1)- }# G7 z( d, Q3 L; W/ a. p
{
# O" i0 V" D2 `0 V3 p setrot(involved, x1, y1, z1);
8 M5 \* L3 C/ U4 k; d setlabel(involved,"Rotation","xRotation");' s# a9 }0 z* P$ i$ }
}/ A/ l; A/ r& G* k# w* c7 m
else if( randomVal < 2)
7 S" J6 f: J8 ?3 o' k# f{ 8 e/ D/ v" j; m+ X G. F* R
setrot(involved, x2, y2, z2);
8 n5 W2 I' Y0 [ B9 n setlabel(involved,"Rotation","zRotation");
% k/ q7 t! F8 V X}
0 [/ ^3 [2 Y4 ]* i" T- ?5 K2 `% kelse if(randomVal < 3 )' a3 X3 T. z3 {1 \* A- N0 `
{
8 X) t* x; ~5 @% A9 C1 P6 ?/ [ setrot(involved, x3, y3, z3);
: B4 P) t2 k8 M j8 s2 k7 O* c setlabel(involved,"Rotation","xzRotation");
0 t* U' I0 I* _: L ^; ^}! _9 U) C3 ^' d+ I! c
else4 f4 N, {; o* @9 I* h7 D6 ^
{5 x8 y# W3 Z! t% l4 N' L: u
setrot(involved, x4, y4, z4);
5 `9 w( C1 H7 @+ \ setlabel(involved,"Rotation","noRotation");& J7 q& C( s2 J, J; Q. g/ T3 B
}
" p$ y4 {0 s n! |* g Y判断的代码如下:: j7 n3 f, d0 S, P! _9 V
/**Custom Code*/
0 g/ r' Q- B: _5 qObject current =ownerobject(c);
8 O( b/ V- ?7 ^! F+ J% |& b3 pObject item = param(1);& S6 N( Y9 q6 k. U4 Q6 z! b
int port = param(2);
$ P8 n, i; @. l7 X, V, e1 G1 k6 C6 Y0 ~$ ]! v
Object involved = item;
: S; y) d' ^( B" U# c, x
' o' X) p# p; l& y5 n' u/ X8 fstring labelVal = getlabelstr(involved, "Rotation");; w5 V5 C( \- h$ e7 f- P; i
1 x p* S. I! Y. u7 {5 Y
if(labelVal == "xRotation")
c! B9 c9 C/ W, @5 D# U6 {{% Z- A0 ~' |+ A, `0 Q# x
return 1; // Divert the item to port 1
5 a0 w' M. e* f! X}
0 p, Q2 r) _- Q8 H/ {: `else if(labelVal == "zRotation")
+ f v k, w( j5 b{
$ L0 @8 x c& ^6 H return 2; // Divert the item to port 2
9 B5 f4 C) S, q1 i# I0 Q8 J! A}
/ ?: }% F7 T0 W4 ?else if(labelVal == "xzRotation")& S! ] V2 E7 l T% A
{1 `0 w0 N9 e9 h1 t( M6 D# g9 l
return 3; // Divert the item to port 33 C! E# D3 n6 p7 k
}, M5 b$ y/ ?3 I# o8 j; }. x9 t
else if(labelVal == "noRotation")
8 v' p+ w2 T6 U; p. w2 j{$ I& @/ c9 s% {# Y; x
return 4; // Divert the item to port 4
) H$ P; t3 f* V N1 A- a}& B2 N& ?* u- v. I# R6 i, k6 H
# @ {( E9 @" l p3 Q模型附上:
5 I3 B N6 y3 l6 I, Q- Y; O |