在 HTML 和 PDF 报告中自定义 Simulink 图超链接
R2025b此示例展示如何自定义 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 是使用模型中的元素路径创建的。例如,子系统模块(如 Engine 或 transmission)包含用于导航到报告中相应子系统图快照的超链接。
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);