メインコンテンツ

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

The model contains three Subsystem blocks. The first block, located in the upper left, has two input ports and two output ports. The second block, located in the center, has one input port and one output port. The third block, located in the lower right, has two input ports and two output ports. The two output ports of the first block connect to the two input ports of the third block. The signal lines overlap each other and the second block.

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

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

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

The signal lines are routed around the second block, and do not overlap each other.

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 で導入