RailYard

Объект
RailYard задает сеть
железнодорожных путей и стрелок, основываясь на
заданной группе фигур, проверяет правильность сети и визуализирует
работу узла с помощью анимации во время выполнения модели. Этот объект
должен присутствовать в любой железнодорожной модели.
В модели может быть несколько независимых (не соединенных) ж/д узлов -
в этом случае должно быть несколько объектов RailYard - по одному на каждый узел.
Начиная с версии AnyLogic 6.5.1 операционная логика ж/д
узла, включая операции создания поездов, управления движением,
сцеплением и расцеплением производится объектами диаграммы процесса TrainSource,
TrainMoveTo
и т.д. Объект
RailYard больше не несет
ответственность за создание вагонов и обработку событий вагонов,
въезжающих на пути и покидающих их и т.д. Но объект RailYard
по-прежнему предоставляет низкоуровневый интерфейс для управления
железнодорожным узлом, основанный на функциях Java и механизме обратных
вызовов. Это обеспечивает совместимость ранее разработанных моделей с
новой версией библиотеки, но Вы можете использовать механизм обратных
вызовов и для других целей, например, для сбора статистики по движению
вагона по всему ж/д узлу.
Основным параметром объекта является параметр Группа фигур
– здесь Вы задаете имя нарисованной Вами группы фигур, которая
содержит ломаные и круги, задающие пути и стрелки Вашего ж/д узла.
Объект RailYard
анализирует эту группу и создает сеть соединенных объектов Track
(путь) и
Switch (стрелка). Если
группа фигур содержит фигуры, отображающиеся на 3D сцене, то пути,
стрелки и вагоны будут отображаться на 3D анимации (и в 2D тоже), в
противном случае - только в 2D. Пожалуйста, обратите внимание, что
когда Вы выбираете у группы фигур опцию Отображать на 3D сцене,
у всех фигур этой группы Z-Высота автоматически устанавливается
равной 10, что может быть нежелательно для фигур анимации ж/д
путей. Простейший способ изменения
Z-высоты: щелкните правой кнопкой мыши по группе, выберите Выделить содержимое группы
из контекстного меню и введите нужное Вам значение в поле Z-Высота
на странице свойств Дополнительные.
Обратите внимание, что объект RailYard
не
будет автоматически отслеживать пересечение нарисованных Вами
путей (т.e. мест, в которых пути пересекают друг друга без
наличия стрелки), и предотвращать столкновения поездов в таких местах
придется Вам самим. Столкновения же поездов на стрелках будут
определяться автоматически, и в таких случаях будут показываться
сообщения об ошибках.
Параметры класса
- Класс вагона
- Класс вагонов, создааемых этим объектом, должен быть подклассом класса RailCar.
Если известно, что все вагоны будут являться объектами какого-то одного
класса вагона, то имеет смысл указать этот класс здесь, чтобы все его
поля и методы были напрямую доступны в параметрах Действие ... этого объекта RailYard.
Синтаксис:
RC extends RailCar
Значение по умолчанию: RailCar
- [Обратите внимание, что в описаниях ниже RC
будет означать класс, указанный пользователем в поле "Класс вагона".
Если пользователь не изменит введенное там по умолчанию значение,
то RC будет означать RailCar.]
Параметры
- Группа фигур
-
Группа фигур, задающая конфигурацию ж/д узла. Группа должна
содержать ломаные и круги, которые будут задавать пути и стрелки
соответственно. Подробнее о задании топологии ж/д узла написано здесь.
Если группа содержит отображающиеся на 3D сцене фигуры, то ж/д узел
будет отображаться на 3D анимации (так же, как и на 2D), если нет - то
только на 2D.
Группа может не быть задана
(равна null), тогда инициализация ж/д узла откладывается. Чтобы
изменить конфигурацию узла, Вы должны изменить этот параметр путем
вызова метода set_railYardShapes(
newGroup ). Чтобы удалить текущую конфигурацию, вызвать set_railYardShapes( null ).
Чтобы обновить конфигурацию, заданную все той же группой фигур, нужно вначале
установить эту группу равной null, а затем снова выбрать ту же группу.
Изменение конфигурации возможно только в том случае, когда в ж/д узле
нет вагонов.
Синтаксис: ShapeGroup railYardShapes
- Масштаб, пикселей в метре
- Масштаб графики. Начиная с версии AnyLogic 6.5.1 все
расстояния, размерности вагонов, скорости и ускорения задаются в
метрах, м/с и м/с2
соответственно. Этот параметр задает соответствие безразмерной графики AnyLogic с реальными единицами длины.
Синтаксис: double pixelsPerMeter
Значение по умолчанию: 1
- Новый вагон [динамический]
- [Устарел, начиная с версии AnyLogic 6.5.1. Создавайте поезда с помощью объекта TrainSource] Здесь Вы можете задать код, который будет выполняться методом addTrain
для создания новых вагонов. Если Вы используете какой-то свой класс для
задания вагонов, то введенный здесь код должен возвращать объект этого
класса. По умолчанию производится вызов общего класса вагона RailCar.
Синтаксис: RC newCar
Значение по умолчанию: new RailCar()
Локальная переменная: int n - номер вагона в поезде, начиная с нуля
- Действие при въезде на станцию [динамический]
- Здесь Вы можете задать код, который будет выполняться каждый раз, когда вагон будет добавляться на железнодорожный узел.
Синтаксис: void onEnterYard
Локальные переменные: RC car - вагон
Track track
- путь, по которому вагон въезжает на ж/д узел
ShapePolyLine trackpolyline
- ломаная, задающая этот путь
- Действие при выезде со станции [динамический]
- Здесь Вы можете задать код, который будет выполняться каждый раз, когда вагон будет покидать железнодорожный узел.
Синтаксис: void onExitYard
Локальные переменные: RC car - вагон
Track track
- путь, по которому вагон покидает ж/д узел
ShapePolyLine trackpolyline
- ломаная, задающая этот путь
- Вызывать onAtSwitch только для первого вагона
- Если опция выбрана, то код Действия при приближении к стрелке будет выполняться
только для первого вагона состава (или для движущегося
отдельно вагона), иначе он будет выполняться для каждого вагона,
приближающегося к стрелке (такое поведение принято по умолчанию).
Синтаксис: boolean callAtSwitchForFirstCarOnly
Значение по умолчанию: false
- Действие при приближении к стрелке [динамический]
- Здесь Вы можете задать код, который будет выполняться
каждый
раз, когда вагон приблизится к стрелке. В этом коде все еще можно
переключать состояние стрелки.
Синтаксис: void onAtSwitch
Локальные переменные: RC car - вагон
Track track
- путь, по которому вагон приближается к стрелке
ShapePolyLine trackpolyline
- ломаная, задающая этот путь
Switch sw
- стрелка
ShapeOval switchoval
- круг, задающий эту стрелку
- Действие при въезде на путь [динамический]
- Здесь Вы можете задать код, который будет выполняться
каждый раз, когда вагон заедет на новый путь (и уже зарегистрирован на
нем).
Синтаксис: void onEnterTrack
Локальные переменные: RC car - вагон
Track track
- путь, на который заехал вагон
ShapePolyLine trackpolyline
- ломаная, задающая этот путь
Switch sw
- стрелка, через которую вагон въезжает на путь
ShapeOval switchoval
- круг, задающий эту стрелку
- Действие при выезде с пути [динамический]
- Здесь Вы можете задать код, который будет выполняться
каждый раз, когда вагон полностью покинет путь.
Синтаксис: void onExitTrack
Локальные переменные: RC car - вагон
Track track
- путь, который покинул вагон
ShapePolyLine trackpolyline
- ломаная, задающая этот путь
Switch sw
- стрелка, через которую вагон покидает путь
ShapeOval switchoval
- круг, задающий эту стрелку
- Действие при столкновении вагонов [динамический]
- Здесь Вы можете задать код, который будет выполняться
каждый раз, когда один вагон столкнется с другим вагоном. Код не вызывается
для того вагона, в который врезался другой вагон.
Синтаксис: void onHit
Локальные переменные: RC car - вагон
boolean
frontside - true,
если с другим вагоном столкнулась передняя сторона вагона
RC other
- другой вагон
Track track
- путь, на котором это произошло
ShapePolyLine trackpolyline
- ломаная, задающая этот путь
- Действие при достижении особой точки [динамический]
- Здесь Вы можете задать код, который будет выполняться
каждый
раз, когда вагон достигнет особой точки, заданной методом callbackAt
для вагона RailCar.
Синтаксис: void onAtCallback
Локальные переменные: RC car - вагон
Track track
- путь
ShapePolyLine trackpolyline
- ломаная, задающая этот путь
double offset
- точка на пути
Object
info
- объект с информацией, который был передан в качестве
аргумента метода callbackAt
- Действие при щелчке по вагону [динамический]
- Здесь Вы можете задать код, который будет выполняться
каждый раз, когда пользователь будет щелкать мышью по вагону.
Синтаксис: void onClickCar
Локальная переменная: RC car - вагон
- Ширина линии пути
- Ширина ломаной линии, отображающей путь, в метрах.
Используется только для анимациооных целей.
Синтаксис: double trackLineWidth
Значение
по умолчанию: 2
- Цвет линии свободного пути
- Цвет линии пути, когда на пути нет вагонов.
Синтаксис: Color trackColorEmpty
Значение
по умолчанию:
slateGray
- Цвет линии занятого пути
- Цвет линии пути, когда на пути есть
вагоны.
Синтаксис: Color trackColorNonEmpty
Значение
по умолчанию: lightSteelBlue
- Цвет кружка свободной стрелки
- Цвет кружка, отображаемого вокруг стрелки, когда на стрелке
нет вагона.
Синтаксис: Color switchCircleColorIdle
Значение
по умолчанию: lavender
- Цвет кружка занятой стрелки
- Цвет кружка, отображаемого вокруг стрелки, когда на
стрелке есть вагон.
Синтаксис: Color switchCircleColorBusy
Значение
по умолчанию: mediumSlateBlue
- Цвет линии стрелки
- Цвет ломаной, отображающей стрелку.
Синтаксис: Color switchLineColor
Значение
по умолчанию: black
Функции
int
getNCars() - Возвращает количество вагонов,
находящихся на этом железнодорожном узле.
RC
getCar( int index ) - Возвращает вагон,
находящийся
на этом железнодорожном узле и имеющий заданный
индекс index. Если
такого вагона нет, то возвращает null.
Switch
getSwitch( ShapeOval oval ) - Возвращает объект Switch
(стрелку) этого железнодорожного узла, соответствующий заданной фигуре (oval). Если такой стрелки нет,
то возвращает null.
Track
getTrack( ShapePolyLine polyline
) - Возвращает объект Track
(путь) этого железнодорожного узла, соответствующий заданной фигуре (polyline). Если такого пути
нет, то возвращает null.
void
addCar( RC car, Track
track, double
frontoffset, boolean orientation ) - [Устарела, начиная с версии AnyLogic 6.5.1. Создавайте поезда и вагоны с помощью объекта TrainSource] Добавляет (ранее созданный) вагон в ж/д
модель и помещает его на заданный путь (в заданную точку, с заданным
направлением). Обе стороны вагона должны находиться на одном и том же
пути. Если вагон пересекает другой вагон, находящийся на пути, то
выдается сообщение об ошибке.
Параметры: car
- добавляемый вагон
track - путь, на который помещается вагон
frontoffset
- смещение переднего торца вагона от начала пути
orientation
- если true, то направление вагона (от конца к началу) будет соответствовать направлению пути (от начала к концу)
void
addTrain( int n, Track track,
double
frontoffset, boolean orientation) - [Устарела, начиная с версии AnyLogic 6.5.1. Создавайте поезда и вагоны с помощью объекта TrainSource] Создает
состав с заданным количеством
вагонов и помещает его на заданный путь в заданную точку с заданным
направлением. Для создания вагонов используется модифицированный метод newCar.
Все вагоны должны полностью находиться на одном и том же пути. Если
поезд пересекает другие вагоны, находящиеся на пути, то выдается
сообщение об ошибке.
Параметры: n - количество вагонов в
поезде
track - путь, на
который помещается поезд
frontoffset
- смещение переднего торца первого вагона от начала пути
orientation
- если true, то
направление поезда (от хвоста к голове) будет соответствовать
направлению пути (от начала к концу)
boolean
isTrackEmpty( ShapePolyLine trackpoly ) – Проверяет, является ли путь, заданный ломаной trackpoly, пустым (то есть, отсутствуют ли на нем вагоны). Если да, то возвращает true.
int
getNCarsOnTrack( ShapePolyLine trackpoly ) –
Возвращает количество вагонов,
находящихся на пути, соответствующем заданной ломаной trackpoly.
RailCar
getCarOnTrack( ShapePolyLine trackpoly, int index )
– Возвращает вагон, находящийся на пути, заданном ломаной trackpoly, и имеющий заданный индекс index.
void
setSelectedTrack( ShapeOval switchoval, ShapePolyLine trackpoly )
– Выбирает у заданной кругом switchoval стрелки путь, заданный ломаной trackpoly. Путь должен быть путем 1, либо путем 2 этой стрелки.
ShapePolyLine
getSelectedTrack( ShapeOval switchoval ) – Возвращает ломаную, задающую путь, выбранный в текущий момент у стрелки, заданной кругом switchoval.
double
pxToMeters( double value ) – Преобразовывает расстояние в пикселах в метры, в соответствии с масштабом ж/д узла.
double
metersToPx( double value ) – Преобразовывает расстояние в метрах в пикселы, в соответствии с масштабом ж/д узла.