全球FlexSim系统仿真中文论坛
标题:
如何获取Activity的统计信息?
[打印本页]
作者:
zorsite
时间:
2022-11-29 15:17
标题:
如何获取Activity的统计信息?
本帖最后由 zorsite 于 2022-11-29 15:42 编辑
G3 \+ F7 l9 K+ }3 p" d$ |
5 W5 t" a+ ~7 n. b
如何获取Activity的统计信息?
4 _: J# n! J+ C, o: h& ?+ R/ J
3D实体的属性面板中可以查看统计信息。
* [2 c* o* u+ W: |# Z7 J2 ]
[attach]6028[/attach]
( q% ~3 `7 O, E0 V6 X( _
同时可以通过Object.stats属性来获取相关信息。
$ ~+ f3 a, J& A8 }( s
[attach]6029[/attach]
, T. p- i' g: A! [( }: G' F
Activity也有属性面板
4 d+ C8 j- s6 D! b0 @( T+ A
[attach]6030[/attach]
- S# j3 _: E9 ^2 t# c
但是Activity却没有stats属性,无法通过属性获取统计信息。
% m' U6 ?8 i" q
[attach]6031[/attach]
4 W: I: R4 F! b7 y
原因在于当我们使用current关键字的时候,current被声明为Object对象,而activity被声明为treenode对象。
/ z$ I6 |! f; w1 a6 Y
treenode作为Object的父类,其属性和方法不如其子类Object那样丰富。
3 l/ E$ ~5 E+ _
[attach]6032[/attach]
8 s2 n) `/ d6 P. C7 n: ]3 \
作为treenode的子类,Object对象除了有treenode的属性外,还具有以下属性:
$ Q8 C5 H- N, L
[attach]6033[/attach]
8 J: T9 K0 A% a, F0 I3 o f
其中就有stats属性,可以获取统计信息。
8 L* a9 q% j, E, a# i7 W5 b2 }
' s8 }0 O& z7 l
那如何使用代码获取Activity的统计信息呢?
8 O4 k; l% ]& A3 u6 q# x
第1种方法,使用getstat命令。
) W) N/ n/ U# o9 o1 m6 n1 d
getstat (node object, str name, int flag [, var p1, var p2, var p3])
. E2 J! G' ]) _& N9 B! O0 f
Returns the statistic value for the given objectDescription
' n1 D: D2 ~4 v; l9 Z
It is preferred to use Object.stats instead. Gets the specified statistic from the given object.
. Y3 D5 C% S5 C/ X6 r) g/ D; x
Example:
( W* `3 B. v; N; O3 S1 [ h. |
getstat(activity, "Content", STAT_CURRENT)
复制代码
getstat(activity, "Input", STAT_CURRENT)
复制代码
getstat(activity, "Staytime", STAT_AVERAGE)
复制代码
double avgContent = getstat(
9 a$ O9 f) n5 j: k
// getstat requires between 4 and 6 parameters:
' D1 K+ @+ |9 J8 H$ Q
activity, // 1. the object (shared asset or activity) that has the statistic
- E2 r4 l r5 H$ Q
"Content", // 2. the name of the statistic
- U% D2 m8 s* z
STAT_AVERAGE, // 3. the desired value from the statistic (could also be STAT_CURRENT, STAT_MIN, or STAT_MAX)
5 H( y9 E! O9 B
// 4. an optional parameter the instance object (usually current)
3 j, D0 n) w; z
// 5. an additional parameter to help resolve which data to get
8 p" C& P( p) F$ H/ `: \9 V: v Z
// 6. an additional parameter to help resolve which data to get
! [( a7 W3 F/ Q9 n5 N! {7 }
);
复制代码
( r: V& k+ M( c& ]* J1 r
第2种方法,转换activity的类型。
8 [1 }6 ]" S# }$ a V
既然Object对象有stats属性,那把activity从treenode类型转换为Object类型不就可以了?
2 c8 d8 u3 r4 ?& d3 p
转换的方式有2种:
. V) Q E$ w h: H& w. U( \# [0 D
方法1,使用as关键字:
5 _% K! H8 ?- b0 {' e; `
activity.as(Object).stats.input.value;
5 Z( n0 G1 H- `' Q. x4 F9 o* J
复制代码
7 S% f6 U7 I3 x" D7 [
方法2,将activity声明为Object类型的变量:
2 E+ E" k" ?! i' [* `- b" ]0 |
Object Obj_activity=activity;
0 A8 p0 n2 r- Z4 T' A8 S: ^& T
return Obj_activity.stats.input.value;
复制代码
6 D, b5 o: X, K
: e: k2 ]2 y4 M9 Q( Z
; Y$ T) {5 \1 s7 z
$ a6 z Z' X% V
3 u5 i: `7 ]6 |3 F
+ [' r, B3 T4 n# }0 f
' j G+ I# u6 q% F) P6 s% h
$ l) c5 f: H2 H3 p
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3