全球FlexSim系统仿真中文论坛
标题:
使用命令插入表格标签
[打印本页]
作者:
zorsite
时间:
2018-6-7 16:38
标题:
使用命令插入表格标签
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
6 y6 [/ k6 X& ^5 F7 L+ e
[attach]4413[/attach]
7 H# x( ]9 X8 k0 h2 ^0 s
3 z+ K0 W0 B6 F' |4 I' y* Y/ }3 y
思路1:
# e k6 h6 H- W2 `
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
: n6 ]( p/ n1 E% e, V& D7 i2 B3 c. c
$ k" o9 j& |" i
treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
; V3 B3 Z$ l) F6 B6 l
//treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
9 ~ x6 k' Z& P; r. Y1 O! A
//此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
; O' m( \; q, I9 S0 V
//表格中存放的数据类型与此无类,会在后面的在代码中定义。
+ Z! ~8 u4 P# B8 j2 K2 r& I
- h) m( ^9 ]1 M& B" Y) \. B, D& K
for (int i = 1; i <= 3; i++) {
3 [) y$ \& `9 S, U1 @# {; h
string labeltablerowname=concat("类型" , numtostring(i));
/ F5 g. c! A- l% w, r8 a1 v* Y
treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行
8 z8 G+ v) f5 h0 Z" T0 {
//第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
. ~; U" s( R5 T l
//第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
" ~, @/ w3 B* y! m- N: y0 w$ M
treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
* D% P2 S& T3 z- P K( i" `
//因为该节点要存放数值,所以数据类型要设置正确。
! k1 Q3 K) }- l; W. E% T
int num=duniform(0,5);
) |" ] D4 {! P: J
//setnodenum(labeltablecell,num);//为该数据单元赋值
6 [: }0 |: w V O9 }# s2 c$ E
settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
7 w' n3 [! z. J1 |+ n! Y& q! ?
}
6 c1 b- e5 M+ G w5 X
复制代码
思路2:
/ m+ b4 P1 D2 t& i) ^6 ?
既然assertsubnode可以,那nodeinsertinto也行得通。
6 A+ C6 O& j0 G! D
treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
% C s. n- e; f4 l. y( p, e% M
for (int i = 1; i <= 3; i++) {
: Z0 ]$ k- |1 e- V
treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行
/ {* T: u- o! {3 J0 y3 w5 m, m& @
treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
; ^; n! v+ M1 k9 |: N5 G
nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型
8 `8 Z- A3 U: q9 d, H
//虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。
/ Z) I. h: g5 q% \ u6 `, }# k
int num=duniform(0,5);
1 s) P- E) k2 ~+ p$ d
//setnodenum(labeltablecell,num);//为该数据单元赋值
0 E+ d7 s A% v0 o b9 O
settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
m- v' w) `8 a. B# A: @
}
复制代码
思路3:
. |, x; w1 I; K* u# K
既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
6 m0 Z: F0 C9 R" }
treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
4 T9 R- k, ?7 u' {
settablesize(labeltable,3,1,DATATYPE_NUMBER);
3 C& z e, ~7 s4 p) d5 _+ g
for (int i = 1; i <= 3; i++) {
) k: I2 h$ O! i" I& n- ~- ^0 L2 q
settablenum(labeltable,i,1,duniform(0,5));
! Y/ F! m1 t7 r0 y) L. P
}
复制代码
/ P; E9 Q( C4 |0 r" {. Q# M
* E- a& d2 I2 w& Z) T
( K; L: H6 ]# l, ^% _: A8 q! h
作者:
慧娴亚伦
时间:
2018-6-8 09:51
感谢分享!
+ G1 _+ l/ | _2 `
关键是建立起节点格式~
作者:
zjj0605
时间:
2018-6-11 17:49
谢谢大神的分享
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3