❖ 事件代码编辑器 ❖
事件代码编辑器
1. 功能介绍
BHTC Simulation系统提供了一个方便快捷的代码编辑器,给建模工程师使用VBS程序语言来书写和编辑各个仿真元素的“流程逻辑”、“行为逻辑”程序代码,从而完成模型的运行逻辑。点击仿真元素属性对话框界面上的“流程逻辑按钮”(“Push to”、“Pull from”等)、“行为逻辑按钮”(各种“Action on …”按钮)系统弹出代码编辑器界面如下:

在事件代码框的空白处,单击鼠标左键,使之获得键盘输入焦点,即可在闪烁的输入光标处,开始VBS语言程序的输入和编辑工作。单击鼠标右键,系统弹出事件代码编辑器的功能菜单,如上图所示,各个菜单项功能如下:
- 插入规则
用来在输入光标位置处,自动插入系统内置的各种流程规则语句代码。如“push_to语句 ”、“pull_from”语句、“push_to_ship语句等”。
- 全选
将事件代码框中的全部代码内容置于选择状态。
- 复制
将代码框中选定的内容复制到内存中。
- 剪切
将选定的内容从代码框清除掉,并复制到内存中去。
- 粘贴
将复制在内存中的代码内容,粘贴到当前输入光标位置处。
- 注释
对代码框中选定的内容进行注释标记。
- 解除注释
对代码框中选定的内容解除注释标记。
- 查找
在代码框内查找特定的字符串,找到后高亮显示。
- 替换
对查找到的字符串进行替换。
- Tab Size
设置Tab键录入空格的长度。
- 字型
设置选定内容的字型。
2. 元素名称的录入
模型中的“流程逻辑”代码、“行为逻辑”代码,就是使用VBS语句对模型中的变量、函数、模型元素进行运算和操作的程序代码。因此,在代码的录入和编辑过程中要大量录入和引用这些模型结构中的元素名称。为提高建模效率,BHTC Simulation系统可通过鼠标双击模型结构树上的这些模型元素,自动将它们的名称录入到输入光标位置处。
在BHTC Simulation系统中,模型元素节点的命名规则如下:所有模型结构树节点元素的全称(“大名”),作为该元素在整个模型结构中的唯一标识,是不重复的。以模型结构树上的元素A为例,它的全称 = “MM_Model_” + “父节点名1_” + “父节点名2_” + “父节点名3_” + … + “元素A的直接父节点名”+ “元素A”名构成,即元素A的各级父节点+元素A名称构成。其中“MM_Model”是模型的根节点名称;元素A名称(“小名”)由字母 + 数字的形式构成,中间可以带有下划线,且区分大小写。处于同级父节点下的子节点的名称(“小名”)也是不重复的,但位于非同级父节点下元素的名称(小名)是可以重复出现的。以下图模型结构树上的高亮显示的“Part1”元素为例:

“Part1”元素的全称为:“MM_Model_Shop1_Line1_Part1”
,它的小名即为“Part1”,显然在模型代码编辑阶段,都使用全称来引用模型元素会使得程序代码繁复,因此为了程序代码构成简洁,可读性强,系统对自动录入的模型元素名称进行了下述的简化处理,使用它们的简称来引用模型元素,书写规则如下:
✤ 以当前正在进行的代码编辑的模型节点为基准,如果代码编辑中引用的是该节点同级父节点下的子节点元素,系统自动将这些节点的名称的简化名称(小名)录入到输入光标位置处。如下图中,在“Part1”元素的“Push to”流程代码的编辑过程中引用同级父节点下的“Buffer1”节点,当鼠标双击该节点后,在代码编辑框中的输入光标位置处,自动录入的就是该节点的小名“Buffer1”并高亮显示(蓝色字体)。

✤ 如果当前节点的代码编辑引用的是上一级父节点下的子节点,或其他非本分支树路径上的元素名称时,则系统录入这些节点的全称(大名)表示。如下图中,在“Part1”元素的“Push to”流程代码的编辑过程中引用非同级父节点、“line2”下的“Buffer1”节点,当鼠标双击该节点后,在代码编辑框中的输入光标位置处,自动录入的就是该节点的全称“MM_Model_Shop1_Line2_Buffer1”……,并高亮显示。

✤ 如果当前节点的代码编辑引用的是同级子节点的下级子节点,则系统使用其简化名称,来引用这些模型元素。简化名称 = “本级节点名_” + “下级父节点名1_” + “下级父节点名2_” + “下级父节点名3_” + … + 引用节点名。见下图示例中,在“Machine1”元素的流程逻辑代码中引用了同级子节点“line2”下的子节点“Buffer1”元素,当鼠标双击该节点后,在代码编辑框中的输入光标位置处,自动录入的就是该节点的简化名称为“line2_Buffer1”……,并高亮显示。

在模型运行阶段,系统会自动补齐上述各模型元素因简化代码而去掉的各级父节点名称,从而获得正确的仿真计算结果。
3. 函数名称的录入
同样地,在代码编辑过程中,对模型中自定义或系统提供的函数,也可使用相同的方法,鼠标双击模型结构树上的这些函数元素,自动将它们的名称录入到输入光标位置处,与此同时,还将函数的形参自动录入到代码中,如果该函数没有返回值,则在函数名前,自动补齐VBS语言调用函数的关键词“Call”,如下图所示,在模型结构树节点“Line2”下定义了两个带有形参的函数“func1”、“func2”,其中函数“func1”有返回值,函数“func2”是没有返回值的函数过程。在统计节点“Part1”元素的“Action”行为逻辑代码编辑时调用它们。

要使这些模型函数在仿真运行阶段发挥作用,就要使用“实参”代替函数中的“形参”,这时可通过使用退格键清除掉“形参”字符串,录入“实参”名,如果使用模型结构树上的全局变量作为“实参”,则使用鼠标单击函数“形参”位置处,函数形参的位置处获得键盘输入焦点,然后双击模型结构树上的变量节点,以上图中,使用“Model”节点下的变量“output”作为“func2”函数“para1”的实参为例,操作结果如下图所示:

4. 代码注释
在VBS语言中,使用两种方法对不需要计算机解释执行的程序代码进行注释处理:
- 使用保留字“REM”对整行代码进行注释
将保留字“REM”置于整行代码的开始位置,则该行代码被注释掉,不再被解释执行。
- 使用单引号标记注释文本:出现在其后的文本均标记为注释文本。
在事件代码编辑器中,使用浅绿色显示被使用上述方法注释掉的文本,以区别于由蓝色、黑色字符构成的程序代码正文。
为提高代码编辑效率,可一次性使用鼠标拖选需要被注释掉的多行代码,然后单击鼠标右键,从下拉菜单中选择“注释”,则被选中的多行代码即可被注释掉。如下图所示:


反之,操作鼠标拖选多行被注释掉的文本,单击鼠标右键,从下拉菜单中选择“解除注释”,则被选中文本的注释状态被解除,又重新回到由蓝色与黑色文本构成的程序正文代码状态。
5. Tab键的使用
为了使程序代码简洁美观、有较高的可读性,在代码编辑过程中,通常会根据将完成某一特定功能的代码段,统一对齐,或相对其他代码段进行统一的向左缩进、或向右移出。
在代码编辑器中,通过连续使用空格键,可以逐行的达到这样的对齐效果,为了提高代码编辑效率,本系统增加了使用“Tab”键快速地对选中的代码段进行左右平移对齐的功能。操作如下:
首选在代码编辑器空白处单击鼠标右键,从下拉菜单中选择“Tab Size”菜单项,并从其下一级菜单中选择在代码编辑器中每按一次“Tab”键,在输入光标输入位置,输入空格的数量。

然后,在代码编辑器中拖选要进行评议的文本,然后按“Tab”,此时选中的程序代码段每一行起始位置,统一添加了“Tab Size”所规定数量的空格,从而实现代码段的整体向右平移。如下图所示:

反之,如果要将选中的代码段向左平移对齐,则连续同时按下“Shift”键和 “Tab”键即可。
