在报告 API 报告中使用 Simulink 报告资源管理器组件
RptFile 报告器让您可以在基于报告 API 的报告程序中使用 Simulink® 报告资源管理器组件。如果您的报告程序需要生成存在报告资源管理器组件但没有可用的报告 API 报告器的内容,则此报告器很有用。例如,报告资源管理器包含一个名为 Block Type Count 的组件,它可以生成模型所包含的每种模块的数量。不存在等效的报告 API 报告器。
此示例显示如何使用 RptFile 报告器来包含 f14 Simulink 模型中使用的模块类型的计数。此信息是从报告浏览器模块类型计数组件获得的,并以生成的报告 API 报告中的表格形式显示。
创建报告资源管理器安装文件
创建一个包含“模块类型计数”组件的报告资源管理器安装文件。有关创建报告设置文件的信息,请参阅 报告设置。
输入
report以打开报告资源管理器。在右侧面板中,点击创建和编辑报告文件。将文件保存为
mysetupfile.rpt。从中间面板的 Simulink 文件夹中,将 Model Loop 组件添加到报告中。将模型名称设置为当前模块图。
从中间面板的 Simulink 文件夹中,添加一个 System Loop 组件作为 Model Loop 的子组件。设置以下选项:
对系统循环 - 自动选择系统
在 Simulink 函数中包括子系统 - 已选择
对系统排序 - 按系统深度
从中间面板的 Simulink 文件夹中,添加一个模块 Type Count 组件作为 System Loop 的子组件。设置以下选项:
表标题 - 模块类型计数
在标题中显示模块名称 - 已选择
对表排序 - 按模块类型字母顺序
保存文件。
mysetupfile.rpt 层次结构为

创建报告生成器程序
这些步骤描述了如何创建一个包含 mysetupfile.rpt 报告资源管理器安装文件的 RptFile 报告器的报告生成器程序。
注意
完整程序列在步骤之后。
为了消除使用报告、查找器和工具函数的完全限定名称的需要,请导入 API 函数。例如,您可以使用
mlreportgen.report.TitlePage,而不是使用TitlePage。import slreportgen.report.* import slreportgen.finder.* import mlreportgen.report.* import mlreportgen.utils.*
加载
f14模型。model = "f14"; openExample(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 循环为每个系统创建单独的章节,并包含带有单行标题的系统快照。
根据
mysetupfile.rpt创建一个RptFile报告器。报告器为当前系统生成一个模块类型计数表。将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"; openExample(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);