我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!( g* N9 l: q+ x: @* t" A, ^# k
发生器的代码如下:
7 J# N" L! G3 U* T$ a: X/**Custom Code*/* C( |% |& U0 u4 D9 C
2 @3 ^$ A+ j/ T1 O8 P+ m. {
Object current = ownerobject(c);
- R0 `2 W" [; E) [9 UObject item = param(1);4 c: b4 B% L, a
int port = param(2);
* x0 d) I ~+ a# q' E3 N& D- |
1 \0 l: Q A% z1 K7 L- {& gObject involved = item; r# l' e Q4 s
double x1 =180;$ [2 Z, h- a- @6 V
double y1 = 0;
8 S9 R1 C! y6 `" Sdouble z1 = 0;
% V1 q; t6 c' s: u
: n6 ^5 _% E* k! s1 X7 r- ^4 xdouble x2 = 0;$ H' x, U( c/ @. j: z9 i$ q
double y2 = 0;
: C" O5 G; `& f! cdouble z2 = 180;
( m' @5 [, N" C ]2 c- }2 d0 S8 ^; h
double x3 = 180;
! q+ E' C$ S6 x1 e. }" idouble y3 = 0;; h' S* z- l% O. T* J- q% H
double z3 = 180;' l5 N5 k8 ?+ k$ N% c
- [. B* i% W% Q3 b4 H( p8 ~1 {; |, vdouble x4 = 0;
' D( n" _" p9 ]2 h6 R6 R+ Rdouble y4 = 0;, H1 \7 U( N- O0 l
double z4 = 0;
, J J# _# R# E. g6 m6 v1 {0 [4 V/ k s) e( ]7 I$ B2 k- h
double randomVal = duniform(0, 4);
& K; Q3 C: ^: y t; ` Eif(randomVal < 1)5 C- `8 m, H$ J0 m' r! R
{( Q- Q! _) M. C+ p$ i
setrot(involved, x1, y1, z1);
$ Z4 r3 i, e5 ~9 ` setlabel(involved,"Rotation","xRotation");1 T1 j5 ]4 Z! H) B/ w+ L4 Z5 ] x
}
- d! S( D2 ]( z- \8 t" |else if( randomVal < 2)
8 e7 E+ `+ ^; Z. i) |, ?& E' `{ ! c' D; o p! q
setrot(involved, x2, y2, z2);
9 D8 a+ {, j; Q$ W setlabel(involved,"Rotation","zRotation");
s# X9 _# [, ?% L& ^8 X& a}
0 V6 ^0 s0 [( P, d1 M6 u" Felse if(randomVal < 3 ): C4 q4 }2 C# U+ x3 p! ]
{! o6 \" x" @) v% C9 @# h0 [
setrot(involved, x3, y3, z3);: W. p T1 g2 |
setlabel(involved,"Rotation","xzRotation");: _9 C, g$ T( E( F. z$ `4 k8 u
}- e8 a2 ], ~3 O5 |7 d
else% L+ x0 N; g2 h* l+ o2 f5 F. Q
{
$ P& G$ j( ~# U# K; p. { setrot(involved, x4, y4, z4);% ?- h S1 r9 a8 i! C5 o
setlabel(involved,"Rotation","noRotation");% p2 d P; G& M- G# b2 D
}
% w0 v3 P( ~9 X判断的代码如下:! T* Z! R" M* w+ f t, |4 j
/**Custom Code*/$ X2 X1 ?+ Z" L5 A& J
Object current =ownerobject(c);$ Z+ ^6 V/ ~% H
Object item = param(1);0 Q7 y2 ~, W+ u- m m4 v4 z" v
int port = param(2);; w3 E1 f, Z6 b8 W: U
- j2 {- b2 _: \$ `$ V; ]Object involved = item;
{, y0 T0 ^' h4 U: W( s0 g k1 |2 C4 t9 n1 I
string labelVal = getlabelstr(involved, "Rotation");
, w2 J% `" a; X: E9 H: q3 A
% {+ c) K S, \, v% m( tif(labelVal == "xRotation")
4 ^. w# m; W% l$ [! b1 Y) w{, v% j5 ?( R5 h, ?, r" w
return 1; // Divert the item to port 1
; Z A4 a. Y; ^}
) o& _8 I9 l7 I3 n7 \0 a& f+ ]else if(labelVal == "zRotation")
& o9 i; Z/ b' n3 k0 w{
$ V9 u/ L7 C3 a- Q return 2; // Divert the item to port 2
9 U( Q3 W! U! c3 F}
: _3 K) x {6 w6 ^; ielse if(labelVal == "xzRotation")
9 [- X4 U3 X8 J{
8 Y9 E& g% F4 q$ d. Q1 q* v return 3; // Divert the item to port 3
x; u& v1 H$ C* w* v}# U! |; x3 t- D! E+ j
else if(labelVal == "noRotation")
5 D( Y2 v; w5 g{7 L+ F' h# ~/ s8 p
return 4; // Divert the item to port 4
. C$ p" P% Y, i k}! R( U. @: ~- z1 ^8 |* Y+ e
4 o0 D+ }0 C2 v# d0 q
模型附上:
) a7 @3 l9 n& |; q |