0

Is there any solution for fixing a block in simulink diagram, to disable moving/resizing for the block ? Is there any solution to draw kind of a shape in simulink (empty rectangles) ? my aim is to fix an area in the model, so that the user is not allowed to design the model outside this area. I tried using the callback functions with no success.

Thanks for any help.

4

3 回答 3

1

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

A=get_param(gcb, 'Position');

并且MoveFcn作为

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

这将禁止移动和调整大小,但不能剪切或删除。显然,这会污染工作空间,因此您需要想办法管理它。如果你想要很多块,你可以将位置添加到块的属性userDatacurrBlock

set_param(currBlock, 'UserData', get_param(currBlock, 'Position'));

然后将其添加到块的MoveFcn回调中

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

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

moveFcn = sprintf([...
    'try\n' ...
    '    set_param(gcb, ''Position'', get_param(gcb, ''UserData''));\n' ...
    'catch\n' ...
    'end\n']);
set_param(currBlock, ...
    'UserData', get_param(currBlock, 'Position'), ...
    'MoveFcn', moveFcn);
于 2013-10-09T15:41:48.983 回答
1

据我所知,只有妥协。

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

安全的方式要复杂得多:受保护的模型

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

对于您的其他评论:子系统有什么问题?您可以阻止除您希望用户使用的块之外的所有内容。它在一个新的选项卡/窗口中打开,一切都没有关系。以这种方式,您想要的可能是不可能的。

于 2013-10-07T13:46:49.880 回答
0

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

于 2013-10-07T13:29:55.457 回答