在simulink图中固定块

时间:2013-10-07 13:20:20

标签: matlab callback block simulink

是否有任何解决方案可以在simulink图中修复块,禁用块的移动/调整大小? 有没有解决方案在simulink(空矩形)中绘制一种形状? 我的目标是修复模型中的区域,以便不允许用户在该区域外设计模型。 我尝试使用回调函数但没有成功。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

据我所知,只有妥协。

如在另一个答案中所提到的,您需要创建一个子系统。在块参数中,您可以设置ReadOnly,因此所有内容都会根据需要修复并显示为灰色,或NoReadOrWrite访问权限,因此它会被完全阻止。此解决方案仅适用于“天真”用户,因为他们仍然可以更改属性以再次访问。也许你找到了阻止用户进入属性菜单的方法。

安全方式要复杂得多:protected Models

关于矩形的问题:我试图找到一个解决方案很长一段时间我会说没有办法“画”一些东西,虽然背景实际上被称为“画布”;)

您的其他评论:子系统有什么问题?您可以阻止除了您希望用户使用的块之外的所有内容。它在一个新的标签/窗口中打开,并不重要的是一切都有多大。你想要的可能是不可能的。

答案 1 :(得分:1)

您可以使用回调函数在某种程度上实现这一点。例如,让LoadFcn为:

A=get_param(gcb, 'Position');

MoveFcn

try                           
    set_param(gcb, 'Position', A);
catch                         
end

这将禁止移动和调整大小,但不会删除或删除。显然,这会污染工作空间,因此您需要考虑一种管理方式。如果您想要多个块,可以通过

将位置添加到块userData的{​​{1}}属性中
currBlock

然后将其添加到块的set_param(currBlock, 'UserData', get_param(currBlock, 'Position')); 回调

MoveFcn

您甚至可以通过编程方式执行此操作

try                                                    
    set_param(gcb, 'Position', get_param(gcb, 'UserData'));
catch                                                  
end

答案 2 :(得分:0)

你尝试过使用积木吗?请参阅此示例:http://blogs.mathworks.com/seth/2008/07/27/how-to-make-your-own-simulink-block/