概述
本文参考Mathworks网页:
向模型编辑器菜单添加菜单项- MATLAB & Simulink- MathWorks 中国
开发人员通常需要调用自己编写的脚本文件以实现自定义功能(如何编写脚本文件不是本文的重点,故不做说明)。Matlab提供了在编辑器中添加菜单项的方法,将建模过程中需要使用的功能添加到编辑器中可以不用退出编辑器直接使用自定义工具,提高建模的效率。
实现方法如下:
①在sl_customization.m文件中注册用户自定义菜单
通过在sl_customization.m文件中编辑自定义管理器对象属性实现注册自定义菜单的目的,指定添加自定义项的位置:Simulink Editor或Stateflow Editor和菜单标识,以及自定义函数句柄:
cm.addCustomMenuFcn('Simulink:MenuBar', @CustomMenuItems)
'Simulink:MenuBar':表示在Simulink Editor的工具栏位置添加自定义菜单,这个参数也可以为Stateflow Editor添加菜单,菜单标识类型可以是ContextMenu(自定义菜单添加到鼠标右键)、ToolsMenu(在菜单栏创建Tools菜单,在Tools末尾添加自定义项目)等,在sl_customization.m文件中多次调用cm.addCustomMenuFcn命令,可以实现同时添加多个菜单的目的。
@CustomMenuItems:自定义菜单函数句柄,一个自定义菜单函数句柄可以作为参数传给多个cm.addCustomMenuFcn,即在不同位置添加相同的菜单。
例:
function sl_customization(cm)
cm.addCustomMenuFcn('Simulink:ContextMenu', @getContextMenuItem);
cm.addCustomMenuFcn('Stateflow:ContextMenu', @getContextMenuItem);
cm.addCustomMenuFcn('Simulink:ToolsMenu', @getToolsMenuItem);
cm.addCustomMenuFcn('Stateflow:ToolsMenu', @getToolsMenuItem);
end
②创建自定义菜单函数
自定义菜单函数返回架构函数句柄的元胞数组,架构函数的数量即自定义菜单的项目个数;
例:
function schemaFcns = getContextMenuItem(callbackInfo)
schemaFcns = {@Modify_BackColor,@Model_BackColor};
end
③创建架构函数
架构函数中定义了在编辑器中显示的自定义菜单属性
sl_container_schema对象:主要编辑对象label属性和childrenFcns属性,label属性指定菜单项的标识名,callback指定为菜单项创建的子项目;
sl_action_schema对象:主要编辑对象label属性和callback属性,label属性指定菜单项的标识名,callback指定菜单项的执行函数;
例:
function schema = Modify_BackColor(callbackInfo)
Label = 'Modify_BackColor';
schema = sl_container_schema;
schema.label = Label;
schema.childrenFcns = {@Blue,@Red};
end
function schema = BackColor_Red(callbackInfo)
Label = 'BackColor_Red';
schema = sl_action_schema;
schema.label = Label;
schema.callback = @BackColor;
end
④创建执行函数
自定义菜单的执行函数的创建与一般函数的创建一样;
⑤刷新自定义文件
在命令行窗口执行sl_refresh_customizations命令,重新编译Simulink Editor的菜单和工具栏。
执行结果如下:
最后
以上就是默默鲜花为你收集整理的在Simulink/Stateflow编辑器中添加自定义菜单的全部内容,希望文章能够帮你解决在Simulink/Stateflow编辑器中添加自定义菜单所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复