全球FlexSim系统仿真中文论坛

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

“用户事件”UserEvents求助

[复制链接]
跳转到指定楼层
1#
domcylai 发表于 2011-11-4 16:30:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 domcylai 于 2011-11-6 22:49 编辑 7 r: @* u; o% S5 W6 N
/ Z( H5 n3 f0 f/ Y& Y
最近在学习UserEvent时,遇到一些问题(附件):
9 e$ E0 M1 J9 \  B/ ~) @1.模型中Tools 有一个GlobalTables : num ;
" p. j4 C8 T8 W7 q$ P" n7 H2 ^9 z2.现在要求每隔一段时间以后,从FlowItemBin中产生Box进入系统,产生Box的数量从num表中取值,第一次产生的num是row1 的值,第二次是row2....
$ X* q; T8 m/ J+ ~3.当执行到最后一次后,停止用户事件。; {8 c) Z+ @2 P/ R' Z) N# D: b( U
) n# y; k$ k! W; ?8 G1 a8 Y

4 b; d2 X7 v3 a这个方法虽然实现了上述的功能,但是没有扩展性。如果num表内row的数量很大,而且不确定就不容易实现了。

本帖子中包含更多资源

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

x

评分

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

查看全部评分

2#
 楼主| domcylai 发表于 2011-11-4 17:29:34 | 只看该作者
本帖最后由 domcylai 于 2011-11-6 22:53 编辑 * R) q4 Y' i1 Q3 [5 R6 `3 c

+ d2 s6 A; }- c! C+ l3 {0 G1 c解决方法是:用一个for语句来控制:关键代码如下
& |1 E4 r: w- x' Q+ A( h# U for(int i=1;i<=gettablerows("rank");i++)
. t7 A) H6 _$ H{        if(i==num)  // 此处num值是记录UserEvent 已经运行的次数,可以新增一个节点或用一个table来记录
$ @, m) j6 m5 T5 \+ {5 ^1 X* e0 X        {        ' F- R8 ^) a4 a6 D' H
                for(int j=1;j<=gettablenum("rank",i,1);j++)% p$ j  {9 @9 X3 r4 p
                {
# v/ ~0 i7 _, F                        insertcopy(node("/Tools/FlowItemBin/1/1",model()),node("/Queue1",model()));" q3 P4 g5 ^6 O$ m7 e8 h+ ~
                }
; _  G5 ]: q0 b0 z) ^        }
# M5 p  E/ ^* O9 _) ]9 h}# v9 `5 u" ^1 p1 b6 N
此外我还加了一条语句:
9 v' O  \( h/ d3 J# o+ Q* u% c//if(num==gettablerows("rank"))
2 o$ b6 U! S% A$ \) f' h; jif(num==5)     //UserEvent运行5次后关闭
5 L+ V+ A4 d1 m9 [) p, r) m8 k2 Msetnodenum(node("/Tools/UserEvents/UserEvent1>variables/repeat",model()),0);
* g8 [* i0 l* x% \else 3 Y. A0 d) [( G1 E" C" S% P; F, B* G
{
+ M2 R" N: k. p$ B5 P7 m        num=num+1;. j3 e9 G5 E' G. ]6 ?; N
        setnodenum(runnum,num);# c( O2 a/ A# \
}5 a2 F; k, i- L  ?& ?( f* q
也就是控制 该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 & A: r9 P) n0 K; x. `! ~
; C$ @9 a9 ?: y9 U0 m
4 X0 e5 f- r" D$ B  k6 G
学得越来越不错了,补充一下,时间定时器,还可以用发生器和吸收器两个来控制,固定某个时间点创建临时实体,在创建触发里编辑代码
7#
Rosalyn 发表于 2011-11-14 20:17:45 | 只看该作者
4# qiush1234
) k4 z3 t! L/ ?' }* M自定义函数,我觉得可以通过C++编程和脚本编程,然后变成全局变量,可以让整个模型都能调用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-2 06:37 , Processed in 0.089042 second(s), 18 queries .

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

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