我有一个simulink掩码块,我可以使用open_system(gcb)
打开掩码,我可以使用'close_system(gcb)`关闭它。
但是,任何未保存的参数都将被删除。 有没有办法确保保存掩码参数?比如,点击Apply按钮或OK按钮?
我的matlab版本是2011b,此版本中没有Simulink.Mask框架。
由于
答案 0 :(得分:0)
这是一个有效的解决方案:
首先你必须得到阻止对话框:
function blockDialog = getBlockDialog( blockHandle )
blockDialog = [];
allOpenDialogs = DAStudio.ToolRoot.getOpenDialogs;
for index = 1:length( allOpenDialogs )
dialogSource = allOpenDialogs( index ).getDialogSource;
if isa(dialogSource, 'Simulink.SLDialogSource')
dialogSourceSID = Simulink.ID.getSID( dialogSource.get_param('handle') );
if isequal(dialogSourceSID, Simulink.ID.getSID( blockHandle ))
blockDialog = allOpenDialogs( index );
break;
end
end
end
end
其次你必须得到块小部件:
function blockWidget = getBlockWidget( blockDialog)
blockWidget = [];
if ~isempty( blockDialog )
blockWidget = DAStudio.imDialog.getIMWidgets( blockDialog );
end
end
最后,您使用小部件在对话框上执行想要的操作:
function clickBlockOk( blockHandle )
blockDialog = getBlockDialog( blockHandle );
blockWidget = getBlockWidget( blockDialog );
if ~isempty(blockWidget)
blockWidget.clickOk( blockDialog );
end
end
function clickBlockApply( blockHandle )
blockDialog = getBlockDialog( blockHandle );
blockWidget = getBlockWidget( blockDialog );
if ~isempty(blockWidget)
blockWidget.clickApply( blockDialog );
end
end
在小部件中,您可以找到其他功能,例如clickHelp,clickRevert,clickCustomButton。
真正奇怪的是你需要对话框来获取小部件,但是你仍然需要使用小部件与对象进行交互的对话....这是我在建筑上没有得到的东西,但是那里有#s也许是一个原因。
答案 1 :(得分:-2)
您可以使用set_param
直接从命令行设置(并保存)参数:
set_param('<path-to-your-masked-block>','<name-of-the-parameter-to-set>','value')
请注意,value参数必须作为字符串传递。
更简单的方法是在蒙版中设置一个可以直接从工作区定义的变量。