全球FlexSim系统仿真中文论坛

搜索
查看: 10465|回复: 9
打印 上一主题 下一主题

标签使用小结(基于Flexsim2020)

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2020-4-30 10:58:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zorsite 于 2020-4-30 11:00 编辑 ( g3 U, \% i7 ^6 z0 F% d' c) q

# \* B2 @9 ^' @8 [) S) r' M) r: f1.创建标签( ]9 w% M8 A- K0 w# e, T; k1 O4 U
  不用刻意创建标签,具体原因见第二条。/ Q' f8 ~: I+ G

9 a. k2 b8 ]  d# e2.设置标签值
5 A$ ~$ x1 }9 x0 c
  1.   object.labelname=5;
复制代码
9 O/ x& I* h) v9 `6 T) i
  如果标签名不存在,该行代码会自动先创建再赋值
0 o0 r2 c" J5 v4 y6 @4 E, X2 B$ R, V4 ]8 o
3.获取标签值
( E. r9 B+ s/ N; X: o  J# W
  1.   return object.labelname;
复制代码

2 o4 P0 Q* c0 T; r, d% u! A, L  如果标签名不存在会报错。可以使用如下代码替代:: t5 Y! K1 w! q' ], Z& N4 Z; r: X
  1.   return object.labelname?;
复制代码
$ i- ]& F- m+ v: V
  Z! u& H; {; ~& J: e1 ^
4.增加标签值
' q9 H2 t, U9 W( M: w" n
  1.   object.labelname++;
复制代码
& Y" K: |' u5 I+ y: C
  如果标签名不存在会报错。可以使用如下代码代替:
* }( C) k/ O0 J3 l
  1.   object.labelname=object.labelname?+1;
复制代码

. o( M. ^! R( h* U( u# o1 F# _7 O! o+ _  U8 H0 |
5.如果标签名为变量,可使用treenode的labels属性
  1.   string labelname="item"+type;
    & Z( }' o7 D! i7 F
  2.   object.labels[labelname]++;
复制代码
3 Y, W" @6 g- L% V% e" Q0 n
* ?  R+ H3 ]+ s

0 S1 u4 v0 @, b0 ]$ q6.不建议使用标签序号
$ u' T' ?3 d% \" V6 I& s  `
  老用户可能还记得一些标签命令可以使用序号来引用标签。但是新版本放弃了这种做法。: C% ^' d$ [! J8 p8 ~
  使用序号引用标签会增加代码阅读难度,使用名字更容易阅读和理解。
3 J& \! U4 W$ e/ b+ |( j6 G6 _0 r; \  如果一定要用序号的话,除了使用已经废弃的setlabel、getlabel等命令外,还可以使用新版点语法:
( z8 l% U; J& c: `# K9 E$ k
  1.   object.attrs.labels.subnodes[1].value = 2;
复制代码

6 y+ B# k# t+ P3 c6 m8 e, p, M7 ^# k/ _1 U: r7 m8 `) E
1 M, q1 f1 ^9 ]/ u
推荐
 楼主| zorsite 发表于 2020-5-10 11:30:13 | 只看该作者
本帖最后由 zorsite 于 2020-5-12 17:08 编辑
8 w+ _& e4 \1 F
Clay666 发表于 2020-5-6 08:14
: ?! r7 g6 t! b; f) v- Z我看了下最新的帮助文件,直接新建个标签并赋值还是需要如下操作:
* n3 n  C4 a0 ]! R$ X2 SVariant myValue = current.labels.ass ...

( t& ]  w/ @* n这段代码并不是“新建标签并赋值”,而是在某种情况下,明知道某标签不存在却仍要引用它。这段代码会先创建一个标签,然后将空的标签值返回给myValue变量。  c; W! Y; x; f% [1 i

) z3 `* ^% B: X; G% ^! `& w1 E4 n这段代码等同于:  N; O! r0 Q' T+ |8 T* J
Variant myValue=current.MyLabel?;参见我总结的第3条。3 y9 u3 h. W3 v( p
8 [+ Y3 f/ p% y4 F! j0 A5 `# O
新建标签并赋值直接用总结的第2条即可。6 l4 p; E3 r, ]4 s
; ^# s/ U7 }& M; X+ h
你查看的是手册中treenode.labels部分,向上翻,在treenode.labelProperties部分有讲简短语法规则。
! ^9 ]. v' x( C- ^% Kcurrent.MyLabel = 5;! ]0 h3 u3 t; r# l! W* d' C. @9 d
This will set the label's value to 5. If a label of thatname does not exist, then it will be added to the object's labels.
8 q( C" X1 w: a# U3 d6 T7 R
3#
Clay666 发表于 2020-5-6 08:14:17 | 只看该作者
我看了下最新的帮助文件,直接新建个标签并赋值还是需要如下操作:
7 n! F% _) ^/ N  h+ \: E, nVariant myValue = current.labels.assert("MyLabel").value;   `" M7 Z5 _% d! I; x
否则会报错该label不存在。
4#
小王子波 发表于 2020-5-6 09:00:58 | 只看该作者
Clay666 发表于 2020-5-6 08:14
6 r* i  Z" R/ I$ K我看了下最新的帮助文件,直接新建个标签并赋值还是需要如下操作:
# Z2 b, y3 O; }+ ]9 Y4 \, w' yVariant myValue = current.labels.ass ...
3 M7 ~% s9 i5 e9 e& E' }% ~
current.labels.assert("MyLabel", 0);( H9 v. }: n2 B/ h- K" [9 @
或者) z: g, _# ?' l9 h9 I
current.labels.assert("MyLabel").value = 0;
5#
wangchangping 发表于 2020-5-6 12:21:58 | 只看该作者
感谢楼主分享
6#
zjj0605 发表于 2020-5-7 17:46:38 | 只看该作者
感谢大神分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2025-9-2 00:11 , Processed in 0.070050 second(s), 14 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表