exponenta event banner

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

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