我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!- N% ~, v4 p4 t5 H1 K5 v. m
发生器的代码如下:
0 k- t9 e! q9 T/**Custom Code*/
& K9 M* D9 B8 ` ]) V
l. R$ v+ }# p$ b. \Object current = ownerobject(c);' B: ?3 u3 z3 y, a9 ~* }+ N0 W
Object item = param(1);
. c3 ~5 o7 {1 Hint port = param(2);
* A9 Z+ ^) r* k4 p3 h3 \
8 Z3 d" y6 a7 V6 Y2 TObject involved = item;0 G0 t: r/ _* J# G) r2 C
double x1 =180;) X) w- m* m) N% l. |9 w
double y1 = 0;
; w' k( m7 [% V+ g! \3 b Zdouble z1 = 0;
2 ]/ o2 U. N' n J- u: J) b* \. g1 d3 K$ a. Z( H$ ]
double x2 = 0;( U6 C* Z2 P! d) D3 s% d
double y2 = 0;
% m4 X3 Z4 H+ }2 ?' qdouble z2 = 180;
' w. f0 G5 J$ ~! i; R o
3 h3 t7 E" y8 x5 Z# d) C: bdouble x3 = 180;
% D* W9 L" u) N% V# g H: sdouble y3 = 0;
4 T: X% c2 c) i: t; X7 L6 R/ Xdouble z3 = 180;! f: G1 M6 Q' Q1 [; t
& d: m( z4 |' @( w: G
double x4 = 0;
3 Z4 w# q- @0 b) Hdouble y4 = 0;
3 z* l5 ?7 |: i9 C- I8 t$ k6 s7 Idouble z4 = 0;1 [$ D% e. e7 ~& A3 S8 |
0 T* X8 j5 Z% l- Z# Gdouble randomVal = duniform(0, 4);' F% ?0 Y. g* M. h" _ S. \
if(randomVal < 1)
! W; [1 I( s# |{+ ~( h8 s. {1 [( c8 Q: A' \
setrot(involved, x1, y1, z1);
) z8 o' G# e: s5 g setlabel(involved,"Rotation","xRotation");
3 Z$ u! a* ]! i}* ]: O" R. ], v) _8 d
else if( randomVal < 2)
; t4 V+ F/ [& K/ O1 m- d/ B) }, m$ L{
1 Y4 T( m% j' u1 X! x setrot(involved, x2, y2, z2);5 a0 x( z- c9 f d( w# y2 p1 p/ s
setlabel(involved,"Rotation","zRotation");
# D. O* X( [0 J9 G* q1 e6 B}, j# K8 @" c! N3 K' _( _+ m- \
else if(randomVal < 3 )
4 K: ~. p O6 P; w{( {3 y: ~# R" c" {5 y
setrot(involved, x3, y3, z3);0 G3 U8 d6 b* J/ f
setlabel(involved,"Rotation","xzRotation");. X- R/ D7 ~* m! K" B
}
; v+ r# }' `7 f' L0 H6 S) Y! h: M7 Telse$ D! c" g x5 V; O
{
! y. T! C' Q+ o A setrot(involved, x4, y4, z4);/ e7 N8 h9 Q* k
setlabel(involved,"Rotation","noRotation");- l4 U* L+ i" P# B; ]# @0 d$ K
}% i' C5 l& F) v7 H# B! v! u1 P
判断的代码如下:& _1 V/ p# h' ]3 t3 ^
/**Custom Code*/
1 P6 v6 g9 l7 Z8 @$ EObject current =ownerobject(c);
$ s- L" @3 p h. W7 r" {Object item = param(1);
6 i" { d Q2 w, y6 P: h( O- tint port = param(2);5 I$ W' X( o& g6 a
0 S# j0 y* `( D& W- n6 g3 T& ~
Object involved = item;
& U" s g% x" J
: A( P) q, O# i% }" W3 Y6 Xstring labelVal = getlabelstr(involved, "Rotation");
: v: e% D }! ]0 Z% ~/ T) @# W' K% Z
1 Z% z4 P' M9 Y% cif(labelVal == "xRotation")
5 F, E5 Q, |6 }, l9 m{
. P6 c3 V5 V6 y* I# z' p return 1; // Divert the item to port 1
2 X, @! W' ~5 I3 \3 n; B( W}) T7 h" f3 U8 [; I
else if(labelVal == "zRotation"). g: r* B, M7 `6 h# M2 ~. O
{
" k `3 Y+ @1 S# @, U8 i! e return 2; // Divert the item to port 2
+ ~# }2 L; h J. T4 G}
; A3 k& r1 L* F( Q/ Z6 ~' Eelse if(labelVal == "xzRotation")! e2 n; ?9 ^4 m! j6 O0 X
{! `! O" |/ J6 v G, @ r9 j# [
return 3; // Divert the item to port 3- ]7 W) o5 W0 m8 f0 v. t
}
( D/ o5 z6 p- }& `! V) }! y! gelse if(labelVal == "noRotation")0 O( J; C( i2 {) W) P! R
{
% n) y6 n! _& d6 e& T$ R# } return 4; // Divert the item to port 44 D1 y" z4 w6 z9 Q+ }9 d* {; ^
}
+ b1 N8 ~3 z3 ?, h1 ^) C2 ?4 `+ N. o, A
+ G: b/ {! C+ e模型附上:
: g& O# s9 L$ Z6 X, a |