В этом примере для отчетов PDF и HTML показано, как настроить навигационные гиперссылки схем Simulink, встроенных в отчеты. По умолчанию при нажатии на элемент схемы выполняется переход к разделу отчета, который документирует этот элемент. Чтобы указать другое место назначения для гиперссылок, выполните процедуру, описанную в этом примере.
Импортируйте пакеты DOM и Report API, чтобы не использовать длинные, полные имена классов.
import mlreportgen.dom.* import slreportgen.report.*
Создайте и откройте отчет Simulink.
rpt = Report("myreport","pdf"); open(rpt);
Загрузите модель Simulink.
model = "slrgex_sf_car";
load_system(model);
The Diagram
reporter накладывает каждый элемент slrgex_sf_car
моментальный снимок схемы с гиперссылкой для перехода к разделу отчета, в котором описывается этот элемент. Гиперссылка и ее идентификатор создаются с помощью пути элемента в модели. Для примера, блок подсистемы, такой как Engine
или transmission
, включает гиперссылку, используемую для перехода к соответствующему снимку схемы подсистемы в отчете.
diag1 = Diagram(model);
diag1.Snapshot.Caption = strcat("Diagram snapshot for root system: ",model);
add(rpt,diag1);
add(rpt,PageBreak);
Этот репортер предрекает объект отчета, который он создает, с целью гиперссылки, чей идентификатор также основан на пути элемента отчета в модели. The Diagram
репортер (diag1
) для корневой системы slrgex_sf_car
также использует тот же идентификатор, чтобы создать гиперссылку на Engine
блок в моментальном снимке. Итак, кликнув по Engine
автоматически блокировать конечные объекты на этот снимок схемы подсистемы в отчете.
engine = strcat(model,"/","Engine"); diag2 = Diagram(engine); diag2.Snapshot.Caption = strcat("Diagram snapshot for subsystem: ",engine); add(rpt,diag2); add(rpt,PageBreak);
Нажатие на transmission
блок в slrgex_sf_car
моментальный снимок корневой системной схемы переходит к transmission
моментальный снимок схемы подсистемы в отчете.
Чтобы настроить цель для гиперссылки, удалите цель ссылки для этого репортера, задав LinkTarget
свойство репортера в пустую строку. Это гарантирует, что нажатие на transmission
блок в slrgex_sf_car
моментальный снимок корневой системной схемы не переходит к 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);
Чтобы задать новую цель для гиперссылки, сначала используйте slreportgen.utils.getObjectID
функция для получения того же идентификатора, что и Diagram
репортер использует. Используйте SimulinkObjectProperties
reporter, чтобы сгенерировать таблицу свойств для transmission
блок. Измените LinkTarget
свойство репортера к идентификатору, полученному с slreportgen.utils.getObjectID
. Репортер схемы (diag1
) для корневой системы slrgex_sf_car
также использует тот же идентификатор, чтобы создать гиперссылку на transmission
блок в моментальном снимке, поэтому щелчок по блоку теперь нацелен на эту таблицу свойств блоков.
id = slreportgen.utils.getObjectID(transmission); props = SimulinkObjectProperties(transmission); props.LinkTarget = id; add(rpt,props);
close(rpt); rptview(rpt);