全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

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

# K. i, n/ N' T$ X0 [- ]7 Z- ?0 \8 O( Q# @% q( Z# n
思路1:9 |5 q0 J3 W  v5 ]1 x
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。% [% |6 U  ^0 h! G) N, s
9 `. c4 X- y+ [$ t4 T6 P
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。* k. `7 J7 k' q! n# F0 D5 T
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    , E9 i  c+ X! l( v. n" k/ \1 C
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
    ( i! x. c1 i- l! Z4 x. H* c
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。( V- I9 z8 v9 t" ]

  5. 0 o/ ^* f! w# f  C
  6. for (int i = 1; i <= 3; i++) {- F5 m% F6 Q) F; j9 C- O% T
  7.         string labeltablerowname=concat("类型" , numtostring(i));
    ' G# U9 V- q; h4 @+ s7 F! {; b. O
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行/ K* K5 Y4 z0 j, D. z
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。. D; ~/ Z- j7 ]+ a
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。5 C- J, j  f  P! ?2 b/ n
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)  I; q* g' i5 y7 n
  12.         //因为该节点要存放数值,所以数据类型要设置正确。       
    . B! s4 a; T: v3 e% ^& r
  13.         int num=duniform(0,5);
    # ~2 S& A: W" G
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值! G4 F) C1 v) S! {5 Q
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。' m% V/ n- t7 r: _, l- k  q
  16. }' X- q* k4 Z6 b+ m- ]- Y
复制代码
思路2:9 O: K6 y4 L& Z% E. ^; J
既然assertsubnode可以,那nodeinsertinto也行得通。7 w1 M; I. s% t( ^% h7 i
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字% i: G7 f( K  y( R8 @# C
  2. for (int i = 1; i <= 3; i++) {
    9 }' u3 V0 A' ~' J+ Y. w
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行! _! f7 L" a& i2 e+ X
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格). d8 p7 |  D- R. q8 D5 _2 }. O
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型
    $ J9 ^! x: v3 {( L. s! ]
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。4 d' u- V) G" b6 L& p3 b- @
  7.         int num=duniform(0,5);0 w% O0 p* ]$ _* H( i
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    ) h4 c# f; m+ ^% b2 ?2 X! C, M
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。) P8 N4 q& h" S* F
  10. }
复制代码
思路3:
$ I& f/ S$ ^, J4 K+ P1 {/ D- M既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
. a7 Z+ h: J6 ?* B
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
    * b: B5 i0 P2 D8 Q/ u# k+ ~; M  W! q( Y4 V
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER);
    & C" C6 ]( B1 k/ f" L" v2 ~
  3. for (int i = 1; i <= 3; i++) {$ l7 l( O+ r7 t1 Y
  4.         settablenum(labeltable,i,1,duniform(0,5));
    : M! w% O+ I$ v$ W3 w; [; y) G
  5. }
复制代码
' D: d8 Y' }- k/ x5 p( }. m7 ^8 [% w
" ]% |% q6 S$ [$ u% F) u  f

# X7 Z# I; [6 S$ ]2 O! t

本帖子中包含更多资源

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

x
2#
慧娴亚伦 发表于 2018-6-8 09:51:50 | 只看该作者
感谢分享!2 M& z, q) ?. }0 z" W# I; T$ `
关键是建立起节点格式~
3#
zjj0605 发表于 2018-6-11 17:49:48 | 只看该作者
谢谢大神的分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-6 04:11 , Processed in 0.073821 second(s), 14 queries .

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

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