全球FlexSim系统仿真中文论坛

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

“用户事件”UserEvents求助

[复制链接]
跳转到指定楼层
1#
domcylai 发表于 2011-11-4 16:30:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 domcylai 于 2011-11-6 22:49 编辑 , C) h% @1 L. n# y# T- R* G  n
" t0 U( q3 H8 b: K" o3 Y' {
最近在学习UserEvent时,遇到一些问题(附件):% D& @% U8 f% _* b  t
1.模型中Tools 有一个GlobalTables : num ;
) K! g9 [0 R8 k1 G( ?# a5 n2 P- |2.现在要求每隔一段时间以后,从FlowItemBin中产生Box进入系统,产生Box的数量从num表中取值,第一次产生的num是row1 的值,第二次是row2....
% c9 S, A! W# Z" z, c0 N* v* {3.当执行到最后一次后,停止用户事件。3 ~0 n0 P% s7 F
2 r' K6 s' r5 K) }" N( p
: R5 W0 @% G. l* C1 O
这个方法虽然实现了上述的功能,但是没有扩展性。如果num表内row的数量很大,而且不确定就不容易实现了。

本帖子中包含更多资源

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

x

评分

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

查看全部评分

2#
 楼主| domcylai 发表于 2011-11-4 17:29:34 | 只看该作者
本帖最后由 domcylai 于 2011-11-6 22:53 编辑 ! y8 s3 Z; Y9 ]. _& W0 g1 u2 p

' I( `2 ~' X; Q5 {- a2 ^: W9 [3 |解决方法是:用一个for语句来控制:关键代码如下
6 w$ S5 I) o9 p6 m7 X3 U" f for(int i=1;i<=gettablerows("rank");i++)4 S0 `* [; b; t- f; @) |5 M% E
{        if(i==num)  // 此处num值是记录UserEvent 已经运行的次数,可以新增一个节点或用一个table来记录
7 r" ]5 F, n4 q' g' a9 U7 J6 b        {       
, H+ f  U* I, g: y1 j- T% I                for(int j=1;j<=gettablenum("rank",i,1);j++)6 x" }' x7 ]; y0 W7 B
                {) b0 E. U2 h" c& [) |
                        insertcopy(node("/Tools/FlowItemBin/1/1",model()),node("/Queue1",model()));2 @% V" A2 m/ r) S) ^# o
                }
* l1 y8 D6 R3 `9 v: n( Q        }
! p; U. e, Y, R" B4 G}
. B: u9 Y+ a5 X# m此外我还加了一条语句:
. N7 F4 L: Z7 B5 h& y5 X3 y//if(num==gettablerows("rank"))* g3 q) A) y3 _* e3 J  @( c' U% k
if(num==5)     //UserEvent运行5次后关闭
( S9 _# }$ s$ }( t! n: bsetnodenum(node("/Tools/UserEvents/UserEvent1>variables/repeat",model()),0);% E; M- }" o4 @8 S. ~
else 6 ]. w  Q# Z8 G/ N1 R
{
7 Q+ W" m. X- S: q' o" F        num=num+1;2 o! U! z/ }5 v* }1 Z9 z3 m
        setnodenum(runnum,num);0 S1 _: v2 o7 u8 c1 b& o5 H( a( ]
}
: N, i! p# x$ O2 l) ~! q0 h也就是控制 该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 # M) f8 e% |5 ~  g  v

8 W1 U+ \8 x" [4 I# {8 Z2 p- ^! P+ L. g( c; i1 [( Z  ~& ~
学得越来越不错了,补充一下,时间定时器,还可以用发生器和吸收器两个来控制,固定某个时间点创建临时实体,在创建触发里编辑代码
7#
Rosalyn 发表于 2011-11-14 20:17:45 | 只看该作者
4# qiush1234, l" f; l0 a+ f: M+ l
自定义函数,我觉得可以通过C++编程和脚本编程,然后变成全局变量,可以让整个模型都能调用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-7 10:35 , Processed in 0.090404 second(s), 15 queries .

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

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