我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!3 p' Y2 ?) d# U- X `( Q9 C. u0 \
发生器的代码如下:
+ S/ \: @* ?7 _, p z/**Custom Code*/2 T/ q7 n: u) W3 {
0 q" U: p5 v# e9 p; R- {* o
Object current = ownerobject(c);
- b# H1 J) y5 K0 C4 {& B! f! m( YObject item = param(1);" h3 L$ N, F# t# {) |7 ?- ]: ^
int port = param(2);2 K$ a% _$ M5 ~2 [3 p
) ~* |, W& k% J. g" EObject involved = item;
+ W. @" g& e+ D3 ^! }7 gdouble x1 =180;" E! W+ a9 W5 s' `! @" k7 l
double y1 = 0;4 T& X6 d) f3 a- b, L" B9 [ f
double z1 = 0;. A0 S- b+ @$ p; i! F0 o" a$ i
+ B; {' a4 ]. y, z6 e/ D, m7 u. y* M
double x2 = 0;
1 K+ }' A$ M6 g f* T# Adouble y2 = 0;1 l! p; b& q" B6 t- s) ~
double z2 = 180;$ e6 |; I/ `% C/ M& | o
5 B1 D% n* o- L3 X) M
double x3 = 180;4 N8 k( q0 f W: }# K" L1 t9 d8 V' B
double y3 = 0;
& ~7 H+ h5 \- `; P8 ]double z3 = 180;! `, y0 _5 I# ~# |. v* I. ?
4 \/ u5 d i& d1 H8 J8 s3 r2 `, L
double x4 = 0;
; `4 ]4 O. \/ m( }& t0 Fdouble y4 = 0;
3 n! L$ w+ k$ e4 R& H+ b, B- Ndouble z4 = 0;
+ S% \3 B/ W: {9 u/ m
# C: Y$ N C7 ?: E9 m; Y/ Ndouble randomVal = duniform(0, 4);
& l: @" v% Q' {: G: I( qif(randomVal < 1)0 x$ E, K5 e8 f
{
1 m7 q: O7 {$ v/ v setrot(involved, x1, y1, z1);0 n# h4 l8 V1 y3 ~& a8 L
setlabel(involved,"Rotation","xRotation");
( @1 B# @+ Q3 \8 A}
6 o2 H6 z5 i8 Felse if( randomVal < 2)$ R; ?) y, {0 n# S5 Y% H7 m
{ / B4 l% u5 ^9 K# r& q' L
setrot(involved, x2, y2, z2);
# X& s: j8 Y, u setlabel(involved,"Rotation","zRotation");0 e' @( F6 }2 S. T8 _$ H% K/ E
}
0 k3 F/ y. r% t$ j" `$ Oelse if(randomVal < 3 )
! E7 R& }5 D/ z5 A{7 ?; A9 Z+ k% A4 J# W# m6 L' }
setrot(involved, x3, y3, z3);
; `/ V- W* o' `$ A: H% f setlabel(involved,"Rotation","xzRotation");5 z1 P3 I5 \7 Z. W7 P H n* J$ E2 m
}
7 V( \$ Y, Q# z3 U+ I& ?else& ]" O, x( c! i X7 K# I: E; m, u
{
" K& e* S, D/ m d2 k setrot(involved, x4, y4, z4);
f6 G9 i* |+ P K- `3 X setlabel(involved,"Rotation","noRotation");
# k0 h: z- c3 j" {0 j' I; \}9 Y8 n/ E5 \$ M; g
判断的代码如下:
9 X3 |1 A7 v1 q* B/**Custom Code*/& r, @. @$ R7 `3 @# ?& n: D
Object current =ownerobject(c);
! d: z# J7 S( y+ h, {' S0 _# UObject item = param(1);
" b1 J+ Q' r2 X9 `int port = param(2);' j) }8 ^/ {" t0 h2 k
0 Y: f1 W* h" c" Z- R! K& jObject involved = item;
6 M) Q1 u6 h' u3 T' `# U( D) u g0 Z: D. Z) _
string labelVal = getlabelstr(involved, "Rotation");
7 d9 T1 V* ~! m/ ?; }$ F
8 U) e6 P! s' Y+ }/ y# Aif(labelVal == "xRotation")
* G" }+ Q+ N: b, Y{. t0 n2 F5 |) z5 T/ v1 r
return 1; // Divert the item to port 1
+ b8 M8 E+ F5 I0 o}! a0 f$ B- F7 g W/ E0 @6 Q
else if(labelVal == "zRotation")
: g7 m( l) {! h0 x4 L5 g& c{
4 V% l8 y3 x; c q return 2; // Divert the item to port 25 W6 B4 k6 H8 k/ }
}2 p, S6 ^- e: B7 q3 v- l# K1 u7 l
else if(labelVal == "xzRotation")
' H6 ?/ H; d( r2 ~4 t$ Q \{) n2 q$ ^. b* ]. Z% {
return 3; // Divert the item to port 3
( I1 S& ~% K. w}
: k3 Q, q$ n( V) y+ Velse if(labelVal == "noRotation")* ]0 t' W* e/ l
{
8 f, a1 _$ n3 }4 {) B5 b6 I! S/ X return 4; // Divert the item to port 44 P& j+ N: W+ P D) V
}& S2 R$ q0 I) \" { }* y: ^3 I
% p( \1 `+ r6 d' @* C模型附上:
G" |; S6 x0 o |