Main Content

Simulink.BlockDiagram.routeLine

モデルの既存のラインのルーティング

説明

Simulink.BlockDiagram.routeLine(lines) は、既存のライン ハンドルの配列を入力として受け取り、対応するラインをルーティングします。既存のラインをルーティングすることで、ラインのルートの品質が向上し、モデル内の他のラインや障害物とオーバーラップすることを回避できます。

ルーティングするモデル内のライン ハンドルを見つけるには、関数 find_system または関数 get_param を使用します。

Simulink.BlockDiagram.routeLine('DeferredLines') は、スクリプト実行中に LineUpdate モデル パラメーターが延期するすべてのライン更新を実行します。このコマンドでラインをルーティングするには、次のすべての条件を適用しなければなりません。

  • LineUpdate モデル パラメーターが 'deferred' に設定される

  • このコマンドを含むスクリプトは、このコマンドの使用前にライン ルーティングに影響する

  • スクリプトがモデルを保存する場合、スクリプトは、関数 save_system の使用後かつこのコマンドの使用前にライン ルーティングに影響する

すべて折りたたむ

モデル内の他のラインやブロックとオーバーラップするモデルの既存のラインをルーティングします。

モデル ex_route_lines を開きます。

open_system('ex_route_lines');

最上位システムの 2 つのラインがライン同士およびブロックとオーバーラップしています。これらのラインをルーティングするには、find_system を使用してライン ハンドルの配列を作成します。次に、この配列を入力として指定して Simulink.BlockDiagram.routeLine を呼び出します。

lineHandles = find_system(gcs,'FindAll','On','SearchDepth',1,'Type','Line');
Simulink.BlockDiagram.routeLine(lineHandles);

更新されたモデルにはオーバーラップがありません。

LineUpdate モデル パラメーターが 'deferred' に設定されると、スクリプトは、スクリプトが一時停止、完了するか Simulink.BlockDiagram.routeLine('DeferredLines') コマンドを実行するまでライン ルーティングを延期します。

モデル ex_route_deferred_lines には、多数の信号線が接続されたバーチャル サブシステムが含まれます。

Simulink.BlockDiagram.routeline('DeferredLines') コマンドで LineUpdate モデル パラメーターを使用するとどのように動作するかを確認するには、このパラメーターを 'deferred' に設定します。

set_param(0,'LineUpdate','deferred');

延期したラインのルーティング前にイメージをキャプチャ

モデルを読み込む MATLAB® スクリプトを実行し、モデル内のブロックを移動し、モデルのイメージを保存します。

load_system('ex_route_deferred_lines');
set_param([gcs '/Subsystem2'],'Position',[765 -370  855 -330]);
set_param([gcs '/Subsystem3'],'Position',[300  215  390  335]);
set_param([gcs '/Subsystem4'],'Position',[270 -135  360  -95]);
print('-s','deferred_lines_unrouted','-dpng');

このスクリプトは延期されたラインがルーティングされる前にモデルのイメージを保存するため、ラインがモデル内の他のラインと障害物をオーバーラップします。

延期したラインのルーティング後にイメージをキャプチャ

元のモデルを読み込む MATLAB スクリプトを実行し、モデル内のブロックを移動し、影響されたライン ルーティングを更新し、モデルのイメージを保存します。

load_system('ex_route_deferred_lines');
set_param([gcs '/Subsystem2'],'Position',[765 -370  855 -330]);
set_param([gcs '/Subsystem3'],'Position',[300  215  390  335]);
set_param([gcs '/Subsystem4'],'Position',[270 -135  360  -95]);
Simulink.BlockDiagram.routeLine('DeferredLines');
print('-s','deferred_lines_routed','-dpng');

Simulink.BlockDiagram.routeline('DeferredLines') コマンドを print 機能の前に追加すると、保存されたイメージ内のライン ルーティングが向上します。

入力引数

すべて折りたたむ

ルーティングするラインのハンドル。数値配列として指定します。モデル内でライン ハンドルを見つけるには、関数 find_system または get_param を使用します。

データ型: double

制限

  • ラインをルーティングするには、Simulink® キャンバスに追加の空白が必要になる場合があります。キャンバスに必要な空白がない場合、Simulink.BlockDiagram.routeLine を使用してもラインのルートの品質が改善しない可能性があります。

  • ルーティングするラインが多数ある大規模モデルでは、Simulink.BlockDiagram.routeLine の実行には数分かかる場合があります。

バージョン履歴

R2019a で導入