主要内容

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

在 HTML 和 PDF 报告中自定义 Simulink 图超链接

此示例展示如何自定义 PDF 和 HTML 报告中嵌入式 Simulink 图的导航超链接。默认情况下,点击图元素会导航至记录该元素的报告节。要为超链接指定不同的目标,请按照此示例中的步骤操作。

设置报告并加载 Simulink 模型

导入 DOM 和 Report API 包,这样您就不必使用完全限定的类名。

import mlreportgen.dom.*
import slreportgen.report.*

创建并打开 Simulink 报告。

rpt = Report("myreport","pdf");
open(rpt);

加载 Simulink 模型。

model = "sf_car";
load_system(model);

使用图报告器包含 sf_car 根系统图

Diagram 报告器将 sf_car 图快照的每个元素与超链接叠加,以导航至描述该元素的报告部分。超链接及其 ID 是使用模型中的元素路径创建的。例如,子系统模块(如 Enginetransmission)包含用于导航到报告中相应子系统图快照的超链接。

diag1 = Diagram(model);
diag1.Snapshot.Caption = strcat("Diagram snapshot for root system: ",model);
add(rpt,diag1);
add(rpt,PageBreak);

使用 sf_car/Engine 报告器包含 Diagram 子系统图

此报告器在其创建的报告对象前面加上一个超链接目标,该超链接目标的 ID 也是基于模型中报告元素的路径。根系统 sf_car 的 Diagram 报告器 (diag1) 也使用相同的 ID 在快照中的 Engine 模块上创建超链接。因此,点击 Engine 模块会自动定位到报告中的该子系统图快照。

engine = strcat(model,"/","Engine"); 

diag2 = Diagram(engine);
diag2.Snapshot.Caption = strcat("Diagram snapshot for subsystem: ",engine);
add(rpt,diag2);
add(rpt,PageBreak);

使用 sf_car/transmission 报告器包含 Diagram 子系统图

点击 sf_car 根系统图快照中的 transmission 模块将导航至报告中的 transmission 子系统图快照。

要自定义超链接的目标,请通过将报告器的 LinkTarget 属性设置为空字符串来删除此报告器的链接目标。这可确保点击 sf_car 根系统图快照中的 transmission 模块不会导航到 transmission 子系统图。然后按照下一节所述为超链接创建自定义目标。

transmission = strcat(model,"/","transmission"); 

diag3 = Diagram(transmission);
diag3.LinkTarget = "";
diag3.Snapshot.Caption = strcat("Diagram snapshot for subsystem: ",transmission);
add(rpt,diag3);
add(rpt,PageBreak);

sf_car/transmission 模块超链接创建自定义目标

要为超链接设置新的目标,首先使用 slreportgen.utils.getObjectID 函数获取与 Diagram 报告器使用的相同的 ID。使用 SimulinkObjectProperties 报告器为 transmission 模块生成属性表。将报告器的 LinkTarget 属性更改为使用 slreportgen.utils.getObjectID 获取的 ID。根系统 sf_car 的图报告器 (diag1) 也使用相同的 ID 在快照中的 transmission 模块上创建超链接,因此点击该模块现在会瞄准该模块属性表。

id = slreportgen.utils.getObjectID(transmission);

props = SimulinkObjectProperties(transmission);
props.LinkTarget = id;
add(rpt,props);

关闭并查看报告

close(rpt);
rptview(rpt);