我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!" b& P' Q# F1 |( @$ f
发生器的代码如下:/ j5 K. F' x! `1 v) B3 I
/**Custom Code*/& r+ K i; h* P* M& h$ a
) j/ J- T% I1 m+ k) ? x- v8 \
Object current = ownerobject(c);! M$ B# Z |( d0 d- D6 {# ^) [. D
Object item = param(1);3 q4 l, I# t' p' | E+ ]
int port = param(2);
4 g, X% H, U* ~7 ~1 S [) s8 N$ S1 A
Object involved = item;% ]# s7 {: k$ R% Y$ B3 Y0 s
double x1 =180;
. z' q0 V6 p% X9 d* Cdouble y1 = 0;
8 W) O u3 ]6 \: z) ~double z1 = 0;/ u& f6 }' ^% e' M/ Q% O
. B3 E7 d c( Q; J; R7 l2 [
double x2 = 0;7 ?9 i) [- O/ }+ e' ^. b7 |
double y2 = 0;* _8 A3 c s- h1 c
double z2 = 180;
: V0 y; o- R# u: g- O4 I0 v# p P; f$ e7 }
double x3 = 180;4 T$ C5 s7 {- M" q
double y3 = 0;$ ^2 ]8 _) Y5 |6 {+ z( m
double z3 = 180;
2 p% ]2 `' m' B4 X( w$ Q. s9 }( i
5 ]7 Q& } b5 D8 d+ M! r- t# `double x4 = 0;/ m" O' ]5 ]* w6 U/ J
double y4 = 0;
$ |/ ^! F u" {4 ?0 @double z4 = 0;( P) j3 O7 x" G& t
4 O$ W! J+ M+ D, O9 b$ } xdouble randomVal = duniform(0, 4);
. C. X4 _$ R+ U# D2 l9 _if(randomVal < 1)( S' v5 N( k$ a) T! {7 q0 \
{
& x& ], h: n: ~* E setrot(involved, x1, y1, z1);+ }) b+ M+ C: m* o$ D/ h- C
setlabel(involved,"Rotation","xRotation");
2 [5 h' \. R: U# j& ?0 B}6 F7 L" v0 ^0 D8 b3 k+ T
else if( randomVal < 2); }/ ^5 K( N& P5 g" u) B' M3 b
{
* W+ B. j$ s" O$ p- ]! U setrot(involved, x2, y2, z2);
1 x9 y* A, |& S2 j' K9 \ setlabel(involved,"Rotation","zRotation");
0 \6 e8 |* b% {1 l}6 J( t# T) Z; P8 w3 U0 @) ]: t' g
else if(randomVal < 3 )# |! e# s6 R `: X
{/ v9 L I. z) Z! u. a+ ~' a+ M
setrot(involved, x3, y3, z3);, b1 J5 L+ H$ m g( \% @
setlabel(involved,"Rotation","xzRotation");2 i; b& R$ H1 Z5 V! j; `" Z. z9 E( B
}
# J# G- v* B- V2 r% g/ |- lelse8 M, A0 ?% |, R& F
{
8 M2 L% R# ?0 m( Q4 { F setrot(involved, x4, y4, z4);
* Z8 N s+ l6 ~& H: M {4 | setlabel(involved,"Rotation","noRotation");. C& t1 Z$ _1 Z$ F+ T0 L
}# g( D7 a& D# ~4 w8 g# ?) G$ p
判断的代码如下:
5 E+ J8 ^# ~, Q0 z$ o9 L/**Custom Code*/: _5 q6 C2 h! o% d7 |2 x/ Q) w
Object current =ownerobject(c);
; Y4 Z+ ~. T0 D5 zObject item = param(1);
; R2 A1 r% M$ d5 i$ s hint port = param(2);
) z( i) z; |8 c1 U) h N7 q3 Z+ }: Y i0 E' }+ ]6 h
Object involved = item;
4 B# n; O: k4 F4 m0 B9 r0 N( U
( R9 m: e1 N# ]( O( T9 g5 rstring labelVal = getlabelstr(involved, "Rotation");4 l7 W% w, A" L4 {: S. v4 K
+ O. Y- E+ t, x+ q' ^0 p/ Z5 [/ jif(labelVal == "xRotation")6 P& `$ z$ u8 a
{: I* v9 t5 E+ p) L ^0 U0 b% s4 [
return 1; // Divert the item to port 1
; Q, F6 u/ I, c; U6 l) r3 H" J}0 V. i- ?) K% v$ W3 G( }* F
else if(labelVal == "zRotation")
+ S/ v9 A) P5 ~6 m# a' {* ?1 }9 Y{+ w, M8 h$ X8 @! {" P# ~
return 2; // Divert the item to port 2* |0 J5 n, E# j# _
}
& u5 U3 I: I2 L qelse if(labelVal == "xzRotation"); `' U0 I2 _$ ^9 \; L) U* Q0 i5 R
{
7 ?/ @. m/ R. ^ return 3; // Divert the item to port 3- [. E8 \+ h0 C8 J
}* ^0 n9 n2 x3 x. H& k; _
else if(labelVal == "noRotation")
# c0 e! B- H1 }; U; E* ?# a{
* @- E* h' ~' z return 4; // Divert the item to port 4
$ U( f$ N: [4 X' g9 x ?& g. u}& n+ J* ~1 _# c/ N4 l
% C" q7 z2 P* l* h' Y
模型附上:& h, F' V( {! S
|