AnyLogic
Развернуть
Размер шрифта

Лифт

Лифт в графическом редакторе

Фигура анимации для пассажирского лифта, используемая в моделях движения пешеходов. Чтобы смоделировать перемещение пешеходов между уровнями с помощью лифта, добавьте в диаграмму процесса блок PedElevator Пешеходной библиотеки.

Расположение дверей лифта отображается дополнительной чертой внутри фигуры (на изображении выше дверь находится у расположенной снизу границы лифта).

Демо-модель: Pedestrian Elevator Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

3D анимация лифта в работающей модели

Рисование лифта

Мы покажем, как нарисовать лифт в пешеходной модели нового холла музея Ван Гога в Амстердаме.

Вот так выглядит план нового здания:

План нового холла музея Ван Гога

Чтобы нарисовать лифт

  1. Если вы создаете пешеходную модель, используя план моделируемого здания (помещения), то перед тем, как добавлять фигуры разметки пространства, убедитесь в том, что масштаб плана совпадает с масштабом графической диаграммы. После этого, если изображение плана находится в нужном вам месте, то его, возможно, будет проще заблокировать.
  2. Перетащите элемент  Лифт из секции Разметка пространства палитры Пешеходной библиотеки в графический редактор. Поместите фигуру лифта в месте изображения этого лифта на плане.

  3. Откройте Свойства лифта. Настройте расположение дверей. Обычно у лифта одна дверь. В этом случае оставьте выбранной по умолчанию опцию Конфигурация дверей: спереди. Если двери у лифта с двух сторон, выберите опцию спереди и сзади.
  4. Теперь обратите внимание, совпадает ли расположение двери внутри фигуры лифта с изображением двери лифта на плане. В нашем случае дверь на плане находится справа, а в нашей фигуре - внизу, поэтому нужно будет повернуть фигуру, чтобы расположение дверей совпало. Для поворота фигуры выделите фигуру лифта щелчком мыши и затем перетащите круглую метку-манипулятор, отображаемую по умолчанию над фигурой, вокруг центра фигуры.

  5. Правильно расположив дверь, сделайте так, чтобы фигура в точности соответствовала изображению лифта на плане. Выделите фигуру и измените ее размер, перетащив нужные метки-манипуляторы, появившиеся на ее сторонах. Если это сложно сделать в текущем масштабе графического редактора, то вы можете Приблизить холст и отключить привязку к сетке диаграммы, нажав на кнопку Включить/Отключить сетку на панели управления для того, чтобы упростить поворот и изменение размеров.

  6. Закончив с рисованием и поместив фигуру в точности так же, как она нарисована на плане, можно продолжить с настройкой свойств этой фигуры. Откройте Свойства лифта. Если лифт перемещает пешеходов между всеми уровнями (этажами) моделируемого здания, оставьте выбранной опцию Все уровни. Если же лифт обслуживает только определенные уровни, выберите опцию Определенные уровни и задайте их в списке Уровни.
  7. Завершив рисование и настройку фигуры лифта, можно добавить перемещение пешеходов в лифте в логику моделируемого вами процесса. Для этого нужно будет добавить в вашу диаграмму процесса блок(и) PedElevator. Если в моделируемом процессе лифт используется многократно, то и количество блоков PedElevator в диаграмме процесса должно быть соответствующим.

Свойства

Общие

Имя — Имя фигуры. Данное свойство используется для того, чтобы обращаться к этой фигуре из свойств блока PedElevator и иметь доступ к лифту из программного кода.

Исключить  — Если опция выбрана, то фигура будет исключена из модели.

Отображается на верхнем агенте — Если опция выбрана, то фигура будет видна на презентации типа агента, в который будет вложен данный агент.

Блокировать — Если опция выбрана, то фигура будет считаться заблокированной, и не будет реагировать на щелчки мыши. Таким образом, вы не сможете выбрать заблокированную фигуру в графическом редакторе до тех пор, пока вы не снимете с нее блокировку.

Видимость — В данной опции вы можете указать, будет ли фигура видна во время анимации при выполнении модели или нет. Используя элемент управления, выберите да или нет.

Тип пешехода — Тип пешехода, перевозимого этим лифтом. Если в вашей модели моделируется движение пешеходов созданного вами нестандартного типа пешехода, укажите здесь имя этого типа пешехода для облегчения доступа к полям этого типа в коде действий этой фигуры. Если в модели нет созданных вами типов пешеходов, вы можете оставить заданное по умолчанию значение Агент.

Конфигурация дверей — Задает количество дверей у лифта. Выберите одну из двух возможных конфигураций расположения дверей у лифта: спереди (заданная по умолчанию опция, у лифта будет одна дверь) или спереди и сзади (две двери с противоположных сторон кабины лифта). Чаще всего у лифта одна дверь, и в этом случае нужно оставить выбранную по умолчанию опцию. Иногда (чаще на вокзалах или аэропортах) используются лифты, предполагающие вход в одну дверь и выход из другой двери, расположенной напротив, для оптимизации людских потоков. В случае такой конфигурации дверей лифта, выберите опцию спереди и сзади.

Вместимость — Максимально допустимое количество человек в лифте.

Движение задано — Способ задания скорости перемещения лифта: напрямую как скорость или как время на уровень (время, которое у лифта занимает перемещение между двумя ближайшими уровнями).

Скорость — [Видно и применяется, только если выбрана опция Движение задано: скоростью] Скорость движения лифта.

Время на уровень — [Видно и применяется, только если выбрана опция Движение задано: временем на уровень] Время, которое у лифта занимает перемещение между двумя ближайшими уровнями.

Мин. время пребывания — Минимальное время, которое лифт гарантированно проведет на уровне (этаже) перед тем, как продолжить движение к следующему уровню. Если высадка и посадка к этому моменту не будет завершена, то лифт вначале дождется ее окончания.

Останавливается на — Здесь вы можете выбрать, останавливается ли лифт на всех уровнях или только на выбранных уровнях. По умолчанию выбрана опция, согласно которой лифт может останавливаться на всех уровнях, заданных в данном типе агента. Эта опция и используется чаще всего, когда лифт обслуживает все уровни (этажи) в моделируемом здании. Но иногда, например, какой-то лифт может не обслуживать определенные уровни, например, уровень паркинга. В этом случае нужно выбрать опцию обслуживания только определенных (выбранных) уровней и выбрать эти уровни в элементе управления Уровни.

Уровни — [Видно и применяется, только если выбрана опция Останавливается на: выбранных уровнях] Здесь вы можете выбрать те уровни, которые будет обслуживать данный лифт. Обычно все уровни заданы в одном агенте, и вы просто выбираете необходимые уровни в списке. Однако в некоторых редких случаях ваша модель может быть декомпозирована так, что уровни заданы как отдельные агенты. Следующая демонстрационная модель показывает, как указать те уровни, которые должен обслуживать лифт, в таком случае.

Демо-модель: Elevator Connecting Floors Defined by Different Agents Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.
Действия

По прибытии на уровень — Здесь вы можете ввести Java код, который будет выполняться в момент остановки лифта на каждом уровне.
Локальные переменные:
Level level — уровень, на который прибыл лифт.
List<Agent> waitingAgents — коллекция пешеходов, ждущих прибытия лифта на этом уровне (этаже).

При отправлении с уровня — Здесь вы можете ввести Java код, который будет выполняться при отправлении лифта с каждого уровня, на котором он останавливался.
Локальная переменная:
Level level — уровень, с которого отправляется лифт.

При поломке — Здесь вы можете ввести Java код, который будет выполняться при поломке лифта.

При починке — Здесь вы можете ввести Java код, который будет выполняться при починке лифта.

При изменении состояния — Здесь вы можете ввести Java код, который будет выполняться после того, как изменится текущее состояние лифта.
Локальная переменная:
ElevatorState newState — новое состояние лифта.
Возможные значения:
ElevatorState.ELEVATOR_STATE_IDLE — бездействие
ElevatorState.ELEVATOR_STATE_LOADING — высадка/посадка пешеходов
ElevatorState.ELEVATOR_STATE_MOVING — движение
ElevatorState.ELEVATOR_STATE_FAILED — поломка

Внешний вид

Цвет платформы — Цвет платформы (пола) кабины лифта.

Цвет стен — Цвет стен кабины лифта (а если отображается шахта, то и шахты). По умолчанию задан полупрозрачный цвет.

Толщина линии — Толщина линии, задающей стенки лифта (а если отображается шахта - то и шахты), в пикселях.

Высота кабины — Высота кабины лифта. По умолчанию высота равна трем метрам.

Рисовать шахту — Если опция выбрана, то будет отображаться не только кабина лифта, но и шахта. Шахта рисуется цветом, заданным в свойстве Цвет стен.

Местоположение и размер

Уровень — Уровень, на котором находится эта фигура.

X — X-координата фигуры.

Y — Y-координата фигуры.

Ширина — Ширина кабины лифта, в пикселях.

Глубина — Глубина кабины лифта, в пикселях.

Поворот — Угол поворота фигуры.

Специфические

Отображать в — Здесь вы можете выбрать, будет ли фигура отображаться В 2D и в 3D, Только в 2D или Только в 3D.

Отображать имя — Если опция выбрана, то имя фигуры будет отображаться в графическом редакторе.

Диспетчеризация лифта

Реализован стандартный алгоритм диспетчеризации лифта, известный как «коллективный контроль» или «алгоритм лифта», в котором используются два правила:

  • Лифт движется в одном направлении, пока есть запросы на перемещение в этом направлении (учитываются как люди, уже находящиеся в кабине лифта, так и люди, ожидающие лифт).
  • Когда запросы на перемещение в текущем направлении движения лифта заканчиваются, при наличии других запросов на перемещение в обратном направлении, лифт меняет направление и начинает движение в обратную сторону. Если таких запросов в текущий момент не окажется, то лифт останавливается и ждет вызова.

Если запрос на перемещение попал в очередь лифта, то этот запрос будет выполнен в любом случае (лифт остановится на уровне на время, указанное в свойстве Мин. время пребывания), даже если пешеход, вызвавший его, уже покинул блок PedElevator через порт ccl или если лифт переполнен, и пешеход не смог в него войти.

Если пешеход не смог войти в лифт из-за того, что лифт был переполнен, то запрос на перемещение с этого уровня остается у этого лифта в очереди.

Если вам нужно реализовать другой алгоритм диспетчеризации лифта, то вы можете переключить лифт в режим ручного управления (это делается в свойствах блока PedElevator) и управлять им с помощью функций лифта moveTo(), pickUpPeds() и dropOffPeds(). Приоритет этих функций выше, чем у команд автоматического режима управления лифтом, что позволяет использовать их, например, для моделирования поведения при внештатных ситуациях.

Демо-модель: Elevator Manual Control Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Задание отличающихся конфигураций дверей на различных уровнях

Чаще всего у лифта одна дверь. Иногда (чаще всего в зданиях с большой проходимостью людей, таких, как аэропорты и вокзалы) у лифта может быть две двери, расположенные на противоположных сторонах кабины. В любом из этих случаев задать лифт нужной вам конфигурации крайне просто - просто выберите нужную вам опцию в свойстве Конфигурация дверей фигуры разметки пространства Лифт.

Однако есть и еще более редкий случай, когда в моделируемом вами здании на разных этажах у лифта открываются разные двери. В этом случае вам будет нужно "донастроить" ваш лифт путем вызова соответствующих функций фигуры разметки пространства Лифт disableDoor() и enableDoor(). Выберите в свойстве Конфигурация дверей опцию спереди и сзади и поместите, например, в кодовое поле действия При запуске агента верхнего уровня вашей модели (обычно - Main) вызовы функции disableDoor() соответствующей фигуры Лифт, запретив с ее помощью выход пассажиров из определенной двери лифта на заданных уровнях (этажах).

Поломки и ремонт

При необходимости вы можете моделировать поломки и ремонт лифта с помощью соответствующих функций лифта failure() и repair() (см. первую секцию функций лифта в разделе ниже). В соответствующих свойствах лифта в разделе Действия вы можете задать код, который должен выполняться как при возникновении поломки, так и в момент починки лифта.

Изучить подход можно с помощью приведенного ниже примера модели.

Демо-модель: Elevator Failure Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Функции

Поломка/ремонт
Функция Описание
boolean fail() Моделирует поломку лифта. Лифт выходит из строя и прекращает работать. Новые пешеходы не могут войти в лифт, а те, кто находится внутри, ждут починки лифта. Вызов функции инициирует выполнение заданного действия При поломке.
boolean repair() Моделирует починку лифта. Лифт возвращается в рабочее состояние. Если лифт работает в автоматическом режиме, то он продолжит выполнять запросы из очереди (если запросы остались). Вызов функции инициирует выполнение заданного действия При починке.
boolean isFailed() Возвращает true, если лифт сломан, в противном случае возвращает false.
Текущее состояние и маршрут
Функция Описание
ElevatorState getState() Возвращает текущее состояние лифта.
Допустимые значения:
ElevatorState.ELEVATOR_STATE_IDLE — бездействие
ElevatorState.ELEVATOR_STATE_LOADING — высадка/посадка пешеходов
ElevatorState.ELEVATOR_STATE_MOVING — движение
ElevatorState.ELEVATOR_STATE_FAILED — поломка
ElevatorDirection getCurrentDirection() Возвращает текущее направление движения лифта. Если в момент вызова функции происходит высадка/посадка пешеходов, то функция возвращает то направление, в котором лифт поедет. Если задач для лифта нет, то возвращает значение ELEVATOR_DIRECTION_NONE.

Возможные значения:
ElevatorDirection.ELEVATOR_DIRECTION_UP — вверх
ElevatorDirection.ELEVATOR_DIRECTION_DOWN — вниз
ElevatorDirection.ELEVATOR_DIRECTION_NONE — нет направления
Level getCurrentLevel() Возвращает текущий уровень (этаж) лифта. Если лифт находится между уровнями, то возвращает тот уровень, что находится ниже.
List<Elevator.Call> getCalls() Возвращает список - очередь вызовов лифта. Вызов хранит в себе информацию об уровне, откуда он был послан, о запрошенном направлении движения (ELEVATOR_DIRECTION_UP или ELEVATOR_DIRECTION_DOWN), а также о порядке вызова в очереди лифта. Вызовы отсортированы по уровням, которые их послали, от нижнего к верхнему уровню.
List<Level> getRoute() Возвращает список уровней, на которых остановится лифт. Список формируется на основе имеющихся вызовов: вызовов с уровней (этажей), где пешеходы ожидают лифта, и вызовов, исходящих от пешеходов, которые в данный момент находятся внутри лифта и которым необходимо переместиться на определенный уровень. Уровни в списке отсортированы в соответствии с порядком, в котором лифт будет останавливаться на этих уровнях (первый уровень, на котором нужно остановиться, — это первый элемент в списке). В ручном режиме управления список содержит только один уровень, к которому в данный момент движется лифт.
Пешеходы
Функция Описание
Set<Agent> getPeds() Возвращает список пешеходов, находящихся в данный момент в лифте.
Set<Agent> getWaitingPeds(Level level) Возвращает список пешеходов, ожидающих лифт на заданном уровне.
Set<Agent> getWaitingPeds() Возвращает список пешеходов, ожидающих лифт на всех уровнях.
Level getPedTargetLevel(Agent ped) Возвращает уровень, на который должен переместиться заданный пешеход (уровень, заданный в качестве цели перемещения в блоке PedElevator). Если целевой уровень не задан, то возвращает null.

ped — пешеход, чей целевой уровень возвращается функцией
Статистика
Функция Описание
int nTransportedPeds() Возвращает общее количество пешеходов, перевезенных лифтом.
double utilization() Возвращает коэффициент занятости лифта: долю времени, в течение которого лифт был занят выполнением задач. Значение коэффициента находится в диапазоне [0..1].
double timeInState(ElevatorState state) Возвращает время (в секундах), в течение которого лифт пребывал в заданном состоянии.

state — состояние лифта
Допустимые значения:
ElevatorState.ELEVATOR_STATE_IDLE — бездействие
ElevatorState.ELEVATOR_STATE_LOADING — высадка/посадка пешеходов
ElevatorState.ELEVATOR_STATE_MOVING — движение
ElevatorState.ELEVATOR_STATE_FAILED — поломка
double timeInState(ElevatorState state, TimeUnits units) Возвращает время (в заданных единицах измерения времени), в течение которого лифт пребывал в заданном состоянии.

units — константа, задающая единицы измерения времени
state — состояние лифта
Допустимые значения:
ElevatorState.ELEVATOR_STATE_IDLE — бездействие
ElevatorState.ELEVATOR_STATE_LOADING — высадка/посадка пешеходов
ElevatorState.ELEVATOR_STATE_MOVING — движение
ElevatorState.ELEVATOR_STATE_FAILED — поломка
double totalTravelTime() Возвращает общее время (в секундах), в течение которого лифт перемещался. Время измеряется с начала выполнения модели (или с момента последнего вызова функции resetStats()).
double totalTravelTime(TimeUnits units) Возвращает общее время (в заданных единицах измерения времени), в течение которого лифт перемещался. Время измеряется с начала выполнения модели (или с момента последнего вызова функции resetStats()).

units — константа, задающая единицы измерения времени
double meanWaitingTime() Возвращает среднее время (в секундах), в течение которого пешеходы ожидали лифт (на всех уровнях).
double meanWaitingTime(TimeUnits units) Возвращает среднее время (в заданных единицах измерения времени), в течение которого пешеходы ожидали лифт (на всех уровнях).

units — константа, задающая единицы измерения времени
double meanWaitingTime(Level level) Возвращает среднее время (в секундах), в течение которого пешеходы ожидали лифт на заданном уровне.
level — уровень
double meanWaitingTime(Level level, TimeUnits units) Возвращает среднее время (в заданных единицах измерения времени), в течение которого пешеходы ожидали лифт на заданном уровне.

level — уровень
units — константа, задающая единицы измерения времени
int nPickedUpPeds(Level level) Возвращает общее количество пешеходов, севших в лифт на заданном уровне (этаже) level.
int nDroppedOffPeds(Level level) Возвращает общее количество пешеходов, вышедших из лифта на заданном уровне (этаже) level.
void resetStats() Сбрасывает всю собранную для лифта статистику.
Вместимость
Функция Описание
int getCapacity() Возвращает вместимость лифта - максимальное количество человек, которое может в нем находиться одновременно.
void setCapacity(int capacity) Задает вместимость лифта - максимальное количество человек, которое может в нем находиться одновременно.

capacity — новое значение вместимости
Скорость, время на уровень (этаж)
Функция Описание
double getSpeed() Возвращает скорость лифта (в метрах в секунду).
double getSpeed(SpeedUnits units) Возвращает скорость лифта (в заданных единицах измерения скорости).

units — одна из констант, задающих единицы измерения скорости
void setSpeed(double speed) Задает скорость лифта (в метрах в секунду).

speed — новое значение скорости
void setSpeed(double speed, SpeedUnits units) Задает скорость лифта (в заданных единицах измерения скорости).

speed — скорость лифта
units — одна из констант, задающих единицы измерения скорости
double getTimePerLevel() Возвращает время, которое у лифта занимает перемещение между двумя ближайшими уровнями (в секундах).
double getTimePerLevel(TimeUnits units) Возвращает время, которое у лифта занимает перемещение между двумя ближайшими уровнями (в заданных единицах измерения времени).

units — одна из констант, задающих единицы измерения времени
void setTimePerLevel(double timePerLevel) Задает время, которое у лифта занимает перемещение между двумя ближайшими уровнями (в секундах).

timePerLevel — время, которое у лифта занимает перемещение между двумя ближайшими уровнями
void setTimePerLevel(double timePerLevel, TimeUnits units) Задает время, которое у лифта занимает перемещение между двумя ближайшими уровнями (в заданных единицах измерения времени).

timePerLevel — время, которое у лифта занимает перемещение между двумя ближайшими уровнями
units — одна из констант, задающих единицы измерения времени
Минимальное время пребывания
Функция Описание
double minStayTime() Возвращает минимальное время (в секундах), которое лифт проводит на уровне (этаже) перед тем, как продолжить движение к следующему уровню. Если высадка и посадка к этому моменту не будет завершена, то лифт вначале дождется ее окончания.
double minStayTime(TimeUnits units) Возвращает минимальное время (в заданных единицах измерения времени), которое лифт проводит на уровне (этаже) перед тем, как продолжить движение к следующему уровню. Если высадка и посадка к этому моменту не будет завершена, то лифт вначале дождется ее окончания.

units — одна из констант, задающих единицы измерения времени
Режим ручного управления
Функция Описание
boolean isManualMode() Возвращает true, если лифт находится в ручном режиме управления, false - если в автоматическом.
void setManualMode(boolean on) Меняет режим управления лифтом. В ручном режиме управления лифт перемещается, забирает и высаживает пешеходов только вследствие вызовов функций moveTo(), pickUpPeds() и dropOffPeds().

on — если true, то будет включен ручной режим управления, если false, то автоматический
void moveTo(Level level) Посылает лифт на заданный уровень. Автоматически переключает режим управления лифтом на ручной. Если лифт в момент вызова функции находится в состоянии высадки или посадки пешеходов, то вначале выходят и заходят те пешеходы, кто должен был это сделать, и только затем лифт начнет свое движение. После прибытия на требуемый уровень лифт останется в ручном режиме управления.

level — уровень, к которому лифт поедет
void moveTo(Level level, boolean stayInManualMode) Посылает лифт на заданный уровень. Автоматически переключает режим управления лифтом на ручной. Если лифт в момент вызова функции находится в состоянии высадки или посадки пешеходов, то вначале выходят и заходят те пешеходы, которые должны были это сделать, и только затем лифт начнет свое движение. Режим управления лифтом после прибытия на требуемый уровень задается пользователем с помощью аргумента stayInManualMode.

level — уровень, к которому лифт поедет
stayInManualMode — если true, то после движения лифт останется в ручном режиме управления, если false, то переключится в автоматический режим
void pickUpPeds(List<Agent> peds) Используется только в том случае, если пользователь управляет лифтом в ручном режиме. Начинает подбор пешеходов из заданного списка. Все пешеходы в списке должны находиться на том же уровне, на котором находится лифт в момент вызова функции. Если какой-то пешеход в списке находится на другом уровне или же если лифт находится между уровнями, то возникнет ошибка.
void dropOffPeds(List<Agent> peds) Используется, если пользователь управляет лифтом в ручном режиме. Начинает высадку пешеходов из заданного списка. Все пешеходы в списке в момент вызова функции должны находиться внутри этого лифта. Пешеходы покидают блок через стандартный выходной порт out и помещаются на тот же уровень, на котором находится лифт.
Level getCurrentLevel() Возвращает уровень, на котором находится лифт в текущий момент. Если лифт располагается между уровнями, то возвращает нижний уровень из этих двух.
Level getTargetLevel() Возвращает уровень, к которому движется лифт. Если лифт не движется, и в данный момент у него нет задач, то возвращает null.
Level getNearestLevel() Возвращает ближайший обслуживаемый лифтом уровень. Если лифт движется вверх, то возвращает ближайший уровень по ходу движения. Если вниз, то текущий уровень лифта.
void deleteCallsOnLevel(Level level) Удаляет все задачи по подбору пешеходов с заданного уровня. Пешеходы продолжат ждать лифт в области ожидания, используйте функции cancel() или remove() для управления ими.

level — уровень, для которого удаляются все задачи по подбору пешеходов
Двери
Функция Описание
void disableDoor(Level level, ElevatorDoor door) Запрещает указанную дверь на заданном уровне.

level — уровень
door — константа, определяющая, какую дверь нужно запретить: ELEVATOR_DOOR_FRONT или ELEVATOR_DOOR_REAR
void enableDoor(Level level, ElevatorDoor door) Разрешает указанную дверь на заданном уровне.

level — уровень
door — константа, определяющая, какую дверь нужно разрешить: ELEVATOR_DOOR_FRONT или ELEVATOR_DOOR_REAR
boolean isDoorEnabled(Level level, ElevatorDoor door) Проверяет, разрешена или запрещена указанная дверь на заданном уровне. Возвращает true, если дверь разрешена, и false, если дверь запрещена.

level — уровень
door — константа, определяющая дверь, которую нужно проверить: ELEVATOR_DOOR_FRONT или ELEVATOR_DOOR_REAR
ElevatorDoorsConfiguration getDoorsConfiguration() Возвращает конфигурацию дверей лифта.

Возможные возвращаемые значения:
ElevatorDoorsConfiguration.ELEVATOR_DOORS_FRONT — дверь находится с одной стороны
ElevatorDoorsConfiguration.ELEVATOR_DOORS_FRONT_REAR — двери находятся с двух сторон
void setDoorsConfiguration(ElevatorDoorsConfiguration doorsConfiguration) Задает конфигурацию дверей лифта.

doorsConfiguration — новая конфигурация дверей лифта
Допустимые значения:
ElevatorDoorsConfiguration.ELEVATOR_DOORS_FRONT — дверь находится с одной стороны
ElevatorDoorsConfiguration.ELEVATOR_DOORS_FRONT_REAR — двери находятся с двух сторон
Уровни
Функция Описание
Level getLevel() Возвращает уровень, на котором находится эта фигура.
boolean isAllLevels() Возвращает true, если лифт настроен на обслуживание всех уровней, и false - если нет.
void setAllLevels(boolean allLevels) Задает, обслуживает ли лифт все уровни, или только определенные.

allLevels — если true, то лифт обслуживает все уровни, если false — только определенные
Level[] accessibleLevels() Возвращает массив уровней, которые обслуживает лифт. Уровни в массиве отсортированы согласно их Z-координатам. Если лифт обслуживает все уровни, то и список будет содержать все уровни.
void addAccessibleLevels(Level[] levels) Задает уровни, которые обслуживает лифт. Может быть вызвана только до инициализации лифта. При вызове переключает лифт в режим обслуживания только определенных уровней (функция isAllLevels() возвращает false).

levels — массив уровней, которые обслуживает лифт
Внешний вид
Функция Описание
Color getWallColor() Возвращает цвет стен лифта. Возвращает null, если у лифта не задан цвет, или используется текстура (в этом случае используйте функцию getWallTexture()).
Texture getWallTexture() Возвращает текстуру стен лифта. Возвращает null, если у лифта не задана текстура, а используется цвет (в этом случае используйте функцию getWallColor()).
void setWallColor(Paint wallColor) Задает цвет (или текстуру) линии лифта.

wallColor — новая текстура или цвет
Color getPlatformColor() Возвращает цвет платформы лифта. Возвращает null, если у платформы лифта не задан цвет заливки, или используется текстура (в этом случае используйте функцию getPlatformTexture()).
Texture getPlatformTexture() Возвращает текстуру заливки платформы лифта. Возвращает null, если у платформы лифта не задана текстура заливки, или используется цвет заливки (в этом случае используйте функцию getPlatformColor().
void setPlatformColor(Paint platformColor) Задает цвет (или текстуру) заливки платформы лифта.

platformColor — новый цвет заливки; если null, то заливки нет
boolean isDrawShaft() Возвращает true, если шахта лифта отображается, false - если нет.
void setDrawShaft(boolean drawShaft) Задает, отображается ли шахта лифта.

drawShaft — видимость шахты. Если true, то шахта отображается на анимации, если false — нет.
double getLineWidth() Возвращает ширину стены лифта (в пикселях).
void setLineWidth(double width) Задает ширину стены лифта (в пикселях).
Размеры
Функция Описание
double getWidth(LengthUnits units) Возвращает ширину кабины лифта (в заданных единицах измерения длины).

units — константа, задающая единицы измерения длины
void setWidth(double width, LengthUnits units) Задает ширину кабины лифта (в заданных единицах измерения длины).

width — новое значение ширины
units — константа, задающая единицы измерения длины
double getDepth(LengthUnits units) Возвращает глубину кабины лифта (в заданных единицах измерения длины).

units — константа, задающая единицы измерения длины
void setDepth(double depth, LengthUnits units) Задает глубину кабины лифта (в заданных единицах измерения длины).

depth — новое значение глубины
units — константа, задающая единицу измерения длины
double getCabinHeight(LengthUnits units) Возвращает высоту кабины лифта (в заданных единицах измерения длины).

units — константа, задающая единицы измерения длины
void setCabinHeight(double cabinHeight, LengthUnits units) Задает высоту кабины лифта (в заданных единицах измерения длины).

cabinHeight — новое значение высоты
units — константа, задающая единицы измерения длины
Местоположение
Функция Описание
double getX() Возвращает Х-координату лифта.
void setX(double x) Задает X-координату лифта.

x — новая Х-координата
double getY() Возвращает Y-координату лифта.
void setY(double y) Задает Y-координату лифта.

y — новая Y-координата
Point getXYZ() Возвращает (X, Y, Z) координаты лифта.
void setXYZ(double x, double y, double z) Задает (X, Y, Z) координаты лифта.

x — новая Х-координата
y — новая Y-координата
z — новая Z-координата
Поворот
Функция Описание
double getRotation() Возвращает текущий угол поворота кабины лифта в радианах (по часовой стрелке).
void setRotation(double rotation) Задает новый угол поворота кабины лифта в радианах (по часовой стрелке).

rotation — новое значение поворота
Видимость
Функция Описание
boolean isVisible() Проверяет, отображается ли фигура на анимации во время выполнения модели. Если функция возвращает true — значит, фигура отображается, если false — нет.
void setVisible(boolean v) Задает видимость фигуры.

v — видимость. Если значение v равно true, то фигура будет отображаться, если равно false — то нет.
Режим отображения (2D / 3D)
Функция Описание
ShapeDrawMode getDrawMode() Возвращает режим отображения фигуры (где ее рисовать: в 2D, 3D или 2D+3D анимации).

Допустимые значения:
SHAPE_DRAW_2D3D — отображать и в 2D и в 3D анимации
SHAPE_DRAW_2D — отображать только в 2D анимации
SHAPE_DRAW_3D — отображать только в 3D анимации
void setDrawMode(ShapeDrawMode drawMode) Задает режим отображения фигуры (где ее рисовать: в 2D, 3D или 2D+3D анимации).
Функция может быть вызвана только один раз и только для фигуры, созданной программно с помощью конструктора без аргументов. Вызов функции, который будет менять уже заданный режим, приведет к ошибке.
drawMode — новый режим отображения фигуры
Допустимые значения:
SHAPE_DRAW_2D3D — отображать и в 2D и в 3D анимации
SHAPE_DRAW_2D — отображать только в 2D анимации
SHAPE_DRAW_3D — отображать только в 3D анимации
Удаление
Функция Описание
void remove() Удаляет лифт из презентации. Если фигура не является частью презентации, функция не выполняет ничего. Обратите внимание, что удаление из презентации не обязательно подразумевает удаление из логики модели, поскольку логические сети и маршруты могли быть заданы еще до удаления элемента и не исчезают.
Как мы можем улучшить эту статью?