全球FlexSim系统仿真中文论坛

搜索
查看: 6111|回复: 2
打印 上一主题 下一主题

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:/ I6 e5 L7 o# q- x
; a% l" j) V! `7 b. H4 B/ I% V
, }7 C1 [5 X# K; k
思路1:9 t8 b, C4 I% J4 e1 L- D% i
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
; e* S# _: F( D7 v2 p
# x  b5 d9 e0 e5 k( L3 M
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。% O. ~* K1 o/ n6 l4 H  `" ^
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);  P7 D9 }. C- V0 K+ _
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
    6 U( Y/ M8 t, w! |) a
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。
    ; o8 K8 b/ g+ B
  5. 9 x& b0 N$ K% F: }) y  {
  6. for (int i = 1; i <= 3; i++) {
    + l, b( d% R4 ~, z0 \+ r
  7.         string labeltablerowname=concat("类型" , numtostring(i));, x+ B* K2 y$ R; v2 i
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行) v5 T9 Q0 H$ ^" |% S# x
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。8 ?8 ?% S6 z6 }$ |( g* G
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。: f) S0 g( {  V! @# J
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    " d% T5 o( K, ^: u0 Q: @/ \
  12.         //因为该节点要存放数值,所以数据类型要设置正确。        ; n; R9 H) K" D( C+ ^
  13.         int num=duniform(0,5);, T# I) i- }7 B) u( z' e
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值" O: z0 w. n- S$ F0 D3 U/ E" B9 i
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。0 s' _# f# r: B" Y2 d& M# V
  16. }
    7 @3 M$ T1 `1 W# S. z; ?# S
复制代码
思路2:$ |& U& d1 r9 P+ J4 E2 Z+ t
既然assertsubnode可以,那nodeinsertinto也行得通。
6 ?/ q; H+ D! v( Q! R
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    * n3 j8 I" u* `* d( p) p
  2. for (int i = 1; i <= 3; i++) {0 _9 a  f' y4 v' w. J) t. L% ^8 q
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行8 }/ A; F" N5 p8 F
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    : a; q0 v; j9 a8 ?+ \% ^
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型( h, i; C8 g$ u
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。
    9 m) v7 T. x) ?8 e# b
  7.         int num=duniform(0,5);/ P; a# X5 j5 f( |
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
      j! r" w% i0 |6 ~
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。# Z2 G, u2 ?4 `4 k( O/ [3 ?) z( `! t2 Q
  10. }
复制代码
思路3:* k: R9 Z2 K' _& E: Z
既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?1 i/ n0 V! }9 ?- i/ m4 m$ w, c6 @! M
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签9 j  w* |) _: O$ R
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); 6 A2 e2 |/ D" y, G: g5 H- n
  3. for (int i = 1; i <= 3; i++) {
    0 C4 l7 ?2 x1 M' o
  4.         settablenum(labeltable,i,1,duniform(0,5));
    ; R  o2 J+ k4 Z0 F; Z" f+ M
  5. }
复制代码

5 L6 p' J6 M' r6 v% [- v5 [' ^$ U1 u5 b) z

3 @7 ~: }7 ~2 y* {  M9 g

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
3#
zjj0605 发表于 2018-6-11 17:49:48 | 只看该作者
谢谢大神的分享
2#
慧娴亚伦 发表于 2018-6-8 09:51:50 | 只看该作者
感谢分享!# s7 n0 q. r) k
关键是建立起节点格式~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-6 08:08 , Processed in 0.076066 second(s), 15 queries .

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

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