FlexSim7.7.0 更新内容
FlexSim7.7.0 更新内容------------------------------------------------------------------------------------
--- FlexSim 7.7.0 (2015 年 11 月 23 日) --------------------------------
添加 Process Flow 模块使用流程图来处理复杂逻辑。
FlexScript 语言现在的变量类型能够使用任何的定义方式(number, string, treenode,
intarray, doublearray, stringarray, treenodearray)。
骨骼动画-动画编辑器现在能够导入谷歌动画
数据在flexsim动画中使用。
添加 Global List(全局列表),详见 User Manual > Modeling Tools > Global List。
类似此种报错在 7.7 中不再出现,定义语言都通用了。
Global Tables(全局表)现在可以选择将其数据存放在 bundle 中,而不是原来的多级子
节点中。
数组(int, double, string and treenode)现在能够存在节点中了,比如标签中。
数组(int, double, string and treenode)现在能够像表格一样可查看/编辑了
标签能够使用 setlabel()命令存储指针指向其他实体
弃用 parnode(), parval() and parstr(),用 param()命令代替
添加了 arraysize()命令,可以获取数组的容量
具体使用方式是 arraysize(数组名)
勾选使用 bund
添加了对 Oculus Rift(一款虚拟现实设备)的支持。
增加了对 Xbox 360 手柄的支持。
在 global preference(全局设置)能够设置显示 3Dview 的帧数。
添加了卡车任务执行器临时实体。
在 dashboard 中添加了用户自定义甘特图(Custom Gantt)。
Dashboards 现在有了滚动条。
现在 dashboard 能够调整数据显示的精度。
现在 dashboard 能够使用取样器来添加统计实体。
现在 dashboard 在统计组(Group)实体数据时,在组成员增加或者减少后能够更新重
新计算组的统计数据。
现在能够复制黏贴 dashboard。
移除 AVI Maker 使用 Video Recorder 代替。
添加了 "Available at Simulation Start" 选项使得任务执行器的 OnResourceAvailable 触发
器能够在 0 时刻触发,即初始状态任务执行器即可用状态。(单击运行后触发)
改进 Quick Properties 面板,现在红选了多个实体后,在 Quick Properties 面板中改变任
一红选实体的参数,能够应用到所有的红选实体。
改进了旋转(Rotated Selected)和翻转(Flip Selected),现在能够在 3D 视图中对红选中的实
体进行准确的镜像翻转和旋转。
在试验器中可以将模型布局(Model Layout)作为可选变量了。
改进了试验器的数据查看输出,使得其显示可以定制化改变。
任务序列现在能够存储他们自己的标签。//没有正式号无法实验
优化了 flexsim 在非标准 DPI 下的显示效果。
在 Quick Properties 中增加了一个面板来对 3D view 截图保存(也可以使用 viewtofile()命
令)。
现在追踪 (TrackedVariables)不再存储在 bundle 中而是储存在简单数据实体中
(simpledatatype object)。
现在在全局表单元格中输入的时候使用 shift+enter 不再是转跳到下一个单元格,而是重
新创建一行输入。
改变了临时实体打包方式的 UI,使得现在看起来更加直观。
增加了一个打包的逻辑: Layer Stacking By Item Size
BasicTE 和 BasicFR 在触发器页面中增加了 On State Change(状态改变触发)触发器。
弃用 FRLOAD 和 FRUNLOAD,统一使用 LOAD 和 UNLOAD。
更新了 updatelocations 命令。现在可以使用 item 作为其实体的参数,与 item 父节点使
用 updatelocations 效果一致。
在绘图性能上的大量改进。
Improvements to how model data is saved to remove differences in the xml files.
在用户手册中增加了关于模型重复性(Model Repeatability)的页面(FlexSim Concepts >
Model Repeatability)。
使用 getmodelunit()命令代替 getmodelunitnum()和 getmodelunitstr()命令。
移除全局任务序列(Global Task Sequences),使用流程图(Process Flow)代替。
改进用户手册搜索结果,优先显示最相关的选项。
优化了许可证激活窗口
按住鼠标滚轮现在也能够拖动改变 3D 视图了,放大缩小视图现在是以鼠标位置为中心
(而不是视图中点为中心)。
增加了 statisticaltime()命令。
GUI的Edit部件添加了rangemin和rangemax属性来定义可以输入值的范围(在dashboard
中也可以使用)
左为新逻辑,右边是 pallet 默认的效果。
现在所有 FlexScript 均可以作为 SQL 的标量函数。
Query 命令中增加了对 HAVING 子句的支持。
增加 SQL 对”==”的语法支持
在 Excel 导入工具中,选择“自动区分数据”(Automatic Data Distinction)选项后,时间和
日期将被识别成数值形式导出。
移除了在树视图中的右键“Copy Path to Clipboard”复制实体路径到剪贴板中
加强了 Excel 导入工具中自动区分数据(Automatic Data Distinction)功能。现在可以正确识
别储存格式为字符的数字,现在会将其作为字符串数据导入而不是导入数值 0
以及修复了之前版本的一些 BUG
--- 兼容性注解 -----------------------------------------------
--- 以下更新可能会一定程度上导致之前版本的模型无法正常运行----
临时实体状态变量现在存储在一个用户数据结构中而不是直接存放在树结构中。这意味
着如果你老版本模型不是使用 getitemstate(),getitemsendto(),getitemvar()等命令来获
取临时实体相关状态,而是直接在树结构中获取临时实体状态值,在新版本的模型中需
求针对此进行更新
在之前的版本中,drawfont()每执行一次对应改变一个 drawtext()命令的字体。现在,执
行 drawfont()命令后能够改变字体并保持到下一次改变执行为止。
变量 NULL 不再与 0 相等,专门添加了关键词“nullvar”相等于 null 变量。这可能会影
响使用 getlabel()相关命令来判断是否存在标签。查看 getlabel()的命令帮助获取更多信
息。
以下命令现在获取/返回可变数据类型,而不是双精度型。
nodefunction()
sendmessage()
function_s()
function_n()
userfunction_s()
userfunction_n()
nodefunctionlisten()
delayednodefunction()
addbundleentry()
applicationcommand()
这些变化影响如下:
nodefunction(x, tonum(current)); // 错误代码
nodefunction(x, current); // 正确代码
当你将数据转换成数值型数据时,同时又有人需要节点型数值,可变数据类型认为这是数值
型变量所以不会返回有效的节点。
此外,现在所有 flexscript 和 c++代码现在返回可变数据类型而不是双精度型。这同样有如下
影响:
return tonum(centerobject(current, 1)); // 错误代码
return centerobject(current, 1); // 正确代码
此处再次出现,如果将某个节点存储为一个数值,在其他地方又需要节点,那么变量将无法
识别正确的节点。
我们添加了一个更新脚本用以搜索此类问题,可以将 tonum()这类的代码进行更新,该脚本
代码的更新日志我们将其放在 MODEL:/Tools/CodeUpdateLog 这个节点中。
这段更新脚本将会进行以下的更新:
returntonum(...);
改为
return (...);
上述提到的所有命令,该更新脚本都会在模型中进行遍历,并将其参数进行如下更新:
nodefunction(theNode, tonum(...), tonum(...));
改为
nodefunction(theNode, (...), (...));
遗憾的是,更新脚本还不足够智能到可以找到以下的代码(定义过的变量):
doublemyVal = tonum(...);
returnmyVal;
或者
doublemyVal = tonum(...);
nodefunction(theNode, myVal);
以上内容说明了,直接应用这些存储为数值型的变量仍然可以正常工作,特别是如果你可以
完全掌控传递(变量)的两边,比如你编制了函数的调用方和被调用方。
调用方:
nodefunction(theNode, tonum(theObj));
被调用方:
treenodemyVal = parnode(1);
以上的这个例子可以正常地执行。我们已经用一个单独的命param()来替代parnode()、parstr()
和 parval()这些命令,以保证不会由于变量类型而导致代码出错。然而这些弃用的命令将会
优先尝试将获取到的任何变量传递到任何你指定的地方。因此此处的 parnode()将会被视作
一个数值型,而获取为一个节点型。同样的情况还出现在下面:
被调用方:
returntonum(myObj);
调用方:
treenodemyObj = tonode(nodefunction(theNode, ...));
同样的,这也是可执行的命令,因为 tonode()和 tonum()都会优先将他们获取到的变量转化
为数值型或节点型。
然而这个将会导致一边使用安全类型方法(即使用 param()命令),而另一边不使用的时候出
现代码错误。
调用方:
nodefunction(theNode, tonum(theObj));
被调用方:
treenodemyVal = param(1); // 无法执行由于 param(1) 返回的是数值而不是节点
flexsim 内置的所有代码已经全部(或者说基本上全部)都使用了安全类型方法。因此任何
在用户自己编写的代码和 flexsim 内置代码之间调用的时候都需要使用安全类型方法。我们
希望之前提到的更新脚本会解决绝大多数的兼容问题。 必须得顶呀!
static/image/common/sigline.gif
massage bathtub flexsim系统仿真软件,容易上手! 小伙伴们在哪里~ 工业工程的发展离不开这个网站 小伙伴们在哪里~ 谁告诉我工业工程出路在哪 楼主的帖子实在是写得太好了。文笔流畅,修辞得体,深得魏晋诸朝遗风,更将唐风宋骨发扬得入木三分,能在有生之年看见楼主的这个帖子。实在是我三生之幸啊。看完楼主的这个帖子之后,我竟产生出一种无以名之的悲痛感——啊,这么好的帖子,如果将来我再也看不到了,那么不是浪费楼主的心血吗?经过痛苦的思想斗争,我终于下定决心,牺牲小我,奉献大我。我要拿出这帖子奉献给世人赏阅,我要把这个帖子一直往上顶,往上顶!顶到所有人都看到为止! 不错不错,楼主您辛苦了。。。 其实我是奉吧主大人之命来顶贴的...