全球FlexSim系统仿真中文论坛

搜索
查看: 5476|回复: 6
打印 上一主题 下一主题

“用户事件”UserEvents求助

[复制链接]
跳转到指定楼层
1#
domcylai 发表于 2011-11-4 16:30:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 domcylai 于 2011-11-6 22:49 编辑 1 _+ B: X7 |0 ]" ]6 A
8 G  I7 `: y0 `4 w% ?# L' l
最近在学习UserEvent时,遇到一些问题(附件):( x3 y' t; Y" k
1.模型中Tools 有一个GlobalTables : num ;! Z! n4 e- C4 [9 f% U
2.现在要求每隔一段时间以后,从FlowItemBin中产生Box进入系统,产生Box的数量从num表中取值,第一次产生的num是row1 的值,第二次是row2....
( \" f1 l/ j7 Q, _3.当执行到最后一次后,停止用户事件。
; ~6 A" w2 A& G/ J& L" Z
( B% G1 E2 Q; Q" Z" i, ]- y# B$ S. c, ^
这个方法虽然实现了上述的功能,但是没有扩展性。如果num表内row的数量很大,而且不确定就不容易实现了。

本帖子中包含更多资源

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

x

评分

参与人数 1威望 +12 收起 理由
Rosalyn + 12

查看全部评分

2#
 楼主| domcylai 发表于 2011-11-4 17:29:34 | 只看该作者
本帖最后由 domcylai 于 2011-11-6 22:53 编辑
! h( k& U* F& N$ h+ K7 {% M# H) a$ \  J0 k- g% `9 N' a
解决方法是:用一个for语句来控制:关键代码如下
2 z* ?) |  A( {; i  A for(int i=1;i<=gettablerows("rank");i++)+ Q" l. r* R/ z5 ]/ ]7 A2 u
{        if(i==num)  // 此处num值是记录UserEvent 已经运行的次数,可以新增一个节点或用一个table来记录: J: e( w9 g( c' k  B" S
        {       
# h& I3 d- U$ @0 g1 O/ P                for(int j=1;j<=gettablenum("rank",i,1);j++)
* Q8 n2 H7 G: D/ |! j" [7 f" s' ^                {
; a2 R( H9 F1 H" V& K                        insertcopy(node("/Tools/FlowItemBin/1/1",model()),node("/Queue1",model()));
0 c3 P$ Q% `& I" ?4 ^$ i- }6 g                }9 q4 \7 S7 n2 |  Y: x
        }
) u5 c$ [) n$ u+ v5 E3 ?0 a}# U6 N( Y6 r; a9 T' ?5 A- d
此外我还加了一条语句:6 `! K) E% U& K6 a. x! t7 B" S
//if(num==gettablerows("rank"))
! G5 o4 r/ l; v; _& b8 y& u; mif(num==5)     //UserEvent运行5次后关闭
  {5 C* X8 X+ C6 P$ J1 [( D! ^0 xsetnodenum(node("/Tools/UserEvents/UserEvent1>variables/repeat",model()),0);  j* J9 w3 ^& h& y1 s
else 9 j; x" p* n/ \; ]8 W
{
( l+ V% V8 |7 p: c  F        num=num+1;
! s0 }" \8 m5 ^, \2 k1 D" F) m5 i6 _. X        setnodenum(runnum,num);# Y; o: p2 t$ V1 ^0 d
}
. ?# x' b, O$ N1 G, f也就是控制 该UserEvent 自动运行的开关节点。=1 为开 =0 为关。

本帖子中包含更多资源

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

x
3#
 楼主| domcylai 发表于 2011-11-6 23:06:29 | 只看该作者
UserEvents 功能是正式版软件才能用,Demo版用户可以使用另外的方法来“制造”一个时间定时器:比如设定一个小车在两点间运动,每次触碰的时间通过速度来控制。也可以用传送带等
4#
qiush1234 发表于 2011-11-10 09:19:04 | 只看该作者
过来学习的,不知道有没有自定义函数这样的教程啊。
5#
 楼主| domcylai 发表于 2011-11-11 17:33:21 | 只看该作者
自定义函数是神马东西?是指Script教程吗?
6#
Rosalyn 发表于 2011-11-14 20:12:15 | 只看该作者
3# domcylai
  N" L, v& C: O* ~! i2 M
: H; ~) ?- v$ v1 |3 k6 l9 P6 C
6 w0 e9 T% z1 f% @& x0 d( e学得越来越不错了,补充一下,时间定时器,还可以用发生器和吸收器两个来控制,固定某个时间点创建临时实体,在创建触发里编辑代码
7#
Rosalyn 发表于 2011-11-14 20:17:45 | 只看该作者
4# qiush1234- a8 L  K) B* V1 \  b7 d
自定义函数,我觉得可以通过C++编程和脚本编程,然后变成全局变量,可以让整个模型都能调用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-28 18:52 , Processed in 0.082409 second(s), 15 queries .

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

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