RailSettings

Блок RailSettings предоставляет низкоуровневый интерфейс для управления железнодорожным узлом, основанный на функциях Java и механизме обратных вызовов. Это обеспечивает совместимость ранее разработанных моделей с новой версией библиотеки, но вы можете использовать механизм обратных вызовов и для других целей, например, для сбора статистики по движению вагона по всему ж/д узлу.

Обратите внимание, что объект RailSettings не будет автоматически отслеживать пересечение нарисованных вами путей (т.e. мест, в которых пути пересекают друг друга без наличия стрелки), и предотвращать столкновения поездов в таких местах придется вам самим. Столкновения же поездов на стрелках будут определяться автоматически, и в таких случаях будут показываться сообщения об ошибках.

Параметры

Тип вагона
Тип вагонов. Если известно, что все вагоны будут являться объектами какого-то одного класса вагона, то имеет смысл указать этот класс здесь, чтобы все его поля и методы были напрямую доступны в действиях этого объекта RailSettings.
[Обратите внимание, что в описаниях ниже RC будет означать тип, указанный пользователем в поле Тип вагона. Если пользователь не изменит введенное там по умолчанию значение, то RC будет означать RailCar.]
Далее: RC
Новый вагон [динамический]
Тип вагона. Если вы используете какой-то свой тип для задания вагонов, то введите здесь имя агента этого типа.
Локальная переменная: int n - номер вагона в поезде, начиная с нуля
Действия
При въезде на станцию [код]
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон будет добавляться на железнодорожный узел.
Локальные переменные: RC car - вагон
RailwayNetwork railYard - сеть ж/д разметки, задающая ж/д узел
RailwayTrack track - путь, по которому вагон въезжает на ж/д узел
При выезде со станции [код]
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон будет покидать железнодорожный узел.
Локальные переменные: RC car - вагон
RailwayNetwork railYard - сеть ж/д разметки, задающая ж/д узел
RailwayTrack track - путь, по которому вагон покидает ж/д узел
Вызывать onAtSwitch только для первого вагона
Если опция выбрана, то код Действия при приближении к стрелке будет выполняться только для первого вагона состава (или для движущегося отдельно вагона), иначе он будет выполняться для каждого вагона, приближающегося к стрелке (такое поведение принято по умолчанию).
Синтаксис: boolean callAtSwitchForFirstCarOnly
Значение по умолчанию: false
При приближении к стрелке [код]
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон приблизится к стрелке. В этом коде все еще можно переключать состояние стрелки.
Локальные переменные: RC car - вагон
RailwayNetwork railYard - сеть ж/д разметки, задающая ж/д узел
RailwayTrack track - путь, по которому вагон приближается к стрелке
RailwaySwitch sw - стрелка
При въезде на путь [код]
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон заедет на новый путь (и уже зарегистрирован на нем).
Локальные переменные: RC car - вагон
RailwayNetwork railYard - сеть ж/д разметки, задающая ж/д узел
RailwayTrack track - путь, на который заехал вагон
RailwaySwitch sw - стрелка, через которую вагон въезжает на путь
При выезде с пути [код]
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон полностью покинет путь.
Локальные переменные: RC car - вагон
RailwayNetwork railYard - сеть ж/д разметки, задающая ж/д узел
RailwayTrack track - путь, который покинул вагон
RailwaySwitch sw - стрелка, через которую вагон покидает путь
При столкновении вагонов [код]
Здесь вы можете задать код, который будет выполняться каждый раз, когда один вагон столкнется с другим вагоном. Код не вызывается для того вагона, в который врезался другой вагон.
Локальные переменные: RC car - вагон
boolean frontside - true, если с другим вагоном столкнулась передняя сторона вагона
RC other - другой вагон
RailwayNetwork railYard - сеть ж/д разметки, задающая ж/д узел
RailwayTrack track - путь, на котором это произошло
При достижении особой точки [код]
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон достигнет особой точки, заданной методом callbackAt для вагона RailCar.
Локальные переменные: RC car - вагон
RailwayTrack track - путь
RailwayNetwork railYard - сеть ж/д разметки, задающая ж/д узел
double offset - точка на пути
Object info - объект с информацией, который был передан в качестве аргумента метода callbackAt
При щелчке по вагону [код]
Здесь вы можете задать код, который будет выполняться каждый раз, когда пользователь будет щелкать мышью по вагону.
Локальная переменная: RC car - вагон

Функции

RailwayTrack[] getShortestPath( RailwayTrack sourceTrack, RailwayTrack targetTrack, boolean forwardOnTrack, double targetOffset, RailwayTrack[] avoidTracks ) - Возвращает самый короткий путь от sourceTrack до targetTrack (или null, если путь не найден).
Parameters: sourceTrack - начальный путь.
targetTrack - путь назначения.
forwardOnTrack - если true, то направление поезда на пути - вперед.
targetOffset - смещение по пути направления.
avoidTracks - список путей, которые не должен содержать маршрут.

int getNCars() - Возвращает количество вагонов, находящихся на этом железнодорожном узле.

Agent getCar( int index ) - Возвращает вагон, находящийся на этом железнодорожном узле и имеющий заданный индекс index. Если такого вагона нет, то возвращает null.

List getCars( ) - Возвращает вагоны, находящиеся на этом железнодорожном узле.

Switch[] getRouteSwitches( RailwayTrack[] route ) - Возвращает все стрелки на указанные маршруте.

void addCar( RC car, RailwayTrack track, double frontoffset, boolean orientation ) - [Устарела, начиная с версии AnyLogic 6.5.1. Создавайте поезда и вагоны с помощью объекта TrainSource] Добавляет (ранее созданный) вагон в ж/д модель и помещает его на заданный путь (в заданную точку, с заданным направлением). Обе стороны вагона должны находиться на одном и том же пути. Если вагон пересекает другой вагон, находящийся на пути, то выдается сообщение об ошибке.

Параметры: car - добавляемый вагон
track - путь, на который помещается вагон
frontoffset - смещение переднего торца вагона от начала пути
orientation - если true, то направление вагона (от конца к началу) будет соответствовать направлению пути (от начала к концу)

void addTrain( int n, RailwayTrack track, double frontoffset, boolean orientation) - [Устарела, начиная с версии AnyLogic 6.5.1. Создавайте поезда и вагоны с помощью объекта TrainSource] Создает состав с заданным количеством вагонов и помещает его на заданный путь в заданную точку с заданным направлением. Для создания вагонов используется модифицированный метод newCar. Все вагоны должны полностью находиться на одном и том же пути. Если поезд пересекает другие вагоны, находящиеся на пути, то выдается сообщение об ошибке.
Параметры: n - количество вагонов в поезде
track - путь, на который помещается поезд
frontoffset - смещение переднего торца первого вагона от начала пути
orientation - если true, то направление поезда (от хвоста к голове) будет соответствовать направлению пути (от начала к концу)