Flexsim仿真学习—脚本语言FlexScript
1. 引用对象
|
命令 |
解释 |
例子 |
|
Node.first |
这将返回对节点内第一个排序对象/节点的引用 |
Current.first |
|
Node.last |
这将返回对节点内最后排序的对象/节点的引用 |
Current.last |
|
Node.subnodes[ranknum] |
这将返回对节点内给定排名对象的引用 |
Current.sbunodes[3] |
|
Object.inObjects[portnum] |
这将返回对连接到对象的输入端口号的对象的引用 |
Current.inobjects[1] |
|
Object.outObjects[portnum] |
这将返回对连接到对象的输出端口号的对象的引用 |
Current.outobjects[1] |
|
Object.centerObjects[portnum] |
这将返回对连接到对象中心端口号的对象的引用 |
Current.centerobjects[1] |
|
Node.next |
这将返回对节点的下一个排序对象的引用 |
Item.next |
|
Node.prev |
这将返回对先前排序的节点对象的引用 |
Item.prev |
|
Node.find(path) |
这将返回从节点开始的树中找到的对象 |
Current.find(“Box1”) |
2. 对象属性
|
命令 |
解释 |
|
Object.name |
这将返回对象的名称 |
|
Object.name = newname |
这将设置对象的名称 |
|
Object.color = color.color |
这将设置对象的颜色(颜色为红,绿,蓝,随机) |
|
Object.color = color(red,green,blue) |
这将对象的颜色设置为红,绿,蓝 |
|
Setobjectshapeindex(object.indexnum) |
设置对象的3D形状 |
|
Setobjecttextureindex(object.indexnum) |
设置对象的3D纹理 |
3. 对象统计
|
命令 |
解释 |
|
Object.subnodes.length |
这将返回对象的当前内容 |
|
Object.stats.input |
这将返回对象的输入统计信息 |
|
Object.stats.output |
这将返回对象的输出统计信息 |
|
Obj.stats.state().value = statenum |
这将设置对象的当前状态 |
|
Obj.stats.state().value |
这将设置对象的当前状态值 |
|
Obj.stats.state().valuestring |
这将以字符串形式返回对象的当前状态 |
|
Object.rank |
这将返回对象的等级 |
|
Object.rank = ranknum |
这设置了对象的等级 |
|
Getentrytime(item) |
这将是返回流项目进入当前所在对象的时间 |
|
Getcreationtime(item) |
这将返回创建流项的时间 |
4. 对象控制
|
命令 |
解释 |
|
Obj.input.close() |
这将关闭对象的输入 |
|
Obj.input.open() |
这将重新打开对象的输入 |
|
Obj.output.close() |
这将关闭对象的输出 |
|
Obj.output.open() |
这将重新打开对象的输出 |
|
Sendmessage(toobject,fromobject, parameter1,parameter2,parameter3) |
这会导致触发对象的消息触发器 |
|
Sendmessage(toobject,delaytime,fromobject, parameter1,parameter2,parameter3) |
这会导致对象的消息触发器在一定的延迟时间后触发 |
|
Obect.stop(downstate) |
这告诉对象停止其操作并进入给定状态 |
|
Object.resume() |
这允许对象恢复其操作 |
|
Obj.output.stop() |
这将关闭对象的输出,并累积stopoutput请求 |
|
Obj.output.resume() |
一旦所有stopoutput请求恢复,这将打开对象的输出 |
|
Obj.input.stop() |
这将关闭对象的输入,并累积stopinput请求 |
|
Obj.input.resume() |
一旦所有停止输入请求恢复,这将打开对象的输入 |
|
Unsertcopy(originalobject,containerobject) |
这会将对象的新副本插入容器中 |
|
Moveobject(object.containerobject) |
这回将对象从其当前容器移动到其新容器中 |
5. 对象变量
|
命令 |
解释 |
|
Getvarnum(object,“variablename”) |
这将返回具有给定名称的变量的数值 |
|
Setvarnum(object,“variablename”,value) |
这将使用给定名称设置变量的数值 |
|
Getvarstr(object,“variablename”) |
这将返回具有给定名称的变量的字符串值 |
|
Setvarstr(object,“variablename”,string) |
这将使用给定名称设置变量的字符串值 |
|
Getvarnode(object,“variablename”) |
这将返回对给定名称作为节点的变量的引用 |
6. 表格
Table table = reftable(“GlobalTable1”); //Global tables
Table labelTable = current.labels[“TableData”]; //Label table
|
命令 |
解释 |
|
Table[row num/name][col num/name] |
这将返回表的指定行和列中的值 |
|
Table[row num/name][col num/name] = value |
这将设置表的指定行和列中的值 |
|
Table.setSize(rows.columns) |
这将按行和列设置表的大小 |
|
Table.numRows |
这将返回表中的行数 |
|
Table.numCols |
这将返回表中的列数 |
|
Table.clear() |
将表中的所有数字值设置为0 |
7. 提示和打印输出
|
命令 |
解释 |
|
Print(var value) |
将变量值打印到输出控制台上 |
|
Msg(“title”,“caption” |
打开一个简单的Yes,No,Cancel对话框 |
|
Userinput(targetnode,“prompt”) |
打开一个对话框,您可以在其中设置模型中节点的值 |
|
String1+string2 |
这将返回两个字符串的字符串连接 |
8. 变量类型
|
命令 |
解释 |
|
Int |
整列 |
|
Double |
双精度浮点数类型 |
|
String |
字符串 |
|
Treenode |
对Flexsim节点的引用 |
|
Variant |
数字,字符串,treenode或数组 |
|
Array |
数组 |
|
Object |
Treenode与对象数据 |
|
Color |
Rgba颜色的组成部分 |
|
Vec3 |
xyz矢量的组件 |
|
Table |
元素表 |
|
List |
用于同步任务和逻辑的动态事物列表 |
|
var |
推断变量类型 |
9. 对Queue里面批量进入的item打乱顺序
Setrank(item,duniform(1,content(current)));
10. 构造类对象
Color mycolor = color(1,0,0); // makes a red color
Object.location = vec3(0,0,0); //sets the object’s location to the origin
11. 点语法
Object.method(parmeter1,parmeter2,parmeter3…);
Current.setlocation(1,1,1);
Treenode lastitem = current.last;
Treenode item3 = current.subnodes[3];
Int quantity = current.quantity; //Accesses label named ‘quantity’
12. If语句例子
案例1:
If(item.subnodes.length = = 2)
{
Item.color = Color.red;
}
Else
{
Item.color = Color.black
}
案例2:
If(time() > 1440)
{
Return 10;
}
Else
{
Return 20;
}
13. While循环语句
While (test expressiom)
{
Code block
}
While (current.subnodes.length > 2)
{
Current.last.destroy();
}
14. For循环语句
For(start expression; test expression; current expression)
{
Code block
}
For (int index = 1;index <=current.subnodes.length; index++)
{
Current.subnodes[index].as(object).color = color.blue;
}
15. Switch语句
Switch(switchvariable)
{
Case casenum;
{
Code block;
Break;
}
Default:
{
Code block;
Break;
}
}
Switch(item.type)
{
Case 1;
{
Item.color = Color.yellow;
Break;
}
Case 2;
{
Item.color = Color.red;
Break;
}
Default;
{
Itme.color = Color.green;
Break;
}
}
16. 函数案例
Getlabelnum(object,“labelname”);
Setlabelnum(object,“labelname”,value);
Getlabelstr(object,“labelname”);
Setlabelstr(object,“labelname”,string);
Label(object,“labelname”);
Settablenum(“GlobalTable”,1,1,1);
17. 代码举例
一、
18. string labelname = "station" ;
19. Variant value = current .station;
20. int n = item . labels [ labelname ]. value ;
21. if ( n != value )
22. return 1 ;
23. else
24. return 0 ;
二、
int num = fmod ( Model . find ( "Combiner49>stats/stats_output" ). value , 6 );
if ( num == 0 ) {
num = 6 ;
}
/**Set Label*/
Object involved = /** \nObject: *//***tag:object*//**/ item /**/ ;
string labelname = /** \nLabel: *//***tag:label*//**/ "mylabel" /**/ ;
Variant value = /** \nValue: *//***tag:value*//**/ num /**/ ;
三、
current . find ( ">variables/sequence/Arrival1/Quantity" ). value = gettablenum ( "Fixture" , 2 , 1 );
四、引用命令
|
命令 |
解释 |
示例 |
|
first(node) |
返回的是所传递的实体中排序第一的对象的引用 |
first(current) |
|
last(node) |
返回的是所传递的实体中排序倒数第一的对象的引用 |
last(current) |
|
rank(node,ranknum) |
返回的是所传递的实体中某给定排序的对象的引用 |
rank(current,3) |
|
inobject(object,portnum) |
返回的是与所传递的实体的输入端口号相连的对象的引用 |
inobject(current,1) |
|
outobject(object,portnum) |
返回的是与所传递的实体的输出端口号相连的对象的引用 |
outobject(current,1) |
|
centerobject(object,portnum) |
返回的是与所传递的实体的中间端口号相连的对象的引用 |
centerobject(current,1) |
|
next(node) |
返回的是所传递的实体中排序下一个对象的引用 |
next(item) |
五、实体属性
|
命令 |
解释 |
|
getname(object) |
返回实体的名字 |
|
setname(object,name) |
设定实体的名字 |
|
getitemtype(object) |
返回实体中临时实体类型的值 |
|
setitemtype(object,num) |
设定实体中临时实体类型的值 |
|
setcolor(object,red) |
设定实体的颜色 |
|
colorred(object) |
设定实体的颜色为红 |
|
setobjectshapeindex(object,indexnum) |
设定实体的3D形状 |
|
setobjecttextureindex(object,indexnum) |
设定实体的3D纹理 |
|
setobjectimageindex(object,indexnum) |
设定实体的2D纹理,通常只在平面视图中使用 |
六、实体空间属性
|
命令 |
解释 |
|
xloc(object)yloc(object)zloc(object) |
这些命令返回实体x、y、z轴向的位置 |
|
setlocz(object,xnum,ynum,znum) |
此命令设定实体x、y、z轴向的位置 |
|
xsize(object)ysize(object)zsize(object) |
这些命令返回实体x、y、z轴向的尺寸大小 |
|
setsize(object,xnum,ynum,znum) |
此命令设定实体x、y、z轴向的尺寸大小 |
|
xrot(object)yrot(object)zrot(object) |
这些命令返回实体围绕x、y、z轴向的旋转角度 |
|
setrot(object,xdeg,ydeg,zdeg) |
此命令设定实体围绕x、y、z轴向的旋转角度 |
七、实体统计值
|
命令 |
解释 |
|
content(object) |
返回实体当前数量 |
|
getinput(object) |
返回实体的输入统计 |
|
getoutput(object) |
返回实体的输出统计 |
|
setstate(object,statenum) |
设定实体的当前状态 |
|
getstatenum(0bject) |
返回实体的当前状态 |
|
getstatestr(object) |
以字符串返回实体当前状态 |
|
getrank(object) |
返回实体的排序 |
|
setrank(object,ranknum) |
设定实体的排序 |
|
getentrytime(object) |
返回实体进入到当前所在实体中的时刻 |
|
getcreationtime(object) |
返回实体的创建时刻 |
八、实体标签
|
命令 |
解释 |
|
getlabelnum(object,labelname) |
返回实体的标签值 |
|
getlabelnum(object,labelname) |
|
|
setlabelnum(object,labelname,value) |
设定实体的标签值 |
|
setlabelnum(object,labelname,value) |
|
|
getlabelstr(object,labelname) |
获得实体标签的字符串值 |
|
setlabelstr(object,labelname,value) |
设定实体标签的字符串值 |
|
setlabelstr(object,labelrank,value) |
|
|
label(object,labelname)label(object,labelrank) |
返回一个作为节点的标签的引用,此命令常用在把标签当作一个表来使用的情况下 |
九、表
|
命令 |
解释 |
|
gettablenum(tablename/tablenode/tablerank,rownum,colnum) |
返回表*特中**定行列的值 |
|
settablenum(tablename/tablenode/tablerank,rownum,colnum) |
设定表*特中**定行列的值 |
|
gettablestr(tablename/tablenode/tablerank,rownum,colnum) |
返回表*特中**定行列的字符串值 |
|
settablestr(tablename/tablenode/tablerank,rownum,colnum) |
设定表*特中**定行列的字符串值 |
|
settablesize(tablename/tablenode/tablerank,rows,columns) |
设定表的行列数大小 |
|
gettablerows(tablename/tablenode/tablerank) |
返回表的行数 |
|
gettablecols(tablename/tablenode/tablerank) |
返回表的列数 |
|
clearglobaltable(tablename/tablenode/tablerank) |
将表中所有数字值设为0 |
十、实体控制
|
命令 |
解释 |
|
closeinput(object) |
关闭实体的输入端口 |
|
openinput(object) |
重新打开实体的输入端口 |
|
sedmessage(toobject,fromobject,parameter1 ,parameter2,parameter3) |
在一段特定时间延迟后触发实体消息触发器 |
|
stopobject(object,downstate) |
令实体停止,进入指定状态 |
|
resumeobject(object) |
使实体恢复其原来的无论什么操作 |
|
stopoutput(object) |
关闭实体的输出端口,并累计停止输出的请求 |
|
resumeoutput(object) |
打开实体的输出端口 |
|
insertcopy(originalobject,containerobject) |
往容器里插入新的实体复制品 |
|
moveobject(object,containerobject) |
将实体从当前容器移到它的新容器中 |
十一、高级函数
|
命令 |
解释 |
|
getvalrnum(object,“variablename”) |
返回给定名称的变量的数值 |
|
setvalrnum(object,“variablename”,value) |
设定给定名称的变量数值 |
|
getvarstr(object,“variablename”) |
返回给定名称的变量的字符串值 |
|
setvalrstr(object,“variablename”,string) |
设定给定名称的变量的字符串值 |
|
getvarnode(object,“variablename”) |
返回一个节点,作为指向给定名称的变量的应用 |
十二、任务执行器控制
|
命令 |
解释 |
|
pf(text string) |
向输出控制台打印文本 |
|
pf(float value) |
向输出控制台打印浮点数值 |
|
pd(discrete value) |
向输出控制台打印整数数值 |
|
pr() |
在输出控制台中建新的一行 |
|
msg(“title”.“caption”) |
打开一个简单的“是、否、取消”消息框 |
|
userinput(targetnode,“prompt”) |
打开一个可以设定模型节点值的对话框 |
|
concat(string1,string2,etc.) |
合并两个或多个字符串 |