Объект 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() - Возвращает задающую стрелку фигуру (круг).