Simulink.BlockDiagram.routeLine

Трассируйте существующие линии модели

Описание

пример

Simulink.BlockDiagram.routeLine(lines) принимает массив существующих указателей в качестве входных данных и трассирует соответствующие строки. Маршрутизация существующих линий улучшает качество трассы линий и избегает перекрытий с другими линиями и препятствиями в модели.

Чтобы найти указатели в модели, которую вы хотите маршрутизировать, используйте find_system или get_param функция.

пример

Simulink.BlockDiagram.routeLine('DeferredLines') выполняет все обновления линий, которые LineUpdate параметр модели откладывается во время выполнения скрипта. Для маршрутизации линий этой командой должны применяться все эти условия:

  • The LineUpdate параметру модели задано значение 'deferred'.

  • Скрипт, содержащий эту команду, влияет на маршрутизацию линий перед использованием этой команды.

  • Если скрипт сохраняет модели, скрипт влияет на маршрутизацию линий после использования save_system function и перед использованием этой команды.

Примеры

свернуть все

Трассируйте существующие линии модели, которые перекрываются с другими линиями и блоками в модели.

Откройте модель ex_route_lines.

open_system('ex_route_lines');

Две линии в системе верхнего уровня перекрываются друг с другом и с блоком. Чтобы проложить эти линии, создайте массив указателей при помощи 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
Для просмотра документации необходимо авторизоваться на сайте