全球FlexSim系统仿真中文论坛

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

标签使用小结(基于Flexsim2020)

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2020-4-30 10:58:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 zorsite 于 2020-4-30 11:00 编辑
% o  u9 x. }; ?, O; s
' K; \3 c7 p; z8 r! ^" i* `; x1.创建标签# b: z& h7 b9 @3 l# a  [  ]
  不用刻意创建标签,具体原因见第二条。/ m; H2 _3 D) z9 R

0 ~, ^2 T3 c6 j: {2.设置标签值4 o0 B9 W' ]% u. `$ I# r7 h" P5 ^7 T
  1.   object.labelname=5;
复制代码
2 n+ O' Z4 p) ^( E  f
  如果标签名不存在,该行代码会自动先创建再赋值
5 o' ~9 C  K, `
, Q6 H) c9 e3 F) m3.获取标签值
3 [$ F. P0 ?, K* Z" Y% C; f
  1.   return object.labelname;
复制代码

8 v8 a3 D; G( G8 z* p  如果标签名不存在会报错。可以使用如下代码替代:" \, F: W) G7 o% S, x
  1.   return object.labelname?;
复制代码
( R- a# @4 E9 T* v1 K

% m% o1 J9 w; q- E8 P  L4.增加标签值0 v7 v; L* q" _' C! ^
  1.   object.labelname++;
复制代码
, \2 J: C5 s* A- o
  如果标签名不存在会报错。可以使用如下代码代替:
0 S4 n6 A8 G9 `6 u6 l0 q' }5 J( ~& }7 O( g
  1.   object.labelname=object.labelname?+1;
复制代码

/ _" r" K: l; a2 J) K8 g' Z) p5 I2 Q/ ~& L( J
5.如果标签名为变量,可使用treenode的labels属性
  1.   string labelname="item"+type;% \; Y9 H' p- @5 t& |, v* f0 y
  2.   object.labels[labelname]++;
复制代码
, g0 k# u1 C# M- |) U
5 Z( a4 Y1 x4 j- ]3 m7 o5 X4 N& H
3 ^- q& A* _7 H- X3 C
6.不建议使用标签序号
& L4 V: x5 ^0 }! D$ c0 D/ \$ T
  老用户可能还记得一些标签命令可以使用序号来引用标签。但是新版本放弃了这种做法。8 h+ s% S4 |* R$ F, c
  使用序号引用标签会增加代码阅读难度,使用名字更容易阅读和理解。
  t9 e  |; R% m& ^* t; n  如果一定要用序号的话,除了使用已经废弃的setlabel、getlabel等命令外,还可以使用新版点语法:
: M/ i1 p7 |2 \' L  i
  1.   object.attrs.labels.subnodes[1].value = 2;
复制代码
4 |: N9 ^) `  N8 g+ c  c1 m2 ~

- `( J+ N. R8 N  U5 y: E; K. |
( v8 G' |' Y+ Z: a0 e) n8 A
推荐
 楼主| zorsite 发表于 2020-5-10 11:30:13 | 只看该作者
本帖最后由 zorsite 于 2020-5-12 17:08 编辑
2 q) m+ v, a$ a
Clay666 发表于 2020-5-6 08:14
+ _8 a& B' X- F' ^; T我看了下最新的帮助文件,直接新建个标签并赋值还是需要如下操作:! s7 L  a- x5 {: A7 ^
Variant myValue = current.labels.ass ...
5 U. \* Q/ \# d4 ]) k
这段代码并不是“新建标签并赋值”,而是在某种情况下,明知道某标签不存在却仍要引用它。这段代码会先创建一个标签,然后将空的标签值返回给myValue变量。
* I. X8 X- N1 ?& _1 M% ]5 \1 s, l  Z; Y: S( m9 a3 F" g
这段代码等同于:6 ]; w' T3 i* Z- ^  K% C* G& Q4 `
Variant myValue=current.MyLabel?;参见我总结的第3条。9 H  Z8 f5 z! D5 g) r  [6 y

- [3 L" X/ d2 _1 t8 V4 c! O  Q新建标签并赋值直接用总结的第2条即可。
- A/ \) m5 Z( t* k% r# T9 `; F) _* S8 `( r$ g& k1 a) R$ R: W
你查看的是手册中treenode.labels部分,向上翻,在treenode.labelProperties部分有讲简短语法规则。5 R/ I: o* o/ @* I& U% Q6 }3 N
current.MyLabel = 5;7 l1 d& \8 y0 z) t6 s- B) x3 H" Z8 n
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.

! U5 F% l7 f* C: g
6#
zjj0605 发表于 2020-5-7 17:46:38 | 只看该作者
感谢大神分享
5#
wangchangping 发表于 2020-5-6 12:21:58 | 只看该作者
感谢楼主分享
4#
小王子波 发表于 2020-5-6 09:00:58 | 只看该作者
Clay666 发表于 2020-5-6 08:14
( Z! j7 @: v5 p. }2 ]; y我看了下最新的帮助文件,直接新建个标签并赋值还是需要如下操作:
- ]; H& M; \) l, O( c+ [Variant myValue = current.labels.ass ...

* F( B3 M9 d2 p5 scurrent.labels.assert("MyLabel", 0);
, [$ t( i2 P( [/ I) }或者
6 U5 i1 w- ^0 t  @- M' xcurrent.labels.assert("MyLabel").value = 0;
3#
Clay666 发表于 2020-5-6 08:14:17 | 只看该作者
我看了下最新的帮助文件,直接新建个标签并赋值还是需要如下操作:$ L0 f( O# F4 V  P/ a  {' m/ r( S
Variant myValue = current.labels.assert("MyLabel").value;
& \: [# i0 ^; u+ U0 M否则会报错该label不存在。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-31 15:26 , Processed in 0.081231 second(s), 16 queries .

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

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