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

Группа

Группа фигур используется для группировки фигур презентации. С помощью динамических свойств группы фигур (X, Y, Поворот, и т.п.) вы можете передвигать группу фигур и поворачивать ее вокруг опорной точки. Сама опорная точка группы фигур на анимации не отображается.

Вы можете группировать вместе и трехмерные фигуры.

Чтобы добавить группу фигур на презентацию

  1. Перетащите элемент Группа  из палитры Презентация в то место графического редактора, где вы хотите поместить опорную точку группы.

Чтобы добавить фигуры в группу

  1. Выделите в графическом редакторе те фигуры, которые вы хотите добавить в группу.
  2. Если вы хотите добавить фигуры в уже существующую группу, щелкните правой кнопкой мыши по выделенным фигурам, выберите Группировка > Добавить в существующую группу из контекстного меню и затем щелкните мышью по тому значку группы , в которую вы хотите добавить выделенные фигуры.
  3. Если же вы хотите добавить фигуры в новую группу, то тогда щелкните правой кнопкой мыши по выделенным фигурам и выберите Группировка > Создать группу из контекстного меню

Чтобы удалить фигуры из группы

  1. Выделите фигуры, которые вы хотите удалить из группы.
  2. Щелкните правой кнопкой мыши по выделенным фигурам и выберите Группировка > Удалить из группы из контекстного меню

Когда вы добавите фигуру в группу фигур, то вместо точки начала координат презентации с координатами (0,0) роль начала координат для фигур группы (а точнее, для выражений их динамических свойств) станет играть опорная точка группы. Такое свойство группы может быть использовано для того, чтобы сдвинуть начало координат для определенной части фигур, отображаемых на презентации.

Чтобы изменить свойство фигуры, входящей в группу

  1. Выделите группу, щелкнув по ней мышью в графическом редакторе или в панели Проекты.
  2. Щелчком мыши выделите ту фигуру из этой группы, свойства которой вы хотите изменить, и редактируйте ее в соответствии с вашими требованиями, как вы это делаете с любой фигурой презентации AnyLogic.

Свойства

Основные

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

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

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

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

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

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

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

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

X — x-координата опорной точки группы.

Y — y-координата опорной точки группы.

Z — z-координата опорной точки группы.

Поворот Z — Угол поворота по оси X (в плоскости XY), в радианах или градусах.

Поворот X — Угол поворота по оси X (в плоскости YZ), в радианах.

Поворот Y — Угол поворота по оси X (в плоскости XZ), в радианах.

Масштаб по оси X — Здесь вы можете указать выражение, возвращающее коэффициент масштабирования фигур группы по оси X.

Масштаб по оси Y — Здесь вы можете указать выражение, возвращающее коэффициент масштабирования фигур группы по оси Y.

Масштаб по оси Z — Здесь вы можете указать выражение, возвращающее коэффициент масштабирования фигур группы по оси Z.

* Указав выражения для Масштаба по оси X, Масштаба по оси Y и в некоторых случаях Масштаба по оси Z, вы сможете определять масштаб группы фигур динамически во время выполнения модели.
Специфические

Отображать в — Если выбрано В 2D и в 3D или Только в 3D, то будет создан трехмерный аналог двумерной группы фигур.

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

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

Локальные переменные:
self — сам элемент
clickx — x-координата щелчка относительно координат фигуры
clicky — y-координата щелчка относительно координат фигуры

Действие при отрисовке — Код, который будет выполняться перед каждой новой отрисовкой группы в окне модели.

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

Функции

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

Местоположение
Функция Описание
double getX()
double getY()
double getZ()
Возвращает X(Y, Z) координату группы (а именно, координату ее опорной точки).
void setX(double x)
void setY(double y)
void setZ(double z)
Задает новую X (Y, Z) координату группы.

x — новое значение координаты X
y — новое значение координаты Y
z — новое значение координаты Z
void setPos(double x, double y) Задает новые координаты группы. Z-координата остается без изменений.

x — новое значение координаты X
y — новое значение координаты Y
void setPos(double x, double y, double z) Задает новые координаты группы.

x — новое значение координаты X
y — новое значение координаты Y
z — новое значение координаты Z
Работа с элементами группы
Функция Описание
int size() Возвращает количество фигур в группе.
java.lang.Object get(int i) Возвращает фигуру с заданным индексом.

i — индекс фигуры.
int indexOf(java.lang.Object shape) Возвращает индекс указанной фигуры в этой группе или -1, если эта группа не содержит эту фигуру.

shape — фигура, индекс которой нужно найти
java.util.List<java.lang.Object> getShapes() Возвращает коллекцию фигур в группе.
ShapeGroup getGroup() Возвращает группу, которая содержит указанную фигуру.
Добавление фигур
Функция Описание
void add(Shape shape) Добавляет фигуру в группу. Вам нужно убедиться, что эта фигура не принадлежит какой-либо другой группе

shape — фигура, которая будет добавлена
void add(Camera3D camera) Добавляет в группу элемент Камера. Вам нужно убедиться, что эта камера не принадлежит какой-либо другой группе.

camera — камера, которую нужно добавить в группу
void add(Light3D light) Добавляет в группу элемент Свет. Вам нужно убедиться, что этот источник света не принадлежит какой-либо другой группе.

light — свет, который будет добавлен.
Вставка фигур
Функция Описание
void insert(int index, Shape shape) Добавляет в группу фигуру с указанным индексом, который задает порядок расположения фигур по оси Z в 2D анимации. Вам нужно убедиться, что эта фигура не принадлежит какой-либо другой группе.

index — индекс, который определяет, куда будет вставлена фигура (от 0 до size(), включительно)
shape — фигура, которая будет добавлена
Удаление фигур
Функция Описание
boolean remove(Shape shape) Пытается удалить фигуру из группы, возвращает false, если группа эту фигуру не содержит.

shape — фигура, которая будет удалена
Возвращает: true, если фигура была в группе, иначе false.
boolean remove(Camera3D camera) Пытается удалить элемент Камера из группы, возвращает false, если группа эту камеру не содержит.

camera — камера, которая будет удалена
Возвращает: true, если в группе была камера, иначе false
boolean remove(Light3D light) Пытается удалить элемент Свет из группы, возвращает false, если группа не содержит данный источник света.

light — источник света, который будет удален.
Возвращает: true, если в группе был данный источник света, иначе false
void clear() Удаляет все фигуры из группы.
Масштаб
Функция Описание
double getScaleX()
double getScaleY()
double getScaleZ()
Возвращает масштаб группы по оси координат X (Y, Z).
void setScaleX(double sx)
void setScaleY(double sy)
void setScaleZ(double sz)
Задает масштаб группы по оси координат X (Y, Z).

sx — новое значение масштаба по оси X *
sy — новое значение масштаба по оси Y *
sz — новое значение масштаба по оси Z *
* если параметр равен 1, то группа сохраняет изначальный размер
void setScale(double sx, double sy) Устанавливает масштаб группы по осям координат X и Y.

sx — новое значение масштаба по оси X *
sy — новое значение масштаба по оси Y *
* если параметр равен 1, то группа сохраняет изначальный размер
void setScale(double s) Устанавливает одинаковый масштаб по всем трем осям координат.

s — новое значение масштаба по всем осям координат *
* если параметр равен 1, то группа сохраняет изначальный размер
Поворот
Функция Описание
double getRotation() Возвращает угол поворота группы в радианах, по часовой стрелке.
double getRotationX() Возвращает угол поворота группы вокруг оси X, в радианах (по часовой стрелке, от Y к Z).
double getRotationY() Возвращает угол поворота группы вокруг оси Y, в радианах (по часовой стрелке, от Z к X).
double getRotationZ() Возвращает угол поворота группы вокруг оси Z, в радианах (по часовой стрелке, от X к Y).
void setRotation(double rotation) Задает новый угол горизонтального поворота группы.

rotation — новое значение угла горизонтального поворота фигуры в радианах
void setRotationX(double rotationX) Задает поворот группы вокруг оси X (по часовой стрелке от Y к Z).

rotationX — новое значение угла поворота в радианах
void setRotationY(double rotationY) Задает поворот группы вокруг оси Y (по часовой стрелке от Z к X).

rotationY — новое значение угла поворота в радианах
void setRotationZ(double rotationZ) Задает поворот группы вокруг оси Z.

rotationZ — новое значение угла поворота в радианах
Видимость
Функция Описание
boolean isVisible() Проверяет видимость группы. Если группа видна, то возвращает true; если нет, то false.
void setVisible(boolean 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 анимации
Группа
Функция Описание
ShapeGroup getGroup() Возвращает группу, содержащую эту группу.
Уровень
Функция Описание
Level getLevel() Возвращает уровень, на котором находится эта группа.
Точки внутри группы
Функция Описание
boolean contains(double px, double py) Возвращает true, если группа содержит точку с заданными координатами.

px — координата x относительно содержимого группы
py —  координата y относительно содержимого группы
Point randomPointInside() Возвращает произвольно выбранную точку внутри группы.
Эта функция использует генератор случайных чисел агента, содержащего эту группу. (Сгенерирует исключение, если группа была создана из кода, в таком случае используйте функцию randomPointInside(Random rng)).
Point randomPointInside (java.util.Random rng) Возвращает произвольно выбранную точку из площади группы. Эта функция использует заданный генератор случайных чисел.

rng — генератор случайных чисел.
Как мы можем улучшить эту статью?