Настройка гиперссылок схем Simulink в отчетах HTML и PDF

В этом примере для отчетов PDF и HTML показано, как настроить навигационные гиперссылки схем Simulink, встроенных в отчеты. По умолчанию при нажатии на элемент схемы выполняется переход к разделу отчета, который документирует этот элемент. Чтобы указать другое место назначения для гиперссылок, выполните процедуру, описанную в этом примере.

Настройте отчет и загрузите модель 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);

Включите slrgex_sf_car системную схему с помощью репортера схем

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);

Включите theslrgex_sf_car/Engine подсистему с помощью репортера схем

Этот репортер предрекает объект отчета, который он создает, с целью гиперссылки, чей идентификатор также основан на пути элемента отчета в модели. 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);

Включите slrgex_sf_car/transmission схему подсистемы с помощью репортера схем

Нажатие на 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);

Создайте пользовательский целевой объект для гиперссылки slrgex_sf_car/transmission блока

Чтобы задать новую цель для гиперссылки, сначала используйте 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);