全球FlexSim系统仿真中文论坛

标题: PF里判断命令代码无法识别标签的问题 [打印本页]

作者: 廉梦华    时间: 2023-12-13 08:46
标题: PF里判断命令代码无法识别标签的问题
我想达成的结果是——通过发生器创建四种不同的临时实体,分别是绕x轴旋转180度、绕z轴旋转180度、绕x轴和z轴旋转180度、不旋转这四种临时实体,同时给这四种临时实体赋标签分别为xRotation、zRotation、xzRotation、noRotation。然后从PF里的判断命令中引出4条支线1、2、3、4分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!# E3 {, e- o0 k7 I8 ~  V8 ^
发生器的代码如下:" ?& h% t' g3 T9 N$ }  |0 R. V- Y
/**Custom Code*/
3 ?5 r, Y% n: r) ^
& ]/ j# T' q7 L4 y7 {/ p5 |& EObject current = ownerobject(c);
' R( W8 `0 k/ t8 l2 V& p- MObject item = param(1);
' y; p1 G% M/ aint port = param(2);
2 v2 [' b/ N7 y; y) a% n$ c- t. R8 |* g7 \
Object involved = item;
/ J/ A( I6 d* J/ a) o- s% xdouble x1 =180;
9 J$ I( D5 c) |! H4 M( s. g! S  \5 hdouble y1 = 0;0 `2 A, P% h* }
double z1 = 0;! j/ M; q# Q3 C& {6 @8 P9 d

7 H; u4 t% [2 {6 Adouble x2 = 0;) u  q* X# Y% h! E- P& Q
double y2 = 0;9 M! ^. }4 x: @' }7 @% {
double z2 = 180;
5 A8 x( ]8 m4 V8 r) h$ V2 f9 {1 J! o5 A3 x
double x3 = 180;6 r; \6 _& \- P  p) J
double y3 = 0;9 d+ v7 v( z4 i+ F( t
double z3 = 180;
! a# G! _/ h; Q8 G) k7 \9 B+ f1 h8 k+ k9 _0 z4 r+ S3 u
double x4 = 0;
6 [4 |7 C( c9 |. ydouble y4 = 0;
) }) ?( f8 q" j7 @4 ]double z4 = 0;+ q0 W! [3 f8 ]& ~) e

- {; I4 C" O  e1 S6 F6 r- e9 R5 f2 Wdouble randomVal = duniform(0, 4);
$ e( S6 H* A3 z; I- n+ L2 Hif(randomVal < 1)/ q5 ~. @: j, w4 w1 `
{
0 O' l$ L0 {6 o1 Q: S& f5 S   setrot(involved, x1, y1, z1);# A1 ]1 Z8 p. S% X6 T
  setlabel(involved,"Rotation","xRotation");
3 t1 K/ L$ v* S}  y% H7 M5 Z1 k0 O9 P) u7 B/ Z+ {
else if( randomVal < 2)
: c' Z9 U. }4 B( A6 e{  2 t. G  U% W( b: G7 d: S% a9 x
    setrot(involved, x2, y2, z2);& _5 g& ~: ~" w
   setlabel(involved,"Rotation","zRotation");
( G- ]$ O6 O5 o1 g1 [( r1 F2 w# o}
- Q5 Q" f8 P7 T2 k5 n+ {# D' c3 belse if(randomVal < 3 )3 H4 }; ?3 ]5 a) w6 S( K
{
" D* z7 N( m! v. T8 g& M0 m    setrot(involved, x3, y3, z3);$ h1 ?' D4 C  S! s9 b7 G3 u4 N
   setlabel(involved,"Rotation","xzRotation");
# y$ E  E/ P, m- [9 \}
1 z, r$ R% m: B, W6 celse# C4 k/ L0 @! z3 `
{
& R* L" W9 q( G    setrot(involved, x4, y4, z4);
& f  g$ M7 W% B# e4 s* Y, r  setlabel(involved,"Rotation","noRotation");5 w3 J: \, a- s9 ]- d7 w
}. ?' m& Q- W4 u: L, I7 ^9 U
判断的代码如下:
9 b( `9 F4 u* }+ w: \5 ?. {/ B/**Custom Code*/
( n0 s2 G1 H; x) F4 _5 R8 zObject current =ownerobject(c);
( W# C0 E6 b# ~3 b$ P7 KObject item = param(1);
: R' ?4 {0 S& o% g; k) fint port = param(2);
7 g9 C  P, i8 r+ m# M% z4 `6 b$ `. t- t/ M/ v
Object involved = item;. q. u/ P; C! x% a5 [& p2 ?

1 }9 X8 m$ `6 N6 }string labelVal = getlabelstr(involved, "Rotation");
. l1 P* D9 y8 v" D
/ m( l7 s" E( h; D: P+ l1 }if(labelVal == "xRotation")9 d# U9 S! U( y  S: J5 e, t
{
6 u. I8 j: V3 ^+ v2 S    return 1; // Divert the item to port 1
8 G, S! ^8 I' K/ @( U# d; x$ p: v}4 W# T6 Q9 p  E" @0 l; ?1 ?
else if(labelVal == "zRotation")0 F6 y. [& C9 m, D5 D$ j
{
: h( }' g( S$ }/ B! P    return 2; // Divert the item to port 2* o, ]% I5 v  P5 @8 ^
}
) k0 }5 V& C$ @% e6 _7 {else if(labelVal == "xzRotation")
4 O9 Z8 H. s3 U0 p3 N3 Z) g{
% S2 M! I2 q3 l8 S& Q8 u    return 3; // Divert the item to port 33 i9 A. z' m7 {- W3 L' r5 g
}
" F" @2 `# |( V* Zelse if(labelVal == "noRotation")7 n; K2 N6 b- A/ m/ k
{2 H$ R  E0 `  O3 P( P4 @
    return 4; // Divert the item to port 4- s& F# i+ x- j5 O& ~( l
}
. a7 ~' @# x. a6 C7 s9 E+ x" X+ }6 c7 [$ Y, a( ^. T
模型附上:
3 }- [, E8 ]. e1 j2 G- z  T
作者: csn-support    时间: 2023-12-13 09:58
在pf中没有对四种类型的标签赋值,需要赋值以后再进行判断。' I8 q3 @' O& E/ q% f( A" [* ~

作者: 廉梦华    时间: 2023-12-13 11:53
csn-support 发表于 2023-12-13 09:58
7 D  f4 {, n1 l$ L" i8 \0 Q在pf中没有对四种类型的标签赋值,需要赋值以后再进行判断。

7 M% r, g/ r/ V) i& c: S2 \& B谢谢!谢谢!十分感谢老师的指导,
作者: csn-support    时间: 2023-12-13 12:07
廉梦华 发表于 2023-12-13 11:53
$ V' _" T  T* j6 o谢谢!谢谢!十分感谢老师的指导,
  q0 l2 z0 D* E  r1 r$ h
直接读取标签也可以,不过要记得加上token.( Y6 p* L: K* W3 {: Q; H. T

作者: 廉梦华    时间: 2023-12-13 13:40
csn-support 发表于 2023-12-13 12:07
% h0 J) ]4 U2 C! q  W) ]! h直接读取标签也可以,不过要记得加上token.

3 n) m+ q% O  Z6 K5 Y( R" {( o& \/ A" t感谢老师的指导




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3