|
本帖最后由 zorsite 于 2012-12-5 16:17 编辑
如果是在传送带中,按临时实体类型发送代码如下:- /***popup:ByExpression*/
- /**指定端口*/
- /** \n输出端口: */
- double value = /***tag:expression*//**/getitemtype(item)/**/;
- /** \n\n注释: 此指定值可以是一个常量,也可以是命令返回值(getitemtype(item), getlabelnum(item, "labelname"), 等)。*/
- return value;
复制代码 其判断机制为:
先获取当前临时实体类型- double value =getitemtype(item);
复制代码 然后分配端口----------------------------------------------------------------
而在分拣传送带中,按临时实体类型发送代码如下:- int port = parval(2);
- /**按临时实体类型: */
- /**如果临时实体类型与端口匹配则发送临时实体。*/
- return getitemtype(item) == port;
复制代码 其判断机制为:
如果临时实体类型与端口匹配则发送临时实体。- return getitemtype(item) == port;
复制代码 Flexsim并不是先获取临时实体类型,然后去寻找相应端口;而是在每一个端口判断,当前临时实体的类型值是否与当前端口值相符,如果相符,则发送,如果不相符,则传送到下一段端口继续判断。可能另外一种代码更为容易理解:
- int port = parval(2);
- switch(port)
- {
- case 1: return getitemtype(item) == 1;
- case 2: return getitemtype(item) == 2;
- case 3: return getitemtype(item) == 3;
- default: return 1;
- }
复制代码 --------------------------------------------------------------
在我看来,第一种机制显然更为直观,每到达一个临时实体,直接获取其类型值,然后指定端口。
为什么在分拣传送带中采用了另外一种判断机制?其用意何在?
我感觉分拣传送带应该也可以通过第一种判断机制来指定端口,但是目前我的水平不够,而且demo版无法查看树结构,所以不知然后实现。我隐约感觉,这可能是在分拣传送带下并没有“发送至端口”这一选项,而是“发送条件”。 |
|