全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
6 i: B/ l0 p8 {+ L% M; d2 O; P2 b; P) ~2 o5 Z+ \
0 ?  F% @  i5 R) n
思路1:
4 ]1 U* u% y% Y, H6 u2 M使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。0 r1 m1 Z" {; d" z4 e

; _6 M2 U% `1 g3 ]+ m
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    9 `$ D- |8 @  ^; u" U
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    7 x+ k! v, Q& g" H7 s8 \
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。" s* S4 C) I1 `: W1 M/ r
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。
    6 U. R  z7 |- [0 }) j* m# }
  5. 5 B5 I6 W; S+ I) J; v, Q
  6. for (int i = 1; i <= 3; i++) {! D7 q* O& s" m
  7.         string labeltablerowname=concat("类型" , numtostring(i));1 w, b* e" \* v' g4 J3 f
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行
    # n: p( F3 c) P, ]5 j" M
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。6 N. g# I( ^2 {! `& M5 @
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
    1 k  N$ F, p% u$ i; n5 p
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)& W1 M8 a# y1 Z$ f) }) k$ o. [
  12.         //因为该节点要存放数值,所以数据类型要设置正确。        & f. D/ |7 p+ B5 o6 g* M" |
  13.         int num=duniform(0,5);
    - w) |" D& H& ^+ R! `
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值
      y/ q, n$ W5 ^
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    * {8 r3 }: K( V8 v( O7 M
  16. }
    ; B! h( z% T* ?9 _, d0 I
复制代码
思路2:3 H( V& M! ~) z% d3 P2 j2 J8 s
既然assertsubnode可以,那nodeinsertinto也行得通。
$ K! z, x9 h6 K; @( B, q
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    9 ]/ C. S/ _) D2 x5 X
  2. for (int i = 1; i <= 3; i++) {( I2 c( d/ c& d9 B* M
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行+ m0 s% K7 K' j# W6 S  B; t3 n
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    . Z: [( \4 N8 e1 _- \& @
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型& B% h2 }1 R# e+ \1 s
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。$ |! m/ \7 |7 n/ L
  7.         int num=duniform(0,5);$ j% o( f: a( @) B* s9 ^( y% U8 B+ Y
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    . h  ^; f% x. M
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    - ?  I: ]4 H' j% Z4 a
  10. }
复制代码
思路3:- d. D/ ^, C2 ~7 \  A' m
既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?, C( @, e# F& g# B
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签; p; r$ i8 f" I
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER);
    5 x+ m' y% i! T3 r0 _
  3. for (int i = 1; i <= 3; i++) {
    ) _0 x( O- R% [6 M* N
  4.         settablenum(labeltable,i,1,duniform(0,5));; ^# ^$ j8 V' }; d. o# S( v
  5. }
复制代码

) Q! q4 I, D/ o8 n0 M# \  |5 F3 Y; ~; V4 D' ?& L
2 y6 a3 ?. [8 M# f0 y4 G$ S/ K4 X; m

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-29 21:44 , Processed in 0.081459 second(s), 15 queries .

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

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