主要内容

本页采用了机器翻译。点击此处可查看英文原文。

slreportgen.finder.BlockFinder 类

命名空间: slreportgen.finder
超类: mlreportgen.finder.Finder

查找 Simulink 模块

描述

在 Simulink® 图中查找模块。

slreportgen.finder.BlockFinder 类是 handle 类。

创建对象

描述

finder = BlockFinder(diagram) 创建一个查找器,默认查找指定 Simulink 模块图中的所有类型的块。要将搜索限制到特定类型的模块,请使用查找器的属性。

注意

此查找器提供了以下选项来获取搜索结果:

  • 要将搜索结果作为数组返回,请使用 find 方法。将结果直接添加到报告中或在 for 循环中处理结果。

  • 要逐个迭代结果,请在 while 循环中使用 hasNextnext 方法。

这两个选项在性能上都没有优势。

示例

finder = BlockFinder(Name=Value) 使用名称-值参量设置属性。您可以按任意顺序指定多个名称-值参量。

输入参量

全部展开

请参阅 Container 属性。

属性

全部展开

要搜索的图,指定为以下值之一:

  • Simulink 模型或子系统的句柄

  • Simulink 模型或子系统的路径

要查找的模块的类型,例如 Gain,指定为字符串或字符数组,或者要查找的一组模块类型,指定为由字符串数组或字符数组组成的元胞数组。

是否在搜索结果中包含注释掉的模块,指定为逻辑值。如果是 false,注释掉的模块将被排除在搜索结果之外。

要包含在搜索结果中的变体模块的变体,指定为以下值之一:

描述
"Active"活动变体
"All"所有变体
"ActivePlusCode"活跃变体和代码变体

数据类型: char | string

搜索 Container 的级别数,指定为非负整数或 Inf。指定 Inf 来搜索所有级别。

查找器结果的排序方法,指定为下列值之一:

描述
"none"不对结果进行排序。
"alphabetical"按名称的字母顺序对结果进行排序。
"systemAlpha"按父系统名称的字母顺序对结果进行排序。
"fullPathAlpha"按完整路径的字母顺序对结果进行排序。
"blockType"按类型字母顺序对结果进行排序。
"depth"按在模型层次结构中的深度对结果进行排序。排序列表中的第一个结果属于层次结构最高的系统。例如,顶层模型中的结果和子系统中的模块按以下顺序排序: myModel/block1myModel/subsystem1/block2myModel/subsystem1/nestedSubststem/block3
"leftToRight"按结果在模型布局中的位置从左到右对结果进行排序。模型中的一行模块是位于两条水平线之间的模块子组。最小行是不能分成子行的行。该算法首先将模块分组为最小行,然后从左到右对每行进行排序。然后,算法将已排序的行从上到下连接起来。
"topToBottom"使用从上到下的列对结果在模型布局中的位置进行排序。模型中的一列模块是位于两条垂直线之间的模块子组。最小列是不能分成子列的列。该算法首先将模块分组为最小列,然后从上到下对每行进行排序。然后,算法从右到左连接已排序的行。
"runtime"按照非虚拟模块在模型或非虚拟子系统中的执行顺序对其进行排序。此选项编译包含指定模块的模型。任何代表模块模块不属于 Container 指定的系统的块的模块结果都将附加到已排序模块列表的末尾。对于多任务系统,模块根据其执行的任务进行分组。

属性:

GetAccess
公共
SetAccess
公共

数据类型: char | string

将搜索限制到连接到特定信号的模块,指定为 slreportgen.finder.SignalResult 对象或端口句柄。如果此属性为空,则搜索不限于连接到特定信号的模块。

示例: finder.ConnectedSignal = find_system(my_model,findall=true,type="port",name="my_signal")

属性:

GetAccess
公共
SetAccess
公共

要查找的对象的属性,指定为名称-值参量的元胞数组。查找器仅返回具有指定属性和指定值的对象。

示例: finder.Properties = {'Gain','5'}

属性:

GetAccess
公共
SetAccess
公共

数据类型: cell

方法

全部展开

示例

全部折叠

sf_car 模型中找到 Inport 和 Output 模块。

import mlreportgen.report.*
import slreportgen.report.*
import slreportgen.finder.*

model_name = "sf_car";
load_system(model_name)
rpt = slreportgen.report.Report("output","pdf");

add(rpt,TitlePage(Title="I/O Blocks in "+model_name+" Model"));
add(rpt,TableOfContents);

diagFinder = SystemDiagramFinder(model_name);
diagFinder.IncludeRoot = false;
while hasNext(diagFinder)
    diagram = next(diagFinder);
    chapter = Chapter(Title=diagram.Name);
    add(chapter,diagram)
    sect = Section(Title="Inport Blocks");
    ioFinder = BlockFinder(diagram.Object);
    ioFinder.BlockTypes = "Inport";
    blocks = find(ioFinder);
    for block = blocks
        add(sect,block)
    end  
    add(chapter,sect);
    sect = Section(Title="Outport Blocks");
    ioFinder = BlockFinder(diagram.Object);
    ioFinder.BlockTypes = "Outport";
    outblocks = find(ioFinder);
    for block = outblocks
        add(sect,block)
    end  
    add(chapter,sect)
    add(rpt,chapter)
end
close(rpt)
close_system(model_name)
rptview(rpt)

版本历史记录

在 R2017b 中推出