全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
5 k# W- G- Q- x; ~2 ?
* ^7 Y& L4 L& y4 e
3 V" P0 a8 ]  h. d1 h; |5 W/ r思路1:# N4 {. B7 q- v: ?& y3 L" m1 ]
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。4 M) [% j* m- }1 ^+ E

9 U+ G5 c/ h/ i% B
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    4 ]% f" m' k9 C7 S6 p
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);7 P" b6 a+ K: t8 J1 q1 c
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
    , W5 P/ S& H' w' Z, r# Q
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。
    ! v$ ]& R: X2 Z* X8 e
  5. & t, d* i! @3 x
  6. for (int i = 1; i <= 3; i++) {  s  H/ G: d: s6 N$ Q  B. l8 |- V+ g
  7.         string labeltablerowname=concat("类型" , numtostring(i));
    & N, S5 @1 i6 |
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行$ f, n5 q' p) R5 _7 p
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。5 E6 O# ~2 ~6 _- K
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
    2 _& L+ A6 U6 y% _8 T8 x. |
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)1 u! V9 M7 |; l1 i( g8 W, W+ Y! P2 y
  12.         //因为该节点要存放数值,所以数据类型要设置正确。        6 G0 d2 f2 x' r5 w4 M$ o
  13.         int num=duniform(0,5);. t0 a) S3 w  K+ O8 k$ y4 T2 {
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    3 `) Y% Q2 ^; Q
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。% X5 F+ T7 ?. z
  16. }
    4 c9 i5 S  V0 V# g% V
复制代码
思路2:
0 {4 C" G% t; W. z, O* q既然assertsubnode可以,那nodeinsertinto也行得通。0 I0 G, X1 I1 x
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    ) A4 p" j/ b" _. f9 s
  2. for (int i = 1; i <= 3; i++) {6 {& s. k& x7 P5 ^, M
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行
    ' h, Z; X  J/ P& J# ]
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    " j4 T; _! G: z8 F
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型
    8 j; u- l9 B: l8 ~
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。6 W" y8 ]1 I/ m5 z- y! z
  7.         int num=duniform(0,5);
    7 K. H6 j6 F3 C+ K2 [
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    " |* L: q9 p  w" t: ]8 h
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    # v9 R8 @9 `* a+ I! C
  10. }
复制代码
思路3:
1 r7 m( m  R. {既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
( F. }. s' g( B! K7 P
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签% i& q9 f: o0 u) @4 i; t
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); # ?) Q+ ^- N) j! m- R; O5 c
  3. for (int i = 1; i <= 3; i++) {6 I/ K% r3 t0 _5 B& s3 O
  4.         settablenum(labeltable,i,1,duniform(0,5));; p- G" C/ a% A* d+ s  j
  5. }
复制代码
3 r' b1 h& F% c6 P7 v$ }0 t

2 A0 Z' X% X( M& h0 V; ~3 v( `6 n% H7 H/ u

本帖子中包含更多资源

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

x
2#
慧娴亚伦 发表于 2018-6-8 09:51:50 | 只看该作者
感谢分享!9 N3 K& [* }1 j
关键是建立起节点格式~
3#
zjj0605 发表于 2018-6-11 17:49:48 | 只看该作者
谢谢大神的分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-6 10:15 , Processed in 0.083310 second(s), 14 queries .

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

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