在 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 是使用模型中的元素路径创建的。例如,子系统模块(如 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);