如何实现向模型编辑器菜单添加自定义菜单?
-
对于每个菜单项,创建一个名为架构函数的函数,用于定义该菜单项; -
在启动时使用 Simulink 自定义管理器注册菜单自定义项,例如,在 MATLAB路径上的 sl_customization.m 文件中; -
创建回调函数,用于实现由添加到菜单的菜单项触发的命令;
-
编写注册菜单自定义项
sl_customization 函数将自定义项添加到 Simulink 的“工具”菜单。functionsl_customization(cm)cm.addCustomMenuFcn('Simulink:PreContextMenu', @myCustomMenu);end
-
创建自定义菜单函数
自定义菜单函数返回架构函数的元胞数组,这些架构函数定义要在模型编辑器菜单上显示的自定义项。自定义菜单函数返回一个元胞数组,它类似于 generateFcn 函数返回的元胞数组。
您的自定义菜单函数应接受回调信息对象并返回列出架构函数的元胞数组。该元胞数组的每个元素可以是架构函数的句柄,也可以是二元素元胞数组,其第一个元素是某架构函数的句柄,第二个元素是要传递给该架构函数的用户定义的数据。
function schemaFcns = myCustomMenu(callbackInfo)schemaFcns = {@addMyMenu};end
-
定义触发自定义命令的菜单项
指定菜单名称和执行动作。要定义子菜单,请创建一个架构函数,该函数接受回调信息对象并返回容器架构对象,该对象指定定义子菜单上的菜单项的架构。
function schema = addMyMenu(callbackInfo)schema = sl_action_schema;schema.label = '运行我的脚本';schema.callback = @runMyScript;end
-
编写执行函数
functionrunMyScript(~)disp('自定义脚本已运行!');% 这里可以调用你的脚本:end
-
刷新自定义菜单
sl_refresh_customizations


-
你可以用 Simulink:PreContextMenu添加右键菜单,也用Simulink:PreMenuBar添加到菜单栏。 -
如果要分组多个菜单项,可以返回多个 sl_action_schema对象。 -
复杂功能可以结合 GUI、脚本和模型 API 一起使用。
夜雨聆风