我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!/ Z' v8 a1 O5 ~( O
发生器的代码如下: f: S l/ S7 Y
/**Custom Code*/# @1 B; `$ e, m( {5 u
3 B* ~" N: ~: b+ `
Object current = ownerobject(c);
- J" N; c" w6 e6 ~# \. x1 O+ oObject item = param(1);
( y+ B" y, Z; Y1 z9 @" e$ Vint port = param(2);
8 I ?: B c7 y, Q! q
9 ]3 X. Z+ E8 e$ k9 X/ fObject involved = item;* O8 k3 K; o2 q; u
double x1 =180;# y4 T1 W( R8 P6 B+ H P* b
double y1 = 0;+ ~6 M( @9 H, H5 c$ Z0 ]
double z1 = 0;: ?5 z7 H2 Y. S$ a+ Y8 A/ b
8 q3 i6 h) Y* d+ Ddouble x2 = 0;
& `- S5 X% b% j. A! adouble y2 = 0;
( N9 i/ ^$ P! u. fdouble z2 = 180;$ v7 B5 j) [2 }/ }4 U1 y) _# N
0 W( n0 W, V. `- ?( N) @double x3 = 180;5 j1 v: k/ @, b1 F3 D; U
double y3 = 0;2 D5 \8 c/ G" F# Y0 L8 \0 \2 x
double z3 = 180;; r Y8 G0 }; O' b4 `
2 w: M4 A; m: \8 b
double x4 = 0;$ Y, p' b% {+ Q; V- W" d$ B2 `* ~5 U
double y4 = 0;
% }) b" y- w3 E$ kdouble z4 = 0;- N2 z1 V1 J# R7 e" E6 ]
1 a# h2 w8 j1 v, _' u0 d) v
double randomVal = duniform(0, 4);3 r) V. H) N. b {
if(randomVal < 1)- I* H( c( z- J: t+ {; @9 {7 M
{* n- U2 m; p1 w d
setrot(involved, x1, y1, z1);
# d+ m8 {. Z X4 q% K2 F) p s" n setlabel(involved,"Rotation","xRotation");
& e& _% P! k; W7 x}5 Y6 V' \, ~0 L
else if( randomVal < 2)5 Z* m/ R& T6 f7 e, a+ X" h# ?5 x6 \4 i
{
, M i! ]/ P2 K9 X+ s7 Q setrot(involved, x2, y2, z2);
& U C# K$ `' i1 u2 Y setlabel(involved,"Rotation","zRotation");
& |# Q- w2 E! X}+ `: z- ?4 r8 ]: F
else if(randomVal < 3 )
' e* g8 u5 K5 l{
% [# z! I# c8 `# X) P setrot(involved, x3, y3, z3);
0 N8 V# G- ]$ V1 O5 S* M8 i, Q1 W; y/ U setlabel(involved,"Rotation","xzRotation");
. `5 t. Q! S- c}) F" G& I/ D# @7 v
else
- {' _2 w+ I% o% K- [" h2 x{
1 e# m) X+ O0 |& n' C4 h q setrot(involved, x4, y4, z4);. a7 M- a, j: U+ o' F1 G
setlabel(involved,"Rotation","noRotation");
5 n0 A$ M5 d4 e}* d7 x( O& [1 `
判断的代码如下:4 [7 X" T# B; {7 n
/**Custom Code*/) G( x8 \: e6 E, D- Y$ ?, n6 t+ h8 s
Object current =ownerobject(c);
# k) |( ~0 \, T: k- pObject item = param(1);
! K I' R, J; A W2 `int port = param(2);
5 G- M) N4 c( F9 @$ ^- |) s( L8 ~/ Y7 P$ U
Object involved = item;6 u5 b3 ]2 _: T" G# k7 T
& s8 }' G- b8 O4 \string labelVal = getlabelstr(involved, "Rotation");2 [* G' j2 I- U& h
! l* g! F$ J. e4 |" J* o7 i( ?if(labelVal == "xRotation")/ ~, i9 E; }1 m% _, `0 m/ y
{; r% `' f4 k2 B/ N: Z
return 1; // Divert the item to port 19 ~9 D& p' f! L* ^4 t1 I& H! A
}1 p; ^5 @. {- s* f4 @ _5 Z
else if(labelVal == "zRotation")6 D6 [8 E+ y/ F1 p3 b% p3 K
{' |; S9 {. \" I- b* [) o( C
return 2; // Divert the item to port 2
5 k8 o F- z* A8 a8 A0 s& `2 Q: {}
' @# X% U% n5 _1 Z1 A* helse if(labelVal == "xzRotation")5 l$ ]9 G0 K, g# G) Z
{
# h4 N9 a) ?+ z return 3; // Divert the item to port 3
" O+ m. ]0 ]7 ~7 ^8 f: v; y}5 O# I7 o1 Y: K" q1 [) L
else if(labelVal == "noRotation") U4 I9 a; L' v/ m: @
{
/ p/ |: l( f4 s; A. b return 4; // Divert the item to port 4: G, E1 H, Z2 x- o, e# m
}6 \. Y" k- R1 U5 J2 l/ {
+ U7 B! {1 M- I2 W
模型附上:
% }2 N& u7 Y! s2 g |