我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
, g' D! }/ f- x/ L0 O! n发生器的代码如下:
8 ^# @' v; B8 F& u/ A4 o/**Custom Code*/
o/ X$ j% n; A! O6 R. d/ B! B- q8 w% L% y+ G a' Q3 Z- `
Object current = ownerobject(c);
0 D5 N0 l" P3 r* g8 R; t. F8 E6 ~Object item = param(1);$ ^/ t! {6 f# k M1 H& p
int port = param(2);
2 ?( q3 E- m! l0 [
& u2 a/ c7 O# Q; cObject involved = item;
0 }1 U# t( y0 `9 }double x1 =180;
9 F0 R6 D& T* n2 }* J" t; xdouble y1 = 0;
3 T- X7 n) |+ I+ F* Rdouble z1 = 0;
7 I: t& a4 e$ _: t0 t7 V
7 V: A' }6 m$ J" ^$ T: [double x2 = 0;# o2 k- D4 q, `
double y2 = 0;
) y( @7 S6 }! g. k% y1 |double z2 = 180;6 f: N* R" U1 r
; u% g& }" c- f, h3 S; a
double x3 = 180;. q$ L, r9 ?9 L8 a
double y3 = 0;& X% A& \0 A7 J# A. I% g. a4 b
double z3 = 180;
+ h( h) X# O; C2 Z- A5 x% U A& w% |" \& }2 ?9 _
double x4 = 0;
" w9 C' t$ U1 Ndouble y4 = 0;1 [. l4 H4 e5 r9 t$ |( ?3 x1 x
double z4 = 0;& F" y: q1 F! J( r' R4 h2 d; F
+ d: [/ ^& O6 f& E! U$ ^double randomVal = duniform(0, 4);5 J# U v, H+ H! v
if(randomVal < 1)
6 z- L* t7 _+ U. f6 B6 y6 H8 F{1 @, E: L' g3 j' g
setrot(involved, x1, y1, z1);
3 @+ e& O5 @: V& g( I0 H$ k setlabel(involved,"Rotation","xRotation");
+ ^& j4 f& f/ N2 [ j9 N$ C5 E! a}9 l9 W4 B) v) k1 K+ F( P
else if( randomVal < 2)
& M: b' H% y! i) J) v8 K{ . P% Y6 y4 n7 f2 A
setrot(involved, x2, y2, z2);- Q# Z; N9 O- _5 u
setlabel(involved,"Rotation","zRotation");
! c! y5 O6 @$ z: J8 e}
' ]" D. M: @0 h6 H6 selse if(randomVal < 3 )$ o: z- F0 V% }. ?: c9 s# [& J
{4 U5 H+ N5 v' }9 y% T: E$ X
setrot(involved, x3, y3, z3);
- @& ]0 p, f& p; f, z setlabel(involved,"Rotation","xzRotation");+ t& i/ v% W( N1 A) L" j9 n2 p& w
}
( O) P3 i8 Q9 H* c1 ^$ xelse
3 Q; O; m' l* S3 C{5 Y! t- Q6 t3 ^! j P L3 F
setrot(involved, x4, y4, z4);4 [+ v; v. u5 g& e/ @1 l; x2 L- |9 o
setlabel(involved,"Rotation","noRotation");
" }- W, K9 ^! T- T( e, A) b# h; O}
! a4 n- c4 x$ \* ^8 Y6 A$ Y判断的代码如下:% u' F1 a( F6 v# b! `% L
/**Custom Code*/9 ~0 [+ r V/ o! A4 D
Object current =ownerobject(c);, k$ ~) o3 N0 h$ z
Object item = param(1);
5 g4 U" D: N* Z& Pint port = param(2);8 V% X8 e# b8 _; I
* N4 j# A. T- Z+ S
Object involved = item;
& g3 S9 E I3 p# a/ z) x" L6 s& O; P' O- v% j
string labelVal = getlabelstr(involved, "Rotation");9 b D0 u# S7 q2 A m
( O8 B( Q+ l- Eif(labelVal == "xRotation") t4 E- \, s1 Z1 C/ Z4 F
{+ R. Q' j; {2 [
return 1; // Divert the item to port 1& @+ p# G J+ A6 t" F H* A( G
}
6 ?* \6 V/ [* @: E8 Xelse if(labelVal == "zRotation")
" }8 w0 v- l9 S* v{
9 T$ [3 P8 s; V# h* M: P5 ] return 2; // Divert the item to port 2
& }- K3 e5 u. z1 r}
I; ~" {/ n& }, @else if(labelVal == "xzRotation")& Y0 x% _& ~, L, C3 m6 r {) s9 i
{& Y1 I( l" B8 J- W7 n! m
return 3; // Divert the item to port 3
7 x. o ?. C' i; q}
* H2 U2 k# t& a# n0 uelse if(labelVal == "noRotation")1 a+ M( y& d$ G9 ^) |! s
{# C1 v3 v: B9 [+ b
return 4; // Divert the item to port 4
9 _$ T% z( {. h+ _}
: o$ x: ~7 r' B$ Z+ T; ? U4 S8 i/ P) i/ a9 w7 j
模型附上:
: ]" @! B2 |5 ~! r9 w |