全球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分别对应上面四种实体,判断里的代码总是识别不了我给临时实体设置的标签,有没有哪位老师可以帮我看一下,是哪里的问题,该怎么办才能解决,十分感谢!1 J* A, G3 q  z! @  Q
发生器的代码如下:
2 V1 G' u4 B& C/ I4 K' @2 D; z/**Custom Code*/
0 N: O+ K& {- c; p; u2 ]
7 j5 |& W, x/ E# ?. ^7 uObject current = ownerobject(c);7 D5 C( e) H% C) ~
Object item = param(1);2 V3 `9 P0 ]0 d% s; n/ i
int port = param(2);
' t4 Z) H" }5 g1 i
, S9 B) q' m# ~! u3 {- @Object involved = item;
: ^. ]' S* Y9 P+ fdouble x1 =180;8 h/ n) |" H0 A! s% {/ C) q$ M& l
double y1 = 0;4 j; t. V2 u& R1 T0 u4 i
double z1 = 0;, t0 N2 W, D: J, n0 Q4 N7 v- k
1 e( h  x$ ?" E3 h# V  E2 r
double x2 = 0;/ [5 X8 P4 O: F( G9 {- ~& o' T
double y2 = 0;
4 i) X. J9 m, g: D7 |* B" _double z2 = 180;
/ g7 N! G3 b. j# ^3 C
* A1 Y7 J( Q6 P' Y- |double x3 = 180;
( j1 [# ~  b2 |3 n! ^$ Vdouble y3 = 0;
  H9 ^# I: j$ F: O! ]& z- _double z3 = 180;* ?" w  I, q3 \7 W- u3 a8 ^3 f

2 R. j% z1 `  u) d. adouble x4 = 0;! G- @6 W0 d: U% P, x- K
double y4 = 0;
9 d; j9 ?# i. Ndouble z4 = 0;
0 f( r, K- Z( o8 N; V, u6 M
6 o! I+ c5 T3 X, L( M+ ]double randomVal = duniform(0, 4);
" s' m2 Y* B' T9 w- @if(randomVal < 1)& ^0 G* s5 v- r
{$ n4 j' I5 Y0 x+ o5 L6 M. @" S
   setrot(involved, x1, y1, z1);5 G, E: s. Z0 r; j
  setlabel(involved,"Rotation","xRotation");7 `+ h0 j' I; Q
}& b3 c/ Z& L4 s3 H3 D
else if( randomVal < 2)
6 m( `" G; ~! Y1 s$ @: D  S{  8 Y0 g3 ^1 @) K' q% x
    setrot(involved, x2, y2, z2);% q% j3 F5 c: |& t8 g
   setlabel(involved,"Rotation","zRotation");
: j9 x1 m' o4 E' K}
8 {1 @4 \/ I0 ^else if(randomVal < 3 )) e# }4 |9 g- r8 v
{& [8 u* t% ~: C  \: ~! ?
    setrot(involved, x3, y3, z3);
; H" N3 _5 j5 g1 H# i: Y, M& Q8 A   setlabel(involved,"Rotation","xzRotation");
2 j4 I9 d/ q: s# g5 I}7 C1 c0 V# W- ]6 \" t4 P
else$ h' \' L, w4 P/ h) b7 E
{
% Y+ z, d) Z% {" z6 g/ L    setrot(involved, x4, y4, z4);
0 c$ l, R+ n7 H* H1 d  setlabel(involved,"Rotation","noRotation");: c, I/ Y! n1 c" l
}
  C% p  r' [/ p2 J& s判断的代码如下:0 v* W: E9 Z; A( ^1 \6 {8 Y( U
/**Custom Code*/
1 k7 d& ]& a0 K$ y) |- x# B+ h0 YObject current =ownerobject(c);( s9 I# d0 W; @
Object item = param(1);
4 ]% }+ A3 @  S2 m# M- B. {int port = param(2);5 q  e, t+ n& `
" L" }6 q6 m7 v8 I- y' P1 m: o
Object involved = item;) b1 I% Y+ B4 ]# a$ e

( `8 ?0 D" q2 |* U$ {! S0 ostring labelVal = getlabelstr(involved, "Rotation");
: f/ Y( f( _4 F% @
# f) e- T6 T- K0 G. o# d3 uif(labelVal == "xRotation")
- p/ X) S7 m% `$ B8 e{
* L6 Z' P4 N2 m+ h3 p    return 1; // Divert the item to port 1
4 k4 C8 s  j; ?" \: j6 ], i}
% d; X+ ]( j% qelse if(labelVal == "zRotation")$ q8 L# L5 B0 z2 ~6 N5 r+ T
{3 `1 ]) _9 a, w  G- }% M- T
    return 2; // Divert the item to port 2
; L( T/ U1 v, p' F4 h+ N) z# ~}- k- k! m8 C* O
else if(labelVal == "xzRotation")
/ K4 L, j1 w7 _' Y% y4 r- r  l{
; ]) S* T( y5 X( ]# G: e; z    return 3; // Divert the item to port 3
  D% t% ?* D! o. M* D" S0 C}6 W1 u) D$ v1 e3 y
else if(labelVal == "noRotation")
/ O- v) X0 ]9 a- @# v3 J' R{2 ^& U. z3 }2 d/ p
    return 4; // Divert the item to port 4% y7 X* ~+ o8 O5 l; V
}
5 ]8 t9 D7 _+ |4 E
% G7 @: D% X/ A模型附上:% L; |& s; _5 O6 w& U) ]" {$ X% X

作者: csn-support    时间: 2023-12-13 09:58
在pf中没有对四种类型的标签赋值,需要赋值以后再进行判断。" P  ]) W3 T, T" O

作者: 廉梦华    时间: 2023-12-13 11:53
csn-support 发表于 2023-12-13 09:58
3 g+ y+ \6 N2 K- w2 j3 x8 u5 M在pf中没有对四种类型的标签赋值,需要赋值以后再进行判断。
* @) h5 `5 J2 P  t/ p9 W/ y
谢谢!谢谢!十分感谢老师的指导,
作者: csn-support    时间: 2023-12-13 12:07
廉梦华 发表于 2023-12-13 11:53
8 \! y/ V8 ?) q2 \$ `; t7 a& k9 r- A谢谢!谢谢!十分感谢老师的指导,
6 e. _; v& x* [' R& f% K
直接读取标签也可以,不过要记得加上token.+ o( o5 m9 V( z9 h3 q  X1 H# }* b

作者: 廉梦华    时间: 2023-12-13 13:40
csn-support 发表于 2023-12-13 12:07
7 Z- y4 l/ d- p  i; D直接读取标签也可以,不过要记得加上token.
& i/ L6 J+ h6 R& B( ~: l
感谢老师的指导




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