Динамическая визуализация

Материал из K3-Macro
Макро | Работа с видом | Видовые окна | Параметры проецирования | Управление отображением | Фотовизуализация | Динамическая визуализация

cinema[править | править код]

cinema [{open | close}] [fast]<Object>

Команда приводит к динамической визуализации объекта <Object>. Как правило, это открывание дверей или выдвижение ящиков. Объект будет способен к динамической визуализации, если ему присвоен атрибут $Cinema (устаревший вариант) или атрибуты $CinemaScr, $CinAsseGr, $CinemaAssembly (новый вариант).

Необязательный ключ fast позволяет произвести открытие/закрытие не плавно, а быстро — мгновено перевести в нужное состояние. Нужен он для обработки изделий в макропрограммах, когда нужно привести все объекты в необходимое состояние (открыты или закрыты).

Необязательные ключи open и close указывают, что нужно именно закрыть объект (close) или именно открыть (open). В противном случае, если ключ не указывать, то открытые объекты закрываются, а закрытые — открываются. Это не всегда удобно при обработках в макропрограммах.

Саму динамическую визуализацию и расчет координат точек объектов в различные моменты времени осуществляет так называемый «решатель». Решатель — это математический аппарат, который принимает на вход параметры движения и геометрические ограничения движения и вычисляет положения объектов. Один решатель может контролировать от одного до нескольких объектов. Параллельно могут использоваться несколько решателей.

Описание атрибута $Cinema[править | править код]

Атрибут $Cinema — это строковый атрибут со значениями, разделенными запятыми.

Последовательно позиции:

  • 1-я позиция — тип элемента сдвига. Может принимать значения:
  • 0 — сам по себе (сам хранит информацию и сам двигается),
  • 1 — «служка», берет информацию от босса. То есть этот элемент будет двигаться, а параметры сдвига берет из объекта более высокого уровня по иерархии, у которого значение типа элемента сдвига равно 2 («босс»)
  • 2 — «босс», сам не двигается, хранит информацию для «служки» — объекта более низкого уровня внутри группы «босса», у которого тип элемента сдвига равен 1 («служка»)
  • 3 — не подвижная часть в составе объекта типа «сам по себе»
  • 2-я позиция — целое число — начальное время сдвига
  • 3-я позиция — целое число — конечное время
  • 4-я позиция — направление времени (меняется автоматически при открывании)
  • 5, 6, 7-я позиции — вектор сдвига (x, y, z)
  • 8, 9, 10, 11, 12, 13-я позиции — ось вращения (x1,y1,z1,x2,y2,z2)
  • 14-я позиция — угол поворота в градусах
Pluso.png Атрибут $Cinema в новых версиях системы больше не используется и оставлен для совместимости. Рекомендуется использовать атрибуты, описанные ниже

Описание атрибута $CinemaScr[править | править код]

Атрибут $CinemaScr — это Scratch атрибут со следующими данными. В этом атрибуте может быть несколько секций.

Секция Main:

  • Control — Подчиненность объекта:
  • 0 — сам по себе (содержит информацию о движении и сам же движется)
  • 1 — подчиненный (берет информацию о движении от «босса»)
  • 2 — босс (сам не двигается, хранит информацию о движении для «подчиненного»)
  • 3 — неподвижный объект в составе объекта "сам по себе". Для такого объекта в этой секции других записей не требуется, как не требуется и других секций. Добавлено 19.02.2024 года.
  • Beg_time — Общее время начала движения
  • Fin_time — Общее время окончания движения
  • Dir_time — Направление времени, или признак открытости/закрытости:
  • 1 — объект «закрыт»,
  • -1 — объект «открыт».
  • MoveCount — Количество движений: поворотов и перемещений. Соответственно, количество следующих секций, посвященных каждому движению, должно равняться значению этого параметра

Секция Move<N> (<N> — число от 0 до MoveCount-1)

  • LocalKey — Признак, нужно ли применять преобразование у подчиненного объекта:
  • 0 — не нужно;
  • 1 — нужно
  • MoveBeg — Время начала движения <N>
  • MoveEnd — Время окончания движения <N>
  • MoveType — Тип движения:
  • 0 — перемещение,
  • 1 –— поворот
  • Axe1X — Координата X первой точки оси вращения (при типе движения «поворот»)
  • Axe1Y — Координата Y первой точки оси вращения (при типе движения «поворот»)
  • Axe1Z — Координата Z первой точки оси вращения (при типе движения «поворот»)
  • Axe2X — Координата X второй точки оси вращения (при типе движения «поворот»)
  • Axe2Y — Координата Y второй точки оси вращения (при типе движения «поворот»)
  • Axe2Z — Координата Z второй точки оси вращения (при типе движения «поворот»)
  • Angle — Угол поворота в градусах (при типе движения «поворот»)
  • MoveX — Координата X вектора перемещения (при типе движения «перемещение»)
  • MoveY — Координата Y вектора перемещения (при типе движения «перемещение»)
  • MoveZ — Координата Z вектора перемещения (при типе движения «перемещение»)

Пример атрибута $CinemaScr

Scratch
Main
Control=2
Beg_time=0
Fin_time=10
Dir_time=1
MoveCount=2
Move0
LocalKey=1
MoveBeg=0
MoveEnd=10
MoveType=1
Axe1X=418
Axe1Y=0
Axe1Z=104
Axe2X=418
Axe2Y=0
Axe2Z=102
Angle=110
Move1
LocalKey=1
MoveBeg=0
MoveEnd=10
MoveType=0
MoveX=5
MoveY=16
MoveZ=0

Описание атрибута $CinAsseGr[править | править код]

$CinAsseGr — это логический атрибут, значение которого роли не играет. Важен только сам факт его существования. Если атрибут назначен, то положение этого объекта будет определяться своим решателем независимо от других. То есть в модели могут быть несколько объектов и для расчета движения каждого объекта будут использоваться свой решатель. В противном случае будут использоваться решатель родительского (родительских) объектов.

Этот атрибут назначается на группу, члены которой имеют атрибут $CinemaAssembly, определяющие задачу перемещения.

Описание атрибута $CinemaAssembly[править | править код]

$CinemaAssembly — это строковый атрибут, который имеет 2 варианта записи.

1. Если на объекте есть только атрибут $CinemaAssembly, то положение этого объекта определяется решателем. В атрибуте записаны количество, типы и координаты точек для определения 2-х мерной модели в решателе.

Структура атрибута:

n, t1, x1, y1, z1, t2, x2, y2, z2...

  • n — число точек
  • ti — тип i-ой точки
    • 0 — управляющая
    • 1 — фиксированная
    • 2 — зависимая
  • xi, yi, zi — координаты i-ой точки

2. Если на объекте есть атрибуты $CinemaAssembly и $CinemaScr, значит этот объект является управляющим, и в его атрибуте $CinemaAssembly записаны координаты управляющей точки. Т.е. положение этого объекта (и управляющей точки) рассчитывается командой cinema, и потом передаётся в решатель, для определения положения зависимых объектов.

Структура атрибута:

1, -1, x, y, z

  • 1, -1 — зарезервированные значения
  • x, y, z — координаты управляющей точки

CinemaScr[править | править код]

Integer CinemaScr(Integer <Code>, array <Params>)

Функция формирует набор данных (Scratch) CinemaScr для объектов, для которых нужно сформировать динамическую визуализацию. Ниже расписаны различные коды функции <Code> и параметры для этих кодов.

<Code>=0

Инициализация набора параметров. Функция с этим кодом инициализирует Scratch и пишет туда начальную информацию. Содержимое массива <Params> следующее:

  • <Params>[1] — Тип объекта (управление подчиненностью):
  • 0 — сам по себе (содержит информацию о движении и сам же движется)
  • 1 — подчиненный (берет информацию о движении от «босса»)
  • 2 — босс (сам не двигается, хранит информацию о движении для «подчиненного»),
  • <Params>[2] — Начальное время
  • <Params>[3] — Конечное время

Функция с этим кодом возвращает номер набора параметров. Этот номер в дальнейшем понадобится при закрытии набора параметров, записи информации о движении и записи набора параметров объекту

<Code>=1

Запись информации о перемещении. Содержимое массива <Params> следующее:

  • <Params>[1] — Индекс набора параметров, которому нужно добавить информацию о перемещении. Возвращается функцией с кодом 0.
  • <Params>[2] — Признак, нужно ли применять преобразование у подчиненного объекта:
  • 0 — не нужно;
  • 1 — нужно
  • <Params>[3] — Время начала движения
  • <Params>[4] — Время окончания движения
  • <Params>[5] — Координата X вектора перемещения
  • <Params>[6] — Координата Y вектора перемещения
  • <Params>[7] — Координата Z вектора перемещения

Функция с этим кодом возвращает количество движений: поворотов и перемещений. То есть при каждом добавленном движении (вызове функции с кодами 1 или 2) общее число движений увеличивается

<Code>=2

Запись информации о повороте. Содержимое массива <Params> следующее:

  • <Params>[1] — Индекс набора параметров, которому нужно добавить информацию о повороте. Возвращается функцией с кодом 0.
  • <Params>[2] — Признак, нужно ли применять преобразование у подчиненного объекта:
  • 0 — не нужно;
  • 1 — нужно
  • <Params>[3] — Время начала движения
  • <Params>[4] — Время окончания движения
  • <Params>[5] — Координата X первой точки оси вращения (при типе движения «поворот»)
  • <Params>[6] — Координата Y первой точки оси вращения (при типе движения «поворот»)
  • <Params>[7] — Координата Z первой точки оси вращения (при типе движения «поворот»)
  • <Params>[8] — Координата X второй точки оси вращения (при типе движения «поворот»)
  • <Params>[9] — Координата Y второй точки оси вращения (при типе движения «поворот»)
  • <Params>[10] — Координата Z второй точки оси вращения (при типе движения «поворот»)
  • <Params>[11] — Угол поворота в градусах (при типе движения «поворот»)

Функция с этим кодом возвращает количество движений: поворотов и перемещений. То есть при каждом добавленном движении (вызове функции с кодами 1 или 2) общее число движений увеличивается

<Code>=999

Завершение сбора информации о динамической визуализации. Содержимое массива <Params> следующее:

  • <Params>[1] — Индекс набора параметров, который нужно завершить. Возвращается функцией с кодом 0.

Функция с этим кодом завершает сбор информации и закрывает набор параметров (Scratch).


Макро | Работа с видом | Видовые окна | Параметры проецирования | Управление отображением | Фотовизуализация | Динамическая визуализация