exponenta event banner

класс slreportgen.finder.BlockFinder

Пакет: slreportgen.finder
Суперклассы:

Поиск блоков Simulink

Описание

Поиск блоков в схеме Simulink ®.

Строительство

finder = BlockFinder(diagram) создает поисковик, который по умолчанию находит все типы блоков в указанной блок-схеме Simulink. Чтобы ограничить поиск определенными типами блоков, используйте свойства поиска.

Примечание

Этот поисковик предоставляет два способа получения результатов поиска:

  1. Чтобы вернуть результаты поиска в виде массива, используйте find способ. Добавление результатов непосредственно в отчет или обработка результатов в for цикл.

  2. Чтобы выполнить итерацию результатов по одному, используйте hasNext и next методы в while цикл.

Ни один из вариантов не имеет преимущества в производительности.

finder = BlockFinder(Name,Value) задает свойства, используя пары имя-значение. Можно указать несколько аргументов пары имя-значение в любом порядке. Заключите каждое имя свойства в отдельные кавычки.

Входные аргументы

развернуть все

См. раздел Свойство контейнера.

Свойства

развернуть все

Схема поиска, заданная как одно из следующих значений:

  • Обращение к модели или подсистеме Simulink

  • Путь к модели или подсистеме Simulink

Тип блока для поиска, например, Gain, заданный как строка или символьный массив, или набор типов блоков для поиска, заданный как строковый массив или массив ячеек символьных массивов.

Включать ли в результаты поиска блоки с комментариями, указанные как логические. Если false, блоки с комментариями исключаются из результатов поиска.

Варианты блока вариантов для включения в результаты поиска, указанные как одно из значений в таблице. Значение можно задать в виде строкового скаляра или символьного вектора.

СтоимостьОписание
"Active"Активные варианты (по умолчанию)
"All"Все варианты
"ActivePlusCode"Активные варианты и варианты кода

Свойства объектов для поиска, заданные как массив ячеек пар имя-значение. Поисковик возвращает только объекты с заданными свойствами и заданными значениями.

Пример: finder.Properties = {'Gain','5'}

Методы

results = find(finder) находит блоки в diagram определяется поисковиком. Этот метод возвращает блоки, которые он находит вложенными в результирующие объекты типа slreportgen.finder.BlockResult. Чтобы добавить таблицы свойств блока, добавьте объекты результатов непосредственно в отчет или добавьте их в репортер, который затем будет добавлен в отчет. Отчеты, к которым можно добавить results этого метода должны быть отчеты типа slreportgen.report.Report

tf = hasNext(finder) определяет, содержит ли схема, которую искатель ищет, по крайней мере, один блок. Если диаграмма имеет хотя бы один блок, hasNext метод ставит этот блок в очередь в качестве следующего блока, next метод вернется. hasNext затем метод возвращает true. Используйте next способ получения этого блока. При последующих вызовах hasNext определяет, имеет ли диаграмма блок, next метод еще не получен. Он ставит в очередь блок для next метод для извлечения и возврата true. Если больше нет блоков для извлечения, этот метод возвращает false. Для постепенного поиска блоков на диаграмме используйте hasNext с помощью next метод в цикле while.

result = next(finder) возвращает следующий поиск result в очереди результатов, которая hasNext создан метод. Этот метод возвращает блок, который он находит заключенным в результирующий объект типа slreportgen.finder.BlockResult. Чтобы добавить таблицы свойств блока, добавьте объект результата непосредственно в отчет или добавьте его в репортер, который затем будет добавлен в отчет. Отчеты, к которым можно добавить results этого метода должен иметь тип slreportgen.report.Report.

Копирование семантики

Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

Поиск блоков ввода и вывода в модели

Поиск блоков ввода и вывода в slrgex_sf_car модель.

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

model_name = 'slrgex_sf_car';
load_system(model_name)
rpt = slreportgen.report.Report('output','pdf');

add(rpt,TitlePage("Title",...
     sprintf('I/O Blocks in %s Model',model_name)));
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