Cinema

Apr 09, 2020 14:55



Разбор правил формирования атрибутов трансформации элементов конструкции для имитации открывания/закрывания дверок, ящиков и т.п.

Документация на функционал расположена на страничке Динамическая визуализация (макро) wiki)

Не самый простой случай с линейным перемещением

Судя по документации, что бы получить правильный результат трансформации надо:

  • присвоить группе или можно её назвать основному объекту (BOSS) два атрибута $CinemaScr, $CinAsseGr
  • Внутри группы, подчиненным объектам, присвоить атрибуты $CinemaAssembly с указанием типов (управляющая, зависимая, фиксированная) точек с какими то там координатами.

Создадим примитивный поршень, который будет совершать поступательное и возвратное движение. Примерно такой, как изображен на рисунке.



Соберем в группу прямоугольник со штоком. Это будет Управляющий объект. с управляющей точкой с координатами 0, 40, -20. Присвоим этой группе (поршень со штоком) атрибут $CinemaAssembly и $CinemaScr Поскольку это управляющий объект, а именно этот тип объекта задаёт движение всех зависимых.

  1. Создадим Управляющий объект Поршень со штоком
    Используем меню К3/Структ.оп./Группа/Создать
    Или через командную строку набираем на клавиатуре:
    group указываем шток и прямоугольник и жмем правую кнопку мыши выбираем закончить. Присвоим ему атрибуты $CinemaAssembly и $CinemaScr




Поскольку, это управляющий объект, то значения атрибутов у него особенные. Для $CinemaAssembly используем второй вариант записи (См.документацию)

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

В нашем случае $CinemaAssembly получается 1,-1,0,40,-20

Второй атрибут уже текстовый. Это так называемый Scrath. Что это такое можно почитать на страничке документации.
$CinemaScr сложнее и проще одновременно.

Шапка у него стандартная Scratch
Далее имя секции Main
LocalKey - Признак, нужно ли применять преобразование у подчиненного объекта: 1-нужно
Control - Подчиненность объекта: 1 - подчиненный (берет информацию о движении от «босса»)
Beg_time - Общее время начала движения
Fin_time - Общее время окончания движения
MoveCount - Количество движений: поворотов и перемещений.



2. Для 2-х рычагов определяем  $CinemaAssembly

Соберем для наглядности 1 окружность и 1 линию в группу и назовем это рычаг.

Получим два рычага. 3-й элемент будет неподвижным.



По аналогии с поршнем вызываем group и указываем линию и окружность входящую в рычаг.
Повторяем еще два раза.

Структура сцены



3-й элемент неподвижный, поэтому ему ничего не присваиваем.

1-й рычаг приобретает $CinemaAssembly 1-го варианта у него две точки в подчинении.

Одна фиксированная( тип-1) и вторая зависимая (тип-2)

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

n, t1, x1, y1, z1, t2, x2, y2, z2...
n - число точек
ti - тип i-ой точки
0 - управляющая
1 - фиксированная
2 - зависимая
xi, yi, zi - координаты i-ой точки



2,1,0,20,0,2,0,30,40

Второму рычагу аналогично присваиваем строку из управляющей и зависимой точки

2,0,0,40,-20,2,0,30,40

Заметно, что у них есть одна общая зависимая точка 0,30,40

В отличии от первого рычага вместо фиксированной, вторая точка управляющая.

  1. Теперь всё это(поршень, 2 рычага и третий неподвижный) собираем в группу и назначаем этой группе атрибуты $CinemaScr, $CinAsseGr
    Scratch
    Main
    Control=2
    Beg_Time=0
    Fin_Time=10
    Dir_Time=1
    MoveCount=1
    Move0
    LocalKey=1
    MoveBeg=0
    MoveEnd=10
    MoveType=0
    MoveX=0
    MoveY=25
    MoveZ=0

Это содержимое $CinemaScr. Описано задание решателю сдвинуть уравляющую точку на 25 мм по оси Y

На картинке показан исходный и финальный момент сдвига.





Похожий на KLOK механизм подъемный/откидной (ДСП) из МДМ

Страничка механизма на сайте МДМ

Судя по описанию на сайте МДМ этот механизм реализует 5 вариантов установки.

  • 3 открывания вверх
  • 2 открывания вниз

Так что поле для деятельности велико. Надо как то реализовать вариантность установки и визуализации открывания.

В Механизме есть ещё два подчиненных рычага.

Нижний обладает способностью вращаться вокруг оси зафиксированного кронштейна. У этого кронштейна нет никаких атрибутов и поэтому он вместе с "Боссом" никуда не шевелится. Верхний связан с кронштейном, который крепится к фасаду и осуществляет сложное поворотное движение.

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

Начнем не спеша с разбора и моделирования кинематики.

Представим вертикальный фасад и верхнюю панель , что бы было понятно, что-как и почему.



Начнем с варианта 90.


К сожалению на схеме нет размеров осей, поэтому постараемся определить их сами.

Вот что в итоге вышло у меня. Думаю, что для моделирования кинематики достаточно.





Для простоты описания точек смещаем всё это в ГСК точкой на фасаде напротив будущей управляющей точки (0) 0,12,0.

Нижний кронштейн не движется ему ничего не присваиваем.
Нижний рычаг (фиолетовый) содержит фиксированную точку (1) 0,12,-76
Оба рычага содержат зависимую точку (2) 0,110,-38
Верхний рычаг (синий) содержит управляющую точку (0) 0,12,0

Присваиваем рычагам $CinemaAssembly:

  • Нижнему 2,1,0,12,-76,2,0,110,-38
  • Верхнему 2,0,0,12,0,2,0,110,-38

Верхнему кронштейну $CinemaAssembly и $CinemaScr

Поскольку это управляющий объект пишем в него:

  • $CinemaAssembly 1,-1,0,12,0
  • $CinemaScr
  • Scratch
    Main
    Control=1

Собираем всё в группу и присваиваем группе $CinemaScr, $CinAsseGr

$CinemaScr

Scratch
Main
Control=2
Beg_time=0
Fin_time=1000
Dir_time=1
MoveCount=2
Move0
LocalKey=1
MoveBeg=0
MoveEnd=1000
MoveType=1
Axe1X=0
Axe1Y=0
Axe1Z=106
Axe2X=2
Axe2Y=0
Axe2Z=106
Angle=-90
Move1
LocalKey=1
MoveBeg=0
MoveEnd=1000
MoveType=0
MoveX=0
MoveY=0
MoveZ=-14

Для плавности работы назначаю 1000 мС для Fin_time и MoveEnd.

Два движения MoveCount=2
Первое движение поворот MoveType=1
Угол открывания -90 (по часовой стрелке) вокруг оси с точками (0, 0, 106) (2, 0, 106)

Второе движение перемещение MoveType=0 по оси Z -14 мм

Результат описания движения.
Для наглядности, добавил прямоугольник в состав верхнего кронштейна, который являтся Управляющим объектом



Обратите внимание, как внутренний угол опускается и дверь открывается в одной плоскости с верхней панелью.
Но петля обычно работает для панелей (фасадов) толщиной до 25 мм поэтому второе движение MoveZ= должно быть скорее -25 мм, вместо -14



k3, cinema k3-mebel

Previous post Next post
Up