Main Content

HTML レポートおよび PDF レポートにおける Simulink ブロック線図のハイパーリンクのカスタマイズ

この例では、PDF レポートおよび HTML レポートについて、レポートに埋め込まれた Simulink ブロック線図のナビゲーション ハイパーリンクをカスタマイズする方法を説明します。既定では、ブロック線図要素をクリックすると、その要素を説明するレポートの節に移動します。ハイパーリンクに別のリンク先を指定するには、次の例の手順に従います。

レポートを設定して Simulink モデルを読み込む

長い完全修飾クラス名を使用せずに済むように、DOM API パッケージとレポート 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 ルート システムのブロック線図を含める

Diagram レポーターは、slrgex_sf_car ブロック線図のスナップショットの各要素と、その要素を説明するレポートの節に移動するハイパーリンクを重ね合わせます。ハイパーリンクとその ID は、モデル内の要素のパスを使用して作成されます。たとえば、Enginetransmission などのサブシステム ブロックには、レポート内の対応するサブシステムのブロック線図のスナップショットに移動するためのハイパーリンクが含まれています。

diag1 = Diagram(model);
diag1.Snapshot.Caption = strcat("Diagram snapshot for root system: ",model);
add(rpt,diag1);
add(rpt,PageBreak);

ブロック線図レポーターを使用して theslrgex_sf_car/Engine サブシステムのブロック線図を含める

このレポーターは、作成するレポート オブジェクトの前にハイパーリンク ターゲットを付けますが、その ID もモデル内のレポートされる要素のパスに基づきます。ルート システム slrgex_sf_carDiagram レポーター (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);

ブロック線図レポーターを使用して slrgex_sf_car/transmission サブシステムのブロック線図を含める

slrgex_sf_car ルートシステムのブロック線図のスナップショットで transmission ブロックをクリックすると、レポート内の transmission サブシステムのブロック線図のスナップショットに移動します。

ハイパーリンクのターゲットをカスタマイズするには、レポーターの LinkTarget プロパティを空の srting に設定することで、このレポーターのリンク ターゲットを削除します。これにより、slrgex_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);

slrgex_sf_car/transmission ブロックのハイパーリンクのカスタム ターゲットを作成する

ハイパーリンクの新しいターゲットを設定するには、まず関数 slreportgen.utils.getObjectID を使用して、Diagram レポーターが使用するものと同じ ID を取得します。SimulinkObjectProperties レポーターを使用して、transmission ブロックのプロパティ テーブルを生成します。レポーターの LinkTarget プロパティを、slreportgen.utils.getObjectID を使用して取得した ID に変更します。ルート システム slrgex_sf_car のブロック線図レポーター (diag1) も、同じ ID を使用してスナップショット内の transmission ブロック上にハイパーリンクを作成するため、ブロックをクリックするとこのブロックのプロパティ テーブルがターゲットになります。

id = slreportgen.utils.getObjectID(transmission);

props = SimulinkObjectProperties(transmission);
props.LinkTarget = id;
add(rpt,props);

レポートを閉じて表示する

close(rpt);
rptview(rpt);