全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
. a7 \" I4 s" _7 }$ C5 p) z, \" q
: g+ [6 e  X2 P: C
5 a7 E) R/ Q/ \6 p3 {+ G思路1:
, }5 P. M4 R5 a2 M' |4 x* W使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
5 _7 \: n7 Z9 z- q
: j- o5 E( F8 y: a' D
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    ( k$ U$ ]. \$ K0 }! l- F) ?
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    + L# Z) t2 h4 ~% g" P
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。& n1 v2 Z, X- G. J
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。
    , U9 C4 K, h% t, U# W8 e2 Z( U

  5. ; K4 _7 s0 I% r7 j
  6. for (int i = 1; i <= 3; i++) {
    % }; i( p( ~* h8 Q) Q: @# E  |; E3 m
  7.         string labeltablerowname=concat("类型" , numtostring(i));
    - N! ]- H) f' c- `+ Z# P- I
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行' t4 C+ O. f# Q
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。$ O; |* T2 i3 I! Z  T, a, g
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
    6 w) I* _2 }$ S  P8 M1 @
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)+ h7 |% t; G5 {6 E: g, d0 p
  12.         //因为该节点要存放数值,所以数据类型要设置正确。       
    & d6 m9 q5 d  C9 |" W+ v7 K
  13.         int num=duniform(0,5);% @3 L  K8 G% _. h# F+ E# B
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值$ Y4 ^. j+ H" x' x5 P& l$ L
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。9 U/ [- A( Y  }6 k% \6 {
  16. }$ D/ s0 H, _. Y" b, ?5 s
复制代码
思路2:( f$ L* V/ z+ h, y
既然assertsubnode可以,那nodeinsertinto也行得通。
  X( C5 |0 l5 q6 K( l
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    " f  H  ?5 H  ]  g- X
  2. for (int i = 1; i <= 3; i++) {
    + {: s8 q0 g- M% W) K) M' r+ d, X
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行. r5 K; P1 k6 B) g
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    2 }. W& b; m. B* k* Z. K* B* t
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型& F% J8 x8 \& N7 k' h% M& u9 g" F
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。8 h9 N' A* p* d: n, P" L1 F* k
  7.         int num=duniform(0,5);
    : y0 Z- O2 i, o4 q
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    " J- P# }) C. ~# {/ b( O: L# d
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    2 d* K6 W2 D' B: G
  10. }
复制代码
思路3:# i. {, n' \3 O# O( l9 u& g0 u( V0 B
既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?4 q- d  p& D8 j0 O5 _& c
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
    $ ?: O! F% q# F% |, K
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); $ p. k' V- Q7 {( Z
  3. for (int i = 1; i <= 3; i++) {
    1 _5 b# _/ H8 D. C; a3 C6 f
  4.         settablenum(labeltable,i,1,duniform(0,5));6 {& I- B+ E/ p1 e7 Q
  5. }
复制代码

, ]# q" H3 N$ h2 J, Q. r0 f3 O0 {* V
/ e6 J& G% s$ o' x  v( Z; q- i/ q7 q3 \

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-9-6 08:06 , Processed in 0.085568 second(s), 14 queries .

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

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