全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:: N1 b! i. c. \0 W/ ~5 X; O

. C( n2 |) @: g2 I* A$ p
" G& a+ N0 o! x4 ~1 F  i3 `: l3 f思路1:6 D. [' J; R4 O4 M
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
2 t( B. ]- Y1 ?- P& w
1 A8 Q5 @. x" z
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    6 Z$ ~# q. K5 u
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    - U2 o1 t8 r7 w% m) f' ?
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。$ \6 ^3 J) p* A# O, N3 \4 M
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。, u! h# E0 J& i$ U0 S0 G2 {

  5. $ h. ~3 L) D9 b2 H- w$ y
  6. for (int i = 1; i <= 3; i++) {
    ( L# A; g0 d7 }
  7.         string labeltablerowname=concat("类型" , numtostring(i));4 M# }# p. T6 S
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行/ d0 M8 W* C6 x  N1 T
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
    ; A: \9 m2 Y1 E5 {6 o. n: ]
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
    4 W, }# a9 F5 }+ Y3 C4 W# V: ^
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    5 r4 [: X" T, R2 S9 C0 m
  12.         //因为该节点要存放数值,所以数据类型要设置正确。        3 O( l; U) z1 e4 e) Z2 @  T7 w
  13.         int num=duniform(0,5);; t! M: d' V- b: {
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    % E- J) p, w" j( {
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    ; K: h% E3 l9 i" ]3 Z
  16. }
    3 q, N  b8 ^- ^3 N% H
复制代码
思路2:; v# s& F8 r+ L+ A
既然assertsubnode可以,那nodeinsertinto也行得通。
8 N* z/ _; }# c9 \4 g+ k
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    : B( Z' |) c/ |& X
  2. for (int i = 1; i <= 3; i++) {8 l& E, [% A+ y% J4 V6 v  W! x6 D
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行/ z5 A% y. c0 [2 \/ |
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    6 Q! T" O% q$ ~7 x6 G
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型, S1 ?4 s# F0 [8 n
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。' h( Z& U5 W+ N; z- I
  7.         int num=duniform(0,5);3 ^7 i  _, N' K% u1 x
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
      L" E1 Z: ?$ }$ ?) ]. }
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    9 P1 v& w6 t$ Y% a
  10. }
复制代码
思路3:7 X. V2 C' |2 d' A9 W
既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
+ D6 h& A& Y( t# w# S- o
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
    ! J+ ?6 C0 e6 w$ P& H( e) q
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); 0 t# J, }" V. Q( V& x0 c: i1 y) Y) o
  3. for (int i = 1; i <= 3; i++) {
    $ C. L4 `+ u& B+ ]+ N
  4.         settablenum(labeltable,i,1,duniform(0,5));( _2 A. G  Q2 ~( ?0 [& N4 s
  5. }
复制代码
: Y2 w7 {# }( s' T6 h
* k- }& {1 I5 y  m5 U- K- a
0 v$ F9 ]' w% c6 a

本帖子中包含更多资源

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

x
2#
慧娴亚伦 发表于 2018-6-8 09:51:50 | 只看该作者
感谢分享!3 e, f" t1 o' W% h+ f1 a6 _6 l
关键是建立起节点格式~
3#
zjj0605 发表于 2018-6-11 17:49:48 | 只看该作者
谢谢大神的分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-30 15:26 , Processed in 0.078194 second(s), 14 queries .

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

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