The RptFile
reporter позволяет использовать Simulink® Компоненты Report Explorer в основанной на Report API программе отчетов. Этот репортер полезен, если программе отчетов необходимо сгенерировать содержимое, для которого существует компонент Report Explorer, но для которого не доступен репортер Report API. Например, Report Explorer включает компонент с именем Block Type Count, который генерирует количество блоков каждого типа, содержащихся в модели. Эквивалентный репортер Report API не существует.
В этом примере показано, как использовать RptFile
reporter, чтобы включить количество типов блоков, используемых в f14
Модель Simulink. Эта информация получена из компонента Report Explorer «Количество типов блоков» и представлена в таблицах в сгенерированном отчете Report API.
Создайте файл настройки Report Explorer, который включает компонент «Количество типов блоков». Дополнительные сведения о создании файла настройки отчета см. в разделе Setup отчета.
Тип report
чтобы открыть Report Explorer.
На панели справа нажмите Create and edit a Report file. Сохраните файл следующим mysetupfile.rpt
.
Из папки Simulink на средней панели добавьте компонент Model Loop к своему отчету. Установите Model name равным Current block diagram
.
Из папки Simulink на средней панели добавьте компонент System Loop в качестве дочернего элемента цикла модели. Установите следующие опции:
Loop on Systems — Select systems automatically
Include subsystems in Simulink functions - выбран
Sort Systems — By system depth
Из папки Simulink на средней панели добавьте компонент Block Type Count в качестве дочернего элемента системного цикла. Установите следующие опции:
Table title - Количество типов блоков
Show block names in title - выбран
Sort table — Alphabetically by block type
Сохраните файл.
The mysetupfile.rpt
иерархия есть
Эти шаги описывают, как создать программу генератора отчетов, которая включает в себя RptFile
репортер для mysetupfile.rpt
Файл настройки Report Explorer.
Примечание
Полная программа перечислена после шагов.
Чтобы исключить необходимость использования полных имен отчета, поиска и служебных функций, импортируйте функции API. Например, вместо использования mlreportgen.report.TitlePage
, можно использовать TitlePage
.
import slreportgen.report.* import slreportgen.finder.* import mlreportgen.report.* import mlreportgen.utils.*
Загрузите f14
модель.
model = "f14";
load_system(model);
Создайте объект отчета, чтобы сохранить содержимое отчета. Используйте конструктор отчета Simulink (slreportgen.report.Report
) для создания объекта отчета Необходимо полностью определить имя конструктора, чтобы отличить его от конструктора отчета MATLAB (mlreportgen.report.Report
). Укажите имя отчета следующим "My Report"
и выход в формате PDF.
rpt = slreportgen.report.Report("MyReport","pdf");
Добавьте к отчету заголовка страницу и таблицу содержимого.
titlepg = TitlePage(); titlepg.Title = "f14 Model Block Types "; titlepg.Author = "MathWorks"; add(rpt,titlepg); toc = TableOfContents; add(rpt,toc);
Найдите все системы в модели.
sysdiag_finder = SystemDiagramFinder(model); found_diags = find(sysdiag_finder);
Используйте цикл for, чтобы создать отдельную главу для каждой системы и включить снимок системы с однолинейной подписью.
Создайте RptFile
репортер на основе mysetupfile.rpt
. Репортер генерирует таблицу счетчиков типов блоков для текущей системы. Добавьте RptFile
репортер в главу и добавить главу в отчет.
for sysdiag = found_diags chap = Chapter(sysdiag.Path); snapshot = Diagram(sysdiag.Path); oneline = makeSingleLineText(sysdiag.Name); snapshot.Snapshot.Caption = strcat... ("System Diagram: ",oneline); add(chap,snapshot); rptFile = RptFile("mysetupfile.rpt"); rptFile.Model = model; rptFile.System = sysdiag.Path; add(chap,rptFile); add(rpt,chap); end
При первых запусках этого цикла во время генерации отчета в отчет добавляются снимок и счетчик блоков системы верхнего уровня модели.
Закройте и просмотрите отчет.
close(rpt); rptview(rpt);
Полная программа
import slreportgen.report.* import slreportgen.finder.* import mlreportgen.report.* import mlreportgen.utils.* model = "f14"; load_system(model); rpt = slreportgen.report.Report("MyReport","pdf"); titlepg = TitlePage(); titlepg.Title = "f14 Model Block Types "; titlepg.Author = "MathWorks"; add(rpt,titlepg); toc = TableOfContents; add(rpt,toc); sysdiag_finder = SystemDiagramFinder(model); found_diags = find(sysdiag_finder); for sysdiag = found_diags chap = Chapter(sysdiag.Path); snapshot = Diagram(sysdiag.Path); oneline = makeSingleLineText(sysdiag.Name); snapshot.Snapshot.Caption = strcat... ("System Diagram: ",oneline); add(chap,snapshot); rptFile = RptFile("mysetupfile.rpt"); rptFile.Model = model; rptFile.System = sysdiag.Path; add(chap,rptFile); add(rpt,chap); end close(rpt); rptview(rpt);