【问题标题】:Getting handles of multiple selected blocks in Simulink在 Simulink 中获取多个选定模块的句柄
【发布时间】:2013-09-30 13:21:01
【问题描述】:

有没有办法使用 simulink API 获取所有选定块的句柄?

假设我使用鼠标选择了几个块,我如何使用 simulink API 以数组或单元格的形式获取所有选定块的句柄?

gcbh 只给出最近选择块的句柄。

基本上我想自动生成所有选定“Goto”块的相应“From”块,反之亦然。

Matlab 版本:2010b

【问题讨论】:

    标签: matlab simulink


    【解决方案1】:

    这将为您提供所有选定块的名称:

    blockNames = find_system('Type', 'Block', 'Selected', 'on')
    

    您应该能够通过遍历元胞数组并调用get_param(blockName, 'handle')来获取块的句柄:

    for i = 1:length(blockNames)
        blockHandles(i)= get_param(blockNames{i},'handle');
    end
    

    【讨论】:

    • 好的,我打开了一个模型,选择了一些块,运行上面的命令,我得到了一个空矩阵:S >> find_system('Type', 'Block', 'Selected', 'on') ans = Empty cell array: 0-by-1
    • 那么似乎是 2010b 的问题,它适用于 2013a。
    • 伤心,我的项目在 Matlab 2010b 上 :(
    • +1。在 R2012b 上为我工作。 'Selected' 的大小写无关紧要,但 'on' 必须小写。
    • 另请注意,如果您只想要当前活动系统的选定块,则需要使用find_system(gcs(), 'Type', ...)
    【解决方案2】:

    这并不能直接回答问题,但如果您想自动生成“发件人”块,我建议从文件交换中获取以下内容:

    http://www.mathworks.co.uk/matlabcentral/fileexchange/40117-autofromtag

    我以前用过,效果很好。

    【讨论】:

      【解决方案3】:

      如果您使用的是屏蔽子系统,请确保将 'LookUnderMasks' 设置为 'all'

      find_system(gcs, ...
          'SearchDepth'   , 1,...
          'LookUnderMasks', 'all', ...
          'selected'      , 'on');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-02
        • 1970-01-01
        • 1970-01-01
        • 2016-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-01
        相关资源
        最近更新 更多