|
思路是:将 type 转换成 str 作为某个东西的引用,这样就省去了一轮的 Loop ;$ f- W- x' H' r9 `
具体来说,是用 bundle 中 getbundlefieldnr 可以传递引用参数来实现。
P! G8 ]! q& s! k; K( H" j* }7 ? J2 [恰好,7.7版本开始, FlexSim 可以使用 bundle 存储表格数据,不仅带来了更加轻便的数据处理,也带来了很多新的特性。(赶快升级呀!). s+ `: M, U! f& {/ C
) l. c, D3 ~5 Z2 M/ I V. g$ w以下是实例:* J, X5 T4 j% M3 e4 V3 T
创建一个名为"GlobalTable1"的全局表,并改成 Use Bundle。& A# A+ E( |! q( z
& a% H) {# d, Z: B
之后就是在需要统计的时间点或者事件处,运行如下代码:
2 v9 E* I- r @* f' A5 }" u! E- treenode queue=node("Queue3", model());
. O' p0 ]* I3 ~4 V6 P/ ^2 Y
1 c* ]& o& }) f' s1 O3 o- treenode targetTable=reftable("GlobalTable1");( M: \# Q. v5 O
- settablesize(targetTable,1,1);) U# P8 w& K! D
- forobjecttreeunder(queue)6 _6 }9 @' Z1 h% f: e1 W* d
- {
7 s1 ]1 @* ~5 f6 o; b& f1 R - string typeStr=numtostring(getitemtype(a),0,5);: n' o% o W7 M* m1 Y
- int col=getbundlefieldnr(targetTable, typeStr)+1;
- K3 d5 b. r* R* W4 u - if (col)$ q/ F* u8 v# m/ U- o* H# x: m0 G- M
- {: j' d! a& v. a, ?7 C5 |
- settablenum(targetTable,1,col,gettablenum(targetTable,1,col)+1); U- z0 J3 C' F" \' t, J( J
- }
+ r9 c+ E5 a, B+ P- X0 @ - else
$ F& E6 G2 c9 S/ e! f8 f - {
0 f5 e, m; u9 n" w - addtablecol(targetTable);
; P# O* a& d5 m5 C- d - int nrCols=gettablecols(targetTable);
h7 g5 a6 }6 r3 I; l) o; c7 p - settableheader(targetTable,2,nrCols,typeStr);
. h$ c. ]+ B9 U5 e( s - settablenum(targetTable,1,nrCols,1);5 D/ C& c% |4 ]& R5 ?, Y8 c
- }! Q7 v' C5 s% z( l/ t$ b
- }3 q, L. e0 p# R
复制代码 ps:有个小缺陷,全局表第一行第一列的内容无法加入统计。 |
评分
-
查看全部评分
|