全球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分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!
) g* g- y* j$ L8 k9 e# ?( y7 H. o发生器的代码如下:
* M& H8 O2 n2 [/ p8 K/**Custom Code*/6 l7 ]* U9 s& ?. ?& o& q
# U$ q) W; [7 p
Object current = ownerobject(c);
  R* J9 E& N8 p2 A: xObject item = param(1);1 V) I. E# E  L+ ?2 m
int port = param(2);
2 g$ o/ o5 {! C- |0 W8 R& A( V$ a3 M; F8 e
Object involved = item;
  z' `8 g" M+ w" J( Cdouble x1 =180;) g& I$ M- p! `6 V# m8 b! k% a
double y1 = 0;
6 C4 U% y: I# j. [' ~double z1 = 0;+ W: V/ y# I$ F/ ^+ X# v
5 l: K' k& m( H, ?
double x2 = 0;0 t: y" g5 F" s7 K
double y2 = 0;- K; _! h, B  |5 v+ m! E. L
double z2 = 180;
6 |/ O6 R: l: u- @0 w6 j
& C2 Z6 F4 `4 d5 K/ ~: L1 mdouble x3 = 180;
  ~5 V& u* U' Cdouble y3 = 0;
& a! O  o# r+ z8 J- B6 hdouble z3 = 180;8 d/ l( w7 ]0 f/ [5 o

% \; f& x1 c1 [double x4 = 0;: E2 x& h4 \& I1 ?& J0 C
double y4 = 0;" O* f/ E; o2 @1 c8 [
double z4 = 0;$ P& T8 X! B5 Z3 y3 k3 x5 L  ?) r1 [

, f/ N* o# w. D# ~/ H: Rdouble randomVal = duniform(0, 4);
! K9 i0 F; d- Oif(randomVal < 1)
8 J9 Q" Q' R" O  p1 \{
$ `0 e' y  l9 i   setrot(involved, x1, y1, z1);
. w$ I) Q. S# d7 J+ E  setlabel(involved,"Rotation","xRotation");- G/ T9 s7 u, A9 t0 J
}) A/ ]  f  ]! p2 J2 {/ Q
else if( randomVal < 2)3 ~; ?. V& T* B4 S
{  
7 P& s6 p; o; V) g* T    setrot(involved, x2, y2, z2);
; h/ r# R: x  y8 [. p/ i. R   setlabel(involved,"Rotation","zRotation");
( f0 @3 s* e. x' e}
7 ^6 p. s3 N0 h! Relse if(randomVal < 3 )' H! M  e+ C, y3 L) |
{
1 d! g6 o. X9 x  L    setrot(involved, x3, y3, z3);
  e' @2 \6 A. O( g3 c7 X* y) f7 K   setlabel(involved,"Rotation","xzRotation");
$ V8 Q6 C% V  i1 ?. p% A0 f}
8 m: ?/ e% p6 W9 k$ celse; F! w; \7 ^# D$ w
{
- S) @, q( t% E3 |& L! N7 s    setrot(involved, x4, y4, z4);
9 ?. ~( Z$ W3 ^  setlabel(involved,"Rotation","noRotation");. p: P9 `6 S. y* U
}) b% d' D/ v; c; I. d
判断的代码如下:
' L% S* s, q3 [* r* G/**Custom Code*/2 M! c, T0 h6 d; a* w) T0 e
Object current =ownerobject(c);+ ?. Z, i# m, C
Object item = param(1);
5 I# F; ^# {+ r7 l3 [int port = param(2);9 t0 m4 C) a& ?

- G& `- ~. k) O# \6 }6 xObject involved = item;
) ?3 A( Y) A$ P8 x1 Y4 x: g6 b  q; z9 J9 n$ s' H
string labelVal = getlabelstr(involved, "Rotation");2 [$ b  U8 Z- F0 j* _
# Q1 [6 ^, A7 L" e: u6 d' ~2 d# ]( L
if(labelVal == "xRotation")' p* A6 [: {/ g. k$ o7 l: M
{4 {! B7 K8 p5 p1 X: y
    return 1; // Divert the item to port 1# i) ~2 X( F! d: m4 H' V5 q% _: v
}8 t* m, e5 ^( b5 p* [# p& i
else if(labelVal == "zRotation")
# L9 H* q" C" c  Y' B3 o{* ]) `6 w$ U) P4 ?
    return 2; // Divert the item to port 2
, Y; \' G& c% @/ a* V6 P& y0 V}% ^: K( W4 W1 a% X8 Q: I9 e) J- }
else if(labelVal == "xzRotation")9 x. k, c% i5 ?/ b
{; ]% f. I7 q, |0 M: ^0 [: m7 O$ o' [
    return 3; // Divert the item to port 38 c- |  \6 p# }- q
}
) j- |0 e% R- `* `else if(labelVal == "noRotation")
# S8 g4 I0 h6 s! M7 H. W{
8 |- i- ^2 e3 \6 o( R    return 4; // Divert the item to port 4
0 X! G0 v0 U: U}
) v8 ~3 E  n; d% U
" A4 U" ~) @' O- |8 S模型附上:3 W/ }& x+ j; r

作者: csn-support    时间: 2023-12-13 09:58
在pf中没有对四种类型的标签赋值,需要赋值以后再进行判断。
! W% t/ z# y; C
作者: 廉梦华    时间: 2023-12-13 11:53
csn-support 发表于 2023-12-13 09:58* o5 x0 W' C* Z. a. a) i6 P
在pf中没有对四种类型的标签赋值,需要赋值以后再进行判断。

/ n% S7 W- V' S. \谢谢!谢谢!十分感谢老师的指导,
作者: csn-support    时间: 2023-12-13 12:07
廉梦华 发表于 2023-12-13 11:53
( a. W0 _! t# X8 ]1 D0 N. ~6 V谢谢!谢谢!十分感谢老师的指导,
, S& ~+ q' x; u! y) N+ n
直接读取标签也可以,不过要记得加上token.7 \" |4 e, \5 @- G5 [4 h8 r

作者: 廉梦华    时间: 2023-12-13 13:40
csn-support 发表于 2023-12-13 12:07: k, U1 l# v' d3 a% ?
直接读取标签也可以,不过要记得加上token.
: P" Q& L6 e; Z" P: E1 @7 P
感谢老师的指导




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