В этом примере для отчетов 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);