首页 文章

在simulink图中固定块

提问于
浏览
0

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

谢谢你的帮助 .

3 回答

  • 1

    据我所知,只有妥协 .

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

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

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

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

  • 0

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

    A=get_param(gcb, 'Position');
    

    MoveFcn as

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

    这将禁止移动和调整大小,但不会删除或删除 . 显然,这会污染工作空间,因此您需要考虑一种管理方式 . 如果您想要多个块,可以将位置添加到块 currBlockuserData 属性中

    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);
    
  • 1

相关问题