全球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分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!2 U% H! d! P/ E2 t) v* @3 X0 k
发生器的代码如下:4 R6 _1 }1 ^/ e. d
/**Custom Code*/
* [) `- z3 @' I2 \* P" }4 a/ a  G7 ~" q/ ]& E
Object current = ownerobject(c);& i! a9 z3 K' |9 n
Object item = param(1);
9 k' z: S1 p* ~: b! e, u- qint port = param(2);- n: H; g4 n0 J, a& I4 L: j
5 o7 G6 m+ ]( O1 m
Object involved = item;6 ]* w! @8 a; b' G: Z0 |
double x1 =180;
' x+ g9 x3 r* y4 U4 Udouble y1 = 0;
5 F1 Q3 |; i0 e& F0 Cdouble z1 = 0;8 W9 \- j1 I' ~3 D" _; F; H" F1 f
( v5 l- `2 l; T# b  g8 W
double x2 = 0;
, R2 a9 X7 N  D7 [/ L4 h. s0 Z7 Adouble y2 = 0;' Q2 n2 i7 Z$ ?/ O' ~2 w
double z2 = 180;: y8 }8 R# i& n  p' q

% H8 c9 I2 f; h3 D5 y  Idouble x3 = 180;7 y3 j* p1 V7 l! g
double y3 = 0;
, ]# e1 q  r' G2 m; W' r0 rdouble z3 = 180;! A* V- H9 G& R' N0 b  d

, J) t7 I4 p6 P4 y! W) I0 W3 Mdouble x4 = 0;9 m( K2 |4 N7 w7 V
double y4 = 0;
* z  H  t9 K; Z  V* h) n9 adouble z4 = 0;
) {; x) K. U3 @+ z7 c3 Q: n0 Y& c0 b' q2 v
double randomVal = duniform(0, 4);
( h3 m- j9 i8 ?8 O/ w6 h0 R! }6 G* dif(randomVal < 1)
5 T$ ^: W2 I  Q{
, f1 Q2 f% X2 h, U; i   setrot(involved, x1, y1, z1);
1 m6 K- _$ o, R, |" y4 h- H% U  setlabel(involved,"Rotation","xRotation");! s0 ?3 p: b1 u. }' Y# B
}$ A5 o% o1 Q% {1 E
else if( randomVal < 2)
! I7 [1 I6 V3 m1 g& c* u  S{  ' T" M# ~0 T, P9 X
    setrot(involved, x2, y2, z2);
4 Y5 |+ }, d  o. m# `4 t   setlabel(involved,"Rotation","zRotation");9 H( J& _9 M, D! {# E2 a
}
1 S( l8 P% Z: o: J1 w+ j# Lelse if(randomVal < 3 )
, t, N" c  \. |- s, a{6 T6 O. J# a) ], @" @/ O
    setrot(involved, x3, y3, z3);7 a! ^8 Z: h# x5 g
   setlabel(involved,"Rotation","xzRotation");
, ^1 s2 k0 D0 b; ~}
8 ]: }' K3 q  _! N/ I+ v+ g2 l3 \else; R4 j9 Z- E; y3 \/ j: J
{7 H6 F) B3 ]& n9 M" u; L7 ]
    setrot(involved, x4, y4, z4);
: f% d% o. x! y$ m- y! ~# p6 L  setlabel(involved,"Rotation","noRotation");* N. W, W: S9 W! a/ V: I
}) x' \. D$ {; o  m; D
判断的代码如下:# n; R; D* G9 p
/**Custom Code*/* }: R  p! \. }4 H8 u0 e! ~& h/ M
Object current =ownerobject(c);
1 v2 r7 o1 l% E  kObject item = param(1);3 s3 x7 e2 b  O5 h0 g
int port = param(2);
4 _! u7 B; H8 N0 ?/ I& b9 d( `. g* e9 r
Object involved = item;5 E/ H' Y4 [7 e1 \5 V
* k) W! W5 t7 y2 `6 [$ c
string labelVal = getlabelstr(involved, "Rotation");, [/ W6 i/ p- z. V8 c
2 z2 l$ t; w" @8 v  y7 M- B
if(labelVal == "xRotation")
' A' q! A! u/ a, k{
3 k0 R8 u# R7 V+ p    return 1; // Divert the item to port 19 I( q# D- e$ I. {/ @) p; B* r  A
}2 e  v. M. R& _" \: W+ `
else if(labelVal == "zRotation")4 m5 ^- F2 Q9 X: R! x0 W
{
1 B) m0 G- E; R$ L$ @4 Q$ Y    return 2; // Divert the item to port 2* S" ~. r( d* Y/ V& W8 R- _' y
}  q) `: l' A4 l& s& M8 u
else if(labelVal == "xzRotation")' H2 a8 l  e& T. |" T! S/ P6 i$ u
{
& W* B+ f! V) R! t: Q8 I. O    return 3; // Divert the item to port 38 j9 _+ B# C; t, G% t- t& D, c3 u
}7 r- x0 H' l: @0 w
else if(labelVal == "noRotation")
; X) I! }/ ?7 p' T; @7 n( B{7 A6 W- y: o' s4 O
    return 4; // Divert the item to port 4, ^1 ?: x& ^* \) _  J& |; x
}8 ?, A6 _$ ?& e1 Y2 Q1 z0 M( S
+ f: K- F! o* f9 s' J
模型附上:
0 I) _5 s% k8 ]
作者: csn-support    时间: 2023-12-13 09:58
在pf中没有对四种类型的标签赋值,需要赋值以后再进行判断。( k) ?- E. a  w; }7 Z3 q9 U$ f4 r

作者: 廉梦华    时间: 2023-12-13 11:53
csn-support 发表于 2023-12-13 09:58. u" h8 F4 X$ S3 {, q
在pf中没有对四种类型的标签赋值,需要赋值以后再进行判断。
) s3 m9 I* j% u
谢谢!谢谢!十分感谢老师的指导,
作者: csn-support    时间: 2023-12-13 12:07
廉梦华 发表于 2023-12-13 11:537 `2 a6 q  I; g& B6 _. @5 g# L
谢谢!谢谢!十分感谢老师的指导,

$ R, C9 \: Q; q0 Y' [4 m直接读取标签也可以,不过要记得加上token.
& |$ B4 H7 ^( S5 |; N# |
作者: 廉梦华    时间: 2023-12-13 13:40
csn-support 发表于 2023-12-13 12:07
5 x7 R5 l, [! g9 X7 n. N直接读取标签也可以,不过要记得加上token.
/ u1 Q9 k4 _2 G# R  H! S
感谢老师的指导




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