我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
2 K/ n3 Z% [ |2 y3 n7 ~. \发生器的代码如下:6 l4 c5 `- b) }( \$ i2 j8 w) J
/**Custom Code*/
' M6 i+ t. B# h" x
: @; L% `7 {* @! `# f% {Object current = ownerobject(c);* I- b) d# B: m2 p2 i+ x
Object item = param(1);" j4 c/ G+ q v, ?* u1 i+ k
int port = param(2);
4 l+ n0 K% x; W8 A* r/ n% h# e& @/ a+ w/ n
Object involved = item;. H* P2 x4 Q1 l
double x1 =180;, h5 B+ ?* O% v0 h3 Y% J( E
double y1 = 0;
. N+ u; A% T5 ~& K$ z: j1 o( Jdouble z1 = 0; L C, A% a6 C+ a( B
! a, t9 R/ W; I% @% P! m pdouble x2 = 0; Q9 ?% o8 F+ l1 ~
double y2 = 0;
& I. I8 m N- ]! `double z2 = 180;; i+ F( F# t+ x% N
5 @ h: W8 \; Ydouble x3 = 180;+ w9 X, O' z" T- C
double y3 = 0;7 a% h+ h7 }3 N, }5 Y, N
double z3 = 180;) E; F. L% l* b* V
" l: R- g1 s% y$ X4 j/ Sdouble x4 = 0;5 B! E* ]& A, W C6 C8 s
double y4 = 0;$ J% @9 L/ i0 @4 V U
double z4 = 0;# R/ _5 F1 Z) g
$ p3 O- _9 S1 B0 b4 {; ?
double randomVal = duniform(0, 4);& v5 z0 `, A# o# Q1 f
if(randomVal < 1)
5 U4 j8 E5 g( A" ]{
/ y' [# x" H4 H setrot(involved, x1, y1, z1);
) F( `4 }4 J8 g. Z; K- a Z setlabel(involved,"Rotation","xRotation");
% c6 C7 R2 d8 C0 X; [}6 A- E8 `7 T4 }4 Z
else if( randomVal < 2)4 @3 O: ^. J: M
{
: O. u$ L4 `* f setrot(involved, x2, y2, z2);+ w6 [! I9 W5 h' t
setlabel(involved,"Rotation","zRotation");2 X' z9 H; Z1 f3 w- j
}* Q+ i* Y r1 x1 V; X
else if(randomVal < 3 )& Y/ X* W2 c$ c6 T2 y8 N: J
{
1 t' ~+ J6 d2 P `' p1 \: k setrot(involved, x3, y3, z3);% h9 R3 U7 G" s% u
setlabel(involved,"Rotation","xzRotation");
7 r: N5 J; \ a1 v1 W. E8 Y' p/ F}! u, T8 y7 p, k% S1 A0 |8 p
else6 T f9 G! {: ~; g2 G+ R
{
# c+ Q$ o( x' r* x7 q setrot(involved, x4, y4, z4);
7 t7 P& h9 p0 A" p setlabel(involved,"Rotation","noRotation");
7 G: h. g# D/ W* c}' g2 [. Y" U {* v* n$ b6 j
判断的代码如下:
, W8 M( E9 k- f/ [/**Custom Code*/% Q0 P$ P |# K4 C. Z+ n2 d
Object current =ownerobject(c);4 u+ v, b3 L. U B0 X: j
Object item = param(1);
4 v0 X+ j8 E' r7 }% J# Eint port = param(2);# m9 t$ R v1 ?5 K: U
3 j5 u: ~9 `% k4 {$ }0 c) mObject involved = item;5 [& j; j8 A t% M
6 v) O5 |5 t. J9 O |! R
string labelVal = getlabelstr(involved, "Rotation");! e0 M# Y* H( i" t! g- y5 M5 c6 f1 I9 c
1 O" \# B% R$ I: b
if(labelVal == "xRotation")6 o8 R |4 ]8 D3 k4 P
{
0 C4 O5 ^3 m9 C, C: A; ] return 1; // Divert the item to port 1+ z2 g; J3 l- T2 V: C" u E
}
0 x# Q6 R- E$ \% |& Z; zelse if(labelVal == "zRotation")
3 M! m6 l) ]" D3 [% G{
* z% F8 |6 N! d return 2; // Divert the item to port 2
4 E! ^: u* u1 @7 k9 C" f% h7 y}" U! B3 O5 f# o+ R$ n) u: ^% L
else if(labelVal == "xzRotation")3 ~0 \( _9 t/ z2 J" S3 e' ]
{9 F$ R6 M/ p5 P/ F' s1 d' j
return 3; // Divert the item to port 3
! ~% ]* Y% s# X) X2 s- [) q2 t: }}7 l" y1 B J" Z" v4 F2 W7 b' p: m
else if(labelVal == "noRotation")6 F, }. T* G; j0 M0 t
{6 f8 f6 T6 |: i' Y' r, A- n4 U
return 4; // Divert the item to port 46 n, D8 X4 Z! E+ c
}
6 r. b* E+ V; y9 m$ @; _3 Y! ^4 ^9 v1 F7 G/ M, j8 ]& f
模型附上:" O) \9 s2 p1 \$ B6 p; B: x$ ~2 i
|