我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
" D$ g( v9 v- p- e3 B6 Z% k6 F发生器的代码如下:
/ [: l: S% C6 x5 o8 d/**Custom Code*/
. ~8 y i& C3 M! @( |# ?: Z8 `) s/ ~+ s/ e! K8 Z
Object current = ownerobject(c);
3 ^# @ f7 I, s# P6 g H6 nObject item = param(1);0 r/ e l0 `( d2 Z) r' r
int port = param(2);/ {0 E6 @# R3 k$ w1 j: l. O9 P
6 J8 N1 y4 } h" q( B3 B& `- o. F, t
Object involved = item; W9 q; X0 y3 n9 m; v: }' e5 b
double x1 =180;; ?& S( C* @6 \2 j2 h
double y1 = 0;
: j V6 p8 _$ F6 b' p& z5 L" Ydouble z1 = 0;* @; _ e$ W1 H8 W% L, B
; k* v/ W- ~3 T6 N
double x2 = 0;
& s3 Q2 K9 F* {5 e$ t. W4 pdouble y2 = 0;3 ^ N( S! v8 E- D; M( v; ]* ?
double z2 = 180;4 p6 k- T, Z6 }
6 x; J4 p) X; R T6 odouble x3 = 180;! G% ?# x# _0 I+ l& t. i. ?
double y3 = 0;) J# H7 A0 c& A5 x. r
double z3 = 180;* Q1 b# b8 q7 `; W
$ L; f" l+ ?) h T$ @* J
double x4 = 0;
$ Z% \. ]$ f% q# Ndouble y4 = 0;; S, E+ k& v8 u9 \; Y9 U
double z4 = 0;
0 {6 h" _$ m- t! \
& ?, [0 ^* L* Z' a/ K& Xdouble randomVal = duniform(0, 4);4 w/ G, R5 X3 M7 J' h) B
if(randomVal < 1)
3 F$ l% q; g- u; O9 V{
4 y' J- {. L' y/ r$ e setrot(involved, x1, y1, z1);! L+ t8 Q8 m1 V" x
setlabel(involved,"Rotation","xRotation");: I; k7 h+ ^( W. o, c
}" D8 C3 K) Y8 t1 p# p) ?; _
else if( randomVal < 2)0 {4 ^0 M) Y `2 P
{ & Q5 ]. z7 x, K! j2 e/ t
setrot(involved, x2, y2, z2);
. ~3 R. T6 M; V& S setlabel(involved,"Rotation","zRotation");3 y$ h; Y" l1 L: s4 I
}' f# ?6 W O+ G1 C0 s( q; q, L6 {
else if(randomVal < 3 )2 B* W9 ?7 k; c
{
; R# b3 a9 \; Z2 M, w setrot(involved, x3, y3, z3);
6 g& K1 L0 v9 W C! E setlabel(involved,"Rotation","xzRotation");2 M0 D- w0 x4 l5 A- V" P5 ]/ A
} {3 M2 Y% Y) f- b
else
( t& @' f9 W) Y9 c$ }3 a4 c{
0 h$ }7 q4 m& q0 |* W setrot(involved, x4, y4, z4);9 S% j( A! _4 n4 L4 i5 d& v
setlabel(involved,"Rotation","noRotation");
0 ], h: S# l; e% R A}
. k; L, y: z2 C$ s, N2 p, X判断的代码如下:
7 E$ _# Q4 i& r7 x) e* i/**Custom Code*/3 r: h3 {. i0 t9 P6 N
Object current =ownerobject(c);
# O6 o5 { k* A, Q2 S* {8 bObject item = param(1);: A+ _/ M; T$ z/ M* C+ G
int port = param(2);/ t& T/ l8 V$ N0 T+ A8 z
9 K) E2 q- [- _% M2 _" h
Object involved = item;+ o$ \! ?3 _3 [2 N9 ^, ?- _* Z. p
. i; u/ l: d% a# c) b' t5 E) J$ tstring labelVal = getlabelstr(involved, "Rotation");
4 r* d) {6 _! [# j
9 s+ j- E8 K$ H! `: ~if(labelVal == "xRotation")5 x; O7 T4 z( s3 H' C# y+ [
{9 p. d: ~* S5 O4 q+ l2 \
return 1; // Divert the item to port 17 A" q: k* B' m3 z3 L1 Z4 ~, \0 P
}5 Q" [* @9 t: g1 C0 s
else if(labelVal == "zRotation")
4 L$ {# L7 b8 E- i% `0 h5 g ^{
! s8 y( M V& E& F3 Y1 _ return 2; // Divert the item to port 2
- M/ P5 t' K" P, j5 w}
; l, m/ u$ l! `0 C2 r) ?1 G( Pelse if(labelVal == "xzRotation")+ _. l+ X' W. q
{9 Z3 x* m. E( l
return 3; // Divert the item to port 3
1 g h) q7 g, S- n* a, Y}
' T: S' w5 q- |0 S4 u5 \! i }2 S9 Eelse if(labelVal == "noRotation")" W% K7 p8 p# N: ~4 i# ~
{
' K* H9 _6 k0 K+ Q" }) _2 t return 4; // Divert the item to port 4
/ U- c l& {* D8 J( E, @}+ A% e2 B5 I( n% [& c( u1 s
& b# j; `5 }7 I5 e. ?模型附上:* _% v: J/ U3 u2 J
|