Стрелка (Switch)

Объект Switch задает железнодорожную стрелку (обиходное название для стрелочного перевода). Стрелка представляет собой устройство, служащее для разветвления путей. В AnyLogic стрелка соединяет три пути (0, 1 и 2) и позволяет подвижному составу переходить с главного пути на одну из двух веток. 

Направление с главного пути (пути 0) на одну из веток называется «противошерстным», противоположное — «пошерстным». В зависимости от состояния стрелки, она будет направлять поезда, прибывающие с пути 0 на один из двух путей - либо путь 1, либо путь 2. Поезда, прибывающие с путей 1 или 2 («пошерстное» движение) будут всегда следовать далее вдоль пути 0 вне зависимости от состояния стрелки и будут всегда переводить стрелку в соответствующее состояние.

Объект Switch автоматически создается объектом RailYard при обнаружении им круга (или овала) в группе фигур, указанной в параметре Группа фигур этого объекта. При этом внутри этого круга должны находиться конечные точки ровно трех путей. Объект Switch сам определит, какие из этих путей являются ветками (путями 1 и 2), по углам, образуемым сегментами путей.

Вы можете переключить состояние стрелки, щелкнув мышью внутри задающего ее круга или посредством программного интерфейса.

Состояния стрелки и их анимация

Начиная с версии AnyLogic 6.5.1 Вы будете намного реже обращаться к объектам класса Switch и их методам, поскольку теперь при движении поезда по заданному маршруту объект TrainMoveTo автоматически меняет состояния стрелок, и кроме того ряд функций объекта RailYard наподобие setSelectedTrack() теперь работает с именами кругов, задающих стрелки. Но в некоторых случаях (или в ранее созданных моделях) можно по-прежнему использовать функции класса Switch. В этом случае, чтобы получить объект Switch, соответствующий кругу конкретной стрелки, Вы можете вызвать метод getSwitch объекта RailYard:

Switch switch123 = railYard.getSwitch( oval123 );

Стрелка отображается на анимации тем же кругом, который был нарисован пользователем на графической диаграмме, с тем отличием, что радиус этого круга Вы можете менять с помощью параметра Ширина линии пути объекта RailYard, а его цвет выбирается в соответствии со значениями параметров Цвет кружка (свободной/занятой) стрелки. Кроме того, с помощью тонкой линии, нарисованной поверх кружка, показывается состояние стрелки.

Функции

Track getSelectedTrack()Возвращает выбранную в данный момент времени ветку (путь 1 или 2).

void setSelectedTrack( Track track ) - Выбирает одну из двух альтернативных веток (путь 1 или 2). Если в момент вызова метода на стрелке будет находиться вагон, то будет выдана информация об ошибке.
        Параметр: track - путь, который нужно выбрать

void toggle() - Переключает стрелку, меняя выбранный путь.

Track nextTrack( Track from ) - В соответствии с состоянием стрелки, возвращает следующий путь, при условии того, что состав приезжает на стрелку с заданного пути from
        Параметр: from - путь, по которому состав приезжает на стрелку

boolean isTrailingPoint( Track from ) - Проверяет, является ли движение через стрелку с переданного в качестве аргумента пути «пошерстным» или «противошерстным». Если путь будет не соединен со стрелкой, то выдаст информацию об ошибке. Возвращает true, если движение «пошерстное» и false, если «противошерстное»
        Параметр: from - путь, по которому состав приезжает на стрелку

boolean trackStarts( Track track ) - Возвращает true, если переданный в качестве аргумента путь начинается в данной стрелке, и false - если он в ней заканчивается.
        Параметр: track - путь

Track getTrack( int index ) - Возвращает соединенный со стрелкой путь с заданным номером.
        Параметр: index - номер пути: 0, 1 или 2

void highlight() - Подсвечивает стрелку на анимации (необратимо).

ShapeOval getOval() - Возвращает задающую стрелку фигуру (круг).