14.1 Simulink环境自定义功能
sl_sustomization.m函数是Simulink提供给用户使用MATLAB语言自定义Simulink标准人机界面的函数机制。若sl_sustomization.m函数存在于MATLAB的搜索路径中,在当Simulink启动时就会读取此文件的内容进行Simulink的人机界面的初始化。Simulink本身就提供了这个函数,用户每次修改之后,必须重启Simulink或者使用命令sl_refresh_customizations使变更起作用。
14.2 Simulink工具栏菜单自定义
可以在Simulink提供的现有菜单栏的基础上进行菜单项的添加。Simulink Model Editor中用于添加菜单项的位置有3个:顶层菜单的末尾、菜单栏和右键菜单的开始或结尾处。
添加的对象成为项目(item),为了添加项目,需要以下步骤:
- 创建一个定义项目的模式函数(schema function);
- 将这个定义菜单项目的函数注册在sl_customization.m中;
- 为这个菜单项目定义一个触发运行的回调函数。
例:增加一个显示当前所选模块属性列表的菜单项目。
首先创建一个定义此项的模式函数。
function schema = get_block_property(callbackInfo) schema = sl_action_schema; %使用sl_action_schema函数创建一个对象 schema.label = 'block property'; schema.userdata = 'Custom'; schema.callback = @custom_callback; end
选中此菜单时触发回调函数 custom_callback,显示当前选中的模块的属性列表。
function custom_callback(callbackInfo) inspect(gcbh); disp('### The property of current block is displayed.'); end
接着将定义的函数注册到sl_customization.m中。
以下代码将Simulink菜单栏以及子层菜单的WidgetId显示出来。
使用addCustomMenuFcn方法可以注册一个自定义菜单项目函数。
function sl_customization(cm) %% Register custom menu function. cm.addCustomMenuFcn('Simulink:ToolsMenu', @custom_items); end
在注册的cuntom_items函数中使用句柄函数方式,亦成为匿名函数。
%% Define the custom menu function. function schemaFcns = custom_items(callbackInfo) schemaFcns = {@get_block_property}; end
这样,就在Tools菜单最末一项得到所设定的菜单项。
自定义Model Editor的菜单不仅可以是一级菜单,还可以是多级菜单。