全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
; ]: m, r; m) y
* c% _5 l& _, s, A# z" T2 H( W1 J  G, `5 Z
思路1:  n+ N' q8 G( ]$ J0 u5 a
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。: [/ k4 W; }$ o' j
3 y1 {0 m4 V& }1 W3 o
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    ! S0 U% M. }: m% t1 G! k% j
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    & p; Q, w% V. a; O9 C
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
    ) M2 Z5 ?9 k# N) [( O/ A
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。
    - w+ K+ N! z7 _
  5. 1 n( }: w+ ?( a0 b' s5 l
  6. for (int i = 1; i <= 3; i++) {0 g9 C( y( @+ M; _  x& f# s8 ?& k
  7.         string labeltablerowname=concat("类型" , numtostring(i));3 I  f* ^& q) i7 N' f
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行
    . H; ~( C, f1 g
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
    ' I$ G( i1 d9 I  Q4 f
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。) S; M1 `( H( ?, _' b( V. W
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    & j+ Q7 a1 N0 F# E
  12.         //因为该节点要存放数值,所以数据类型要设置正确。        / }5 X# m1 |" O7 c5 L* M8 z
  13.         int num=duniform(0,5);; Z$ L: W5 @& ~
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值% T6 w2 a# W* ]6 x
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    6 E+ H/ q( f$ e' c4 d( j1 V
  16. }, [+ q# B0 y7 i& \& Z, j" v0 C
复制代码
思路2:( b* v3 O! K7 g- z" E, B8 M6 y0 {
既然assertsubnode可以,那nodeinsertinto也行得通。8 d: ~1 _, u' f: R" T' G. K
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    ( G. |. X) M; }+ V5 `2 ?8 B0 p9 M
  2. for (int i = 1; i <= 3; i++) {
    ( I# q4 `. }' B8 V; `  Y
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行4 y8 {# q" s, J0 g( h" N
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)- a6 q0 i- E1 \9 h' i+ B: F7 G
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型7 o5 K5 s! s* h9 p- j4 i- {+ |4 S
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。9 a( h6 v: w2 g: c
  7.         int num=duniform(0,5);6 I$ c, p2 E3 G$ e" a9 h$ H
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    % J) i2 o' P/ i. g  E1 O5 J
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。$ t8 ?1 P8 j6 d* ^
  10. }
复制代码
思路3:
9 t% c+ M; K# H! A4 o# s既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
( p4 g7 ^! p( a( P- l2 B% ~
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
    . d4 M2 {/ j. j" U0 R( W, B
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); , S7 a2 W* T$ J' n
  3. for (int i = 1; i <= 3; i++) {7 q0 }9 s4 \! ]* c9 }4 _
  4.         settablenum(labeltable,i,1,duniform(0,5));2 h. d( l8 {# Z5 J$ ^' S
  5. }
复制代码
  r, I2 n  A. l" q  Y& _

3 n- q+ [$ I& a
* O& [& F3 L  I) k7 s8 f

本帖子中包含更多资源

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

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

本版积分规则

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

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

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

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