我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
$ h7 j" O" k( h- j4 ]. o" T发生器的代码如下:
R z* N# s% P- o4 j5 ^/**Custom Code*/
, Q& |8 u3 A8 ?4 D
( f" S1 v: N. K* v7 M. eObject current = ownerobject(c);
) F) J3 F8 n6 k$ }& {) zObject item = param(1);* S/ J% ?3 V6 Z9 R+ c4 Y/ k9 L
int port = param(2);
3 ~& V, r6 V8 S+ s. b3 x$ W6 y
! U2 x& M B8 ~Object involved = item;
2 t3 @4 G) @' \! H/ Bdouble x1 =180;
: y2 i; O% R* _6 J2 rdouble y1 = 0;- A4 q+ ]+ M4 b) h' V( {
double z1 = 0;
( p2 W% C0 s) p; \2 Z4 x3 {
! G) Y1 |! x& V- W: bdouble x2 = 0;) E# V5 n% _/ l3 ], X
double y2 = 0;3 c4 y5 M3 g2 h! G+ `. N3 b4 B; N
double z2 = 180; `4 D, H' e' O; a! f4 N
1 x6 c9 s2 j5 G( f
double x3 = 180;
* \, m# q0 q; h( i# }1 K/ Ldouble y3 = 0;1 O7 H( \& c; X
double z3 = 180;* i$ [7 A: P8 q* y6 \5 ]4 ]" z
4 H7 w) t l) H6 H- z' z5 P {
double x4 = 0;9 E* e) E% B5 r# _1 y
double y4 = 0;; A. K1 a! C$ H% X9 ^4 k
double z4 = 0; H, ~: D( g6 q' Q& H
0 N9 {/ S/ y2 ^) jdouble randomVal = duniform(0, 4); H" v2 v& C* i" z% q, U6 A" |& q+ v
if(randomVal < 1)
. h; {& {0 s) C% Z# Y- ^{' [) G" o" L2 c
setrot(involved, x1, y1, z1);
2 l3 H: x6 u1 ~, n9 _7 `* J* m$ ^ setlabel(involved,"Rotation","xRotation");. p R/ e/ [8 ^$ Z
}
* m, R% @ J# f* {else if( randomVal < 2), Z2 m6 X- [3 S1 K/ X
{
5 ?- v \- ^8 e& E0 I' ? setrot(involved, x2, y2, z2);
3 u' J' k4 `2 R" z2 g setlabel(involved,"Rotation","zRotation");
# M% s) @, U8 s, t/ }3 y}
$ V% {; ^; h& l( u! X, ^else if(randomVal < 3 )
1 @, h9 L. ]: c6 U V% V( m{8 ~9 f7 q- a6 g( @( k) e7 l
setrot(involved, x3, y3, z3);
+ l8 ]# j2 q9 u9 Z5 y' L setlabel(involved,"Rotation","xzRotation");
. x# h4 [+ |5 O( y}
! A' s( ~/ j6 _5 [# E6 a' ?. k# d/ Welse
* b" t1 q6 Z" }6 c6 ?% F. G{
) ~0 ?! P7 W9 G7 r; a& ~ setrot(involved, x4, y4, z4);
* b3 o7 G) e0 `) e: N setlabel(involved,"Rotation","noRotation");
* v g& S, b; b4 `5 T Q}
; d7 a. h$ z1 _* k& _2 F- c判断的代码如下:" W; X/ F4 t7 u8 m! {6 F0 |
/**Custom Code*/3 D' O( x i# J* a' l/ L5 r
Object current =ownerobject(c);
9 o" B) Y1 b2 x5 XObject item = param(1);
. C' \- h" }5 s0 Uint port = param(2);
5 ~4 ]1 b! M4 f. q/ H8 @$ }8 w. ^' a7 T) ^, T
Object involved = item;8 }! v7 w" k; C$ j; a7 c
: R' a/ S3 c/ @
string labelVal = getlabelstr(involved, "Rotation");
; b) m( h) @ u4 j) u" Z" W9 I3 l% p$ }: z& [
if(labelVal == "xRotation")1 V7 V: ?, E' ]7 Y8 L
{
6 h9 u# ~9 @+ f% B/ Y3 x3 F! Z return 1; // Divert the item to port 1
$ v1 _/ }0 X0 Z2 o8 h) j4 A: Y}# i+ @. ~3 }, y# w; g0 J
else if(labelVal == "zRotation")8 t5 n$ X/ a4 o! ~; ^; I
{) m6 `) U9 A4 g$ w! ?
return 2; // Divert the item to port 2: `. h/ y3 X# m% D' S
}
, j) |/ |% Q/ oelse if(labelVal == "xzRotation")
. |, ]6 r/ h; o0 K& E0 {{
% Q5 S. z& o$ c1 w; x, e) X& w# m return 3; // Divert the item to port 33 |3 [$ n( M' l( B2 B( _
}
3 N" h' }) y& ~. O* Qelse if(labelVal == "noRotation")+ q" A+ \" x; E2 q! F, |6 {
{+ W" d- [) X7 s# m+ |- X+ g
return 4; // Divert the item to port 4
+ ]( H6 g/ O D& w k G}
9 C7 I, T, @: f3 P0 j" @( b
, V [' c0 a7 h' t模型附上:
* r K% Y S2 ~2 P; M6 h/ K) W& ? |