我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
* h0 h- n7 v, R% P5 | I* O发生器的代码如下:- J+ _9 {" S8 \2 B% a
/**Custom Code*/
) f, ^' f. T8 d4 ]% t: V/ c& u ~( o( t8 _. C6 _/ `
Object current = ownerobject(c);
( R3 w1 S3 H5 [. y- ?* p% ]% P4 pObject item = param(1);4 y" b) l7 c* V7 g U# E+ s
int port = param(2);
0 v0 Q. M' C3 N, Y/ C* V4 C( z2 H
Object involved = item;+ w9 b" m# C' X* G9 U
double x1 =180;
U. @( v& h' p9 Cdouble y1 = 0;+ I' D# L/ x, e
double z1 = 0;8 ^$ R4 X" k) z- M& [0 Q: [' i5 }4 v
5 ` d* c/ q0 p1 adouble x2 = 0;
; L( q! p! O9 S0 A7 t! P1 odouble y2 = 0;
Q# o& j: A6 Ydouble z2 = 180;
4 P+ o8 G8 { L, n! P2 H' X0 D# _' P2 F* d* H
double x3 = 180;8 E* r, \' Z; o+ P
double y3 = 0;
% G' T- W7 x/ v% gdouble z3 = 180;
% v; z" K, M f) o# w; `% x: s/ x8 n" T" B
double x4 = 0;/ }* H! c \* _3 `" X2 {" `
double y4 = 0;! a. y( u% U: H- h! t
double z4 = 0;
6 @. M, o' U" Y5 }9 z K
8 @5 ?1 w/ o7 q# [( n2 Zdouble randomVal = duniform(0, 4);) p9 W' q4 {7 [1 v1 x
if(randomVal < 1)- B4 @" T% ~$ ]- K/ T
{1 o5 F! a% }3 g9 G1 x
setrot(involved, x1, y1, z1);8 [) z2 R/ \3 J* W
setlabel(involved,"Rotation","xRotation");
, y# K, |6 i# @9 _: L6 T: L3 v}( q0 i2 N3 e- P/ A( ?
else if( randomVal < 2)( L; ?( r6 G5 ]5 |! ]
{
3 d; v/ n6 i+ O8 d- {8 f( g- | setrot(involved, x2, y2, z2);
5 w% _ R( \* `7 N1 j! o7 F5 n setlabel(involved,"Rotation","zRotation");
2 I) x/ E, Z8 u& Q+ e* Q( q}9 H! D) h7 C" V" B
else if(randomVal < 3 )
8 W8 G8 \( d) o{
; _- ~' G6 g1 l/ h0 ?5 q setrot(involved, x3, y3, z3);
4 v( n+ S- g; B; \9 y4 D2 J* B9 @# d setlabel(involved,"Rotation","xzRotation");
3 A z3 H$ g+ Y: W- S4 w/ P" n0 F}
8 z- `' C7 l3 g& |1 H2 M' selse/ Z( g, \8 x& R/ L
{
2 p% `4 v, h" E0 h! f setrot(involved, x4, y4, z4);
, ~# F# ?. }5 T7 R6 \! g, g$ P4 n setlabel(involved,"Rotation","noRotation");. A& C! |- @8 J* ~% g \
}$ U# F" f' f' S; z2 [5 C
判断的代码如下:/ Q+ P; U& q" A
/**Custom Code*/
1 \+ L- N7 Y! C1 |Object current =ownerobject(c);; ?8 q W. A0 p
Object item = param(1);
* s# |# S1 L( ~int port = param(2);1 G) E5 G3 G* T2 x3 [
, ^3 U7 \% v' s5 U w8 xObject involved = item;1 A0 _# p+ Y J7 j' ^+ @
% B3 d& d7 i* z5 B0 F) i; H
string labelVal = getlabelstr(involved, "Rotation");
1 N2 |% P! `( k( e7 ?" E2 F4 h; N
if(labelVal == "xRotation")$ p& |; C% ^, s G+ S
{+ q) a; K4 [0 m }
return 1; // Divert the item to port 1
+ u, E: {2 m0 T- b: i' X/ U}
: _. i$ u7 W3 R0 w/ s: {; n+ B4 |else if(labelVal == "zRotation")9 I, R6 A# b+ P: I& M
{, ]& L" v" m0 O$ c( z6 C) L
return 2; // Divert the item to port 2
* N, K3 M1 j+ F}5 h3 u3 c; Y; P: v; v/ L" t$ n1 Z7 I
else if(labelVal == "xzRotation")
0 H n* e' i2 P* V" d X3 ?5 c; W, p{
& V) r# H4 g: Z1 y4 _# n return 3; // Divert the item to port 3
) r Y; q# F3 R9 D% b u}1 u0 b1 l- z, A, i6 b+ M5 V! X( r! {& F
else if(labelVal == "noRotation")
; v9 C4 V) ?5 n( E' W# ^" S$ ^0 R{
" V$ R# v- A! S. c7 T return 4; // Divert the item to port 4
* L: q) d( G( B/ J' F- O# o}0 z: k9 @8 H2 @2 m1 ~- q
+ Q" L4 x1 u1 X$ J0 e模型附上:
9 C6 { ?4 \5 h9 O, a7 T9 @ h% K |