我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
( t, O3 r0 x# V7 }) Z0 P S发生器的代码如下:
2 H5 g& ]( @3 i' T/**Custom Code*/- v3 i! K# |' a) D
- F* M. I! d2 l& j
Object current = ownerobject(c);
3 \6 X T9 Z: f1 _8 i% YObject item = param(1);
8 g$ p2 b% N. Mint port = param(2);; H, c3 H; e: q0 A8 [9 P
4 z0 o5 h3 C; J# Q5 q, c
Object involved = item;
1 P/ D& Y6 c; V2 y% Ydouble x1 =180;' n( g5 i4 s+ z$ O5 t5 {
double y1 = 0;
. A5 O3 C9 q$ l- q, |# f; Rdouble z1 = 0;
' i# ?& C4 A: |! a: d* r- c2 }. ]
double x2 = 0;
& T$ g/ I' L, M4 X- j" ?double y2 = 0; U$ ]$ d, X! \0 O6 e! T# ?8 r, d
double z2 = 180;
- e9 j/ B k* C: n) t' D$ ]3 D* _6 m) F4 p* ^0 e
double x3 = 180;& B- u3 b4 r% ?: K' `
double y3 = 0;
; H% O$ c" Q; [( _* n/ pdouble z3 = 180;
3 z2 a$ o* v& d( o" K' \% `3 O+ ]
" ?4 h* V/ ?3 e4 j6 A0 Cdouble x4 = 0;+ x2 O* [7 c8 v
double y4 = 0;) F& C& Y9 V. a
double z4 = 0;
+ h( P! A! K+ y7 r
# I2 k, [) q) S1 w7 S. odouble randomVal = duniform(0, 4);
1 b; f- q0 C$ s. W; Rif(randomVal < 1)) u8 n3 L2 w9 G# C
{
! H2 i% f1 S1 H9 j$ ?& O8 _8 p+ C setrot(involved, x1, y1, z1);" S; @: P0 R" }5 `
setlabel(involved,"Rotation","xRotation");
3 `# Q- w7 d) ~8 R: C1 A8 t5 r1 ~" W$ w}
' p3 n7 Q" w+ t d4 G# M2 Melse if( randomVal < 2)
; C4 v! | @- `! L0 j4 h X{
1 _3 V& ?. T: }0 O; F setrot(involved, x2, y2, z2);. s4 K/ i% F+ C/ l6 O' M6 z4 T
setlabel(involved,"Rotation","zRotation");
" d" _: G5 _& S2 v; d0 Y' J}; D. N6 @5 ?+ h6 i
else if(randomVal < 3 )% y7 q+ S' o `/ v
{! [. y# a, ^) q: J7 r. Z
setrot(involved, x3, y3, z3);' R( V% b0 T$ i/ s @+ U/ x
setlabel(involved,"Rotation","xzRotation");9 d; B, Z0 \* P0 m' P, O
}8 Z: T) J7 o) V% i* U8 n! n: K% @
else& N0 V5 g; r8 P# _- x* o
{
# I7 t9 l; L; Q* n. E1 ] setrot(involved, x4, y4, z4); g- \- @9 P: L& G/ C2 O( v
setlabel(involved,"Rotation","noRotation");( q4 J2 w: P! |. U
}
0 I% r# c8 R1 v9 z5 V判断的代码如下:
& M, B. D6 v3 g" g2 E, I/**Custom Code*/
8 a7 |- C0 E1 A. o6 t! ^+ j. v7 HObject current =ownerobject(c);
- `2 A9 `2 v+ LObject item = param(1);
# v! U3 ]. [- J1 Xint port = param(2);
$ |- `7 [, n" O) M" V# i
% O, k7 b- Q+ H ?7 ?; H# DObject involved = item;/ ` z8 Y# q k4 a8 ?0 r
6 D5 b' n) d4 u; \# o5 `
string labelVal = getlabelstr(involved, "Rotation");
" V" [# v. ]! v, ^! v3 J8 M! ?0 h/ f+ I8 C# A0 Z. y" _0 W/ [; @
if(labelVal == "xRotation")1 j9 V* Z' M Q0 C( k# r/ s- e+ s1 w
{
7 e1 `1 P' S+ s/ J2 ` return 1; // Divert the item to port 1
/ b+ z+ `: b- [! h5 R# v2 I}8 {! C- c1 q; L. m
else if(labelVal == "zRotation")
) q) C9 t9 P, j1 g' x9 z{3 ?) e" S+ n7 w/ I
return 2; // Divert the item to port 25 g( }8 a- w- I5 b
}- M6 O2 `; F6 L3 y
else if(labelVal == "xzRotation")
& p; w( W# q1 o8 r' m{
/ X9 s% Q/ |$ C8 \4 F& c' Q return 3; // Divert the item to port 3
. E! `, `: m! j6 \}5 W1 {: S4 V( w
else if(labelVal == "noRotation")8 y" ]: ~& R- D8 X) q
{
( D' z( S# c y return 4; // Divert the item to port 4
V& v$ ~5 N4 r! [8 y}2 a+ i* a$ V0 c& H, i) ~2 W
! l; W V3 r* E模型附上:! w# a3 _, R5 N! L) `
|