我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
+ J @. m9 l9 \! }' k5 c6 Y发生器的代码如下:
* @# D B) w( g/**Custom Code*/
& A4 L7 R$ K+ |. @# v% @) X
8 V4 g. C+ W1 B9 j SObject current = ownerobject(c);" h9 K4 h5 N5 P" r" D
Object item = param(1);
) f: }# s, }; {& Cint port = param(2);, ]4 w1 d; D: L5 S' U! d
- ~1 W2 S2 @! C8 e* k6 c5 {Object involved = item;
. V" ~/ a4 {, U% f0 @6 cdouble x1 =180;
/ G! |0 R5 i+ X# s) Q& h; Odouble y1 = 0;
; E: W/ E Z& U @double z1 = 0;% [0 u+ T, G) R9 \
3 A2 B2 c0 P* [% [* z4 P% Q+ t7 {& edouble x2 = 0;
7 A; U4 L- O- B- M: idouble y2 = 0;6 M9 ^2 q f0 v
double z2 = 180;
. a/ g I/ u" I; i3 j2 ]
: q% c# k& P; f2 P/ q' g2 J# q. ]5 wdouble x3 = 180;
; x# k+ Z' U5 Ydouble y3 = 0;
3 J1 I4 m: W! i. z" D4 d+ ]double z3 = 180;
" Z. h: f, ~ ]0 a* f9 `- d# F6 L( U5 R" g
double x4 = 0;
& J6 V* v2 ]+ m. i* |double y4 = 0;
6 o+ ^1 \! z# P0 S( f- H; z. Bdouble z4 = 0;
+ V; I p k; L- _) S: Z9 q, }" V! {. ?7 c
double randomVal = duniform(0, 4);
& H7 g2 ~- F1 i9 w$ aif(randomVal < 1)$ o k$ d5 h, s7 H. W# D4 c
{
* e! B6 T: S/ B% Z1 q5 U setrot(involved, x1, y1, z1);$ e Q" r# k5 Z6 u1 i2 x2 ^
setlabel(involved,"Rotation","xRotation");
3 s4 ~+ ~, s4 i& P}
3 D6 `) H0 o& r( e: ~- qelse if( randomVal < 2)
6 ]. }+ w w7 Z{
& y, | L8 @5 e# n7 P+ k5 \$ l setrot(involved, x2, y2, z2);" C9 g$ p& `+ z) T
setlabel(involved,"Rotation","zRotation");
u9 X5 X) y2 h}
% N8 f( U0 e# z$ ?( m5 g, aelse if(randomVal < 3 )
* _8 T: F- p# I{; ~9 U; \1 J) J% e: j5 o
setrot(involved, x3, y3, z3);
+ c) R' ^ x( s9 v setlabel(involved,"Rotation","xzRotation");* o2 i4 O2 [- k% u1 B
}
7 ]0 `$ A7 I/ u2 h: _: Ielse: }# M) r6 u0 D& f$ J
{% \! ]) \5 Z9 E6 e2 a, a" I2 |. |
setrot(involved, x4, y4, z4);+ r! f* r- Q- E+ ?9 Y8 U
setlabel(involved,"Rotation","noRotation");
! M& T! U2 c/ x8 ~) `}
% W2 s1 E: u0 c' v& j. |5 j判断的代码如下:- J( \, a: w5 D; y) t8 e7 @
/**Custom Code*/
5 e1 m9 B5 b7 d! v# @0 EObject current =ownerobject(c);' `% S: |) P1 @0 H; I, |& F, y
Object item = param(1);
9 W# T; C x8 o! zint port = param(2);
# a1 v2 x4 G- u' X+ n# J: d3 ^5 ]4 ~, C$ S6 P
Object involved = item;( m1 h6 g( @9 n4 J9 B: q
' N4 z1 A* s3 a& t4 bstring labelVal = getlabelstr(involved, "Rotation");
' V" {4 A9 F0 ]$ B
3 g0 V5 j5 K" z5 C- V& {( k( _if(labelVal == "xRotation")" [8 q' @: x F: e% ?
{, U; h% N- K1 K2 J3 {
return 1; // Divert the item to port 1! B" M; r5 }2 l/ A+ e
}' O/ F5 u3 F% y: a; \
else if(labelVal == "zRotation")" a$ {/ w! O: Z1 C9 b* |# }$ |
{% B. Q' c. x( ?8 C
return 2; // Divert the item to port 2
F# |$ @# v% S3 [6 q) B8 }}
- C! E* a+ \1 P* p) zelse if(labelVal == "xzRotation")2 i+ l9 g; i, l! l/ [) H# |9 {! e
{
: e& R0 j6 d9 K4 O+ a: u" L$ p% X return 3; // Divert the item to port 3
6 R5 y6 q0 ?; F, X+ x+ W7 i}
8 {/ m# x2 o$ a7 V6 r) A1 r/ [else if(labelVal == "noRotation")% p( S W+ `# p- b3 u
{9 ]. n5 n. Y/ n
return 4; // Divert the item to port 4
6 L2 D, {! _1 A8 ?}9 @! P& U% y4 D9 {
. ^% K7 r) `) i3 W, r9 b
模型附上:
- u* s5 ~/ i H/ Q& q! H Z |