我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
3 z2 J7 _7 W7 G发生器的代码如下:
/ i" B% K- S3 c/**Custom Code*// J3 e/ V: i6 L0 G* g) U {. K m
- p# K4 Z* b# @* g) S) C! o+ KObject current = ownerobject(c); N# K3 C5 N( c# q V' Y
Object item = param(1);
3 Q. `5 i# r( s. ?+ gint port = param(2);
% h' q) _# `6 P" H/ ^7 }& _$ D
6 Z5 d6 z- x; YObject involved = item; v( y K7 }) Z) i5 S
double x1 =180;
0 K0 P( p7 S. d6 A. J8 \# hdouble y1 = 0;/ e% ^/ j! H7 @% ]& K0 h+ P$ R, s: X
double z1 = 0;# K# p% V X$ ^5 G
: \2 k# r: F+ F* e
double x2 = 0;
2 V1 L" {' p5 n$ Ldouble y2 = 0;$ G3 X, B6 e: _( F; p& a
double z2 = 180;
" H. V# ?7 E8 Y- B4 h
6 K7 T$ U5 A7 M. {) S$ ydouble x3 = 180;
5 X8 u# `. D) C8 V8 f$ q% Mdouble y3 = 0;
; [2 M& t7 T( P, u. n+ adouble z3 = 180;# f% u2 [0 V" G$ J2 U( |
% Q9 L. q% v7 {" p6 R
double x4 = 0;
) |" s& U$ l$ |) ?double y4 = 0;% b1 V/ P, Q, S# \! ?
double z4 = 0;
) d0 b: I. C0 x. V% Y: @
: }$ o7 E3 @: P1 g4 U; R9 [! H gdouble randomVal = duniform(0, 4);
0 V- b6 G5 w8 H) O2 J3 [9 D9 Vif(randomVal < 1)
; w) T9 Z6 Q1 j ?+ u{. e& [; A' J5 D
setrot(involved, x1, y1, z1);3 o; Z: q8 `0 |& B4 U }7 F
setlabel(involved,"Rotation","xRotation");/ t8 W# e! {* T4 R1 d% Y; P
}
6 x* Y9 m% f3 }$ ^: `else if( randomVal < 2)1 Q- s/ F# F! M
{
7 W7 E* J v' |+ R9 W; d setrot(involved, x2, y2, z2);3 g/ p" n( t; Z9 y" k( Y& X T
setlabel(involved,"Rotation","zRotation");
# k1 b- Q( @6 x. E% Q1 H}
" ]( p. l2 ]0 _) eelse if(randomVal < 3 )5 q% K2 S4 o) x" m3 b
{
- m4 R, L' R1 B4 w setrot(involved, x3, y3, z3);
6 ?! R5 S# b) G7 ^ setlabel(involved,"Rotation","xzRotation");2 Z# _. d. T, N2 C/ U0 L7 i
}/ h5 }4 P, O, ]( P, m
else
2 ]/ E; K6 O; v% L{5 C, O: J& x8 Q: j
setrot(involved, x4, y4, z4);6 a; B! G" E* k
setlabel(involved,"Rotation","noRotation");( x; g$ _% P2 x) I% u' A! U i
}: u0 b" i3 T b% M
判断的代码如下:0 v! @6 T* x' W0 d; v( ~# R
/**Custom Code*/
2 ?0 A5 F, K: l: _Object current =ownerobject(c);
U7 s8 V& a" zObject item = param(1);& W% L- Q; `- L5 n& i3 v9 X! X
int port = param(2);
9 T; G" w/ o; ~1 X+ t3 P$ g% z6 [6 z8 F( B
Object involved = item;
/ |; l$ A" r, @2 b {# G% Q$ P: P- S% Z. L/ K" @; x
string labelVal = getlabelstr(involved, "Rotation");
: q; G, J X$ u5 O% s$ f6 Y
5 c) s, q+ ^* X9 s7 ?9 Vif(labelVal == "xRotation"): s% O6 m8 Q: p# i6 D ]
{2 W. ^! `, I, A) }
return 1; // Divert the item to port 1
* p0 ]' q3 i: I; F* C3 O! h' p}3 ^8 x% A( p! A n0 r- U
else if(labelVal == "zRotation")+ q8 P2 [& j' k/ V
{
' ^; u9 d, u) T1 ^ return 2; // Divert the item to port 2
: J9 p: b% R0 f1 `}
% s; j+ ]7 K; _. g5 xelse if(labelVal == "xzRotation")6 @ M! [. x% L7 f/ B. e
{( {5 j) Y+ `+ e- t3 s s& c) Q
return 3; // Divert the item to port 3
$ K `- r+ D5 Y, y: `: g}! Y' a0 g, |9 P( v" z9 X0 e$ j
else if(labelVal == "noRotation")" ~ C' {. e! K2 H% r( v- B( N+ j4 x
{/ `- X$ m: X+ x7 x
return 4; // Divert the item to port 4% v6 }* n7 X" t7 e5 m. O$ }4 Z
}$ ]7 r) c# p. s" z1 }1 k7 Y" z
" q1 w2 }0 o2 P: }% W+ d模型附上: A" j* w$ }$ r& e# M6 t; O) _
|