Найти тему
Максим Окатов

Archicad параметризированные специальные панели.

Оглавление

Что делать, если для стандартной мебели необходимо создать нестандартный фасад?

Для этого мы можем использовать специальные панели.

Но возможности специальных панелей ограничены, так как Archicad сохраняет созданную панель в исходном виде, и при изменении размеров объекта (мебели) созданная панель растягивается и масштабируется [Анимация 1].

Анимация 1. Специальная панель растягивается
Анимация 1. Специальная панель растягивается

Но данную проблему можно обойти, если немного разобраться в том, как работает специальная панель в Archicad.

Для того чтобы понять, как исправить эту проблему, нам необходимо открыть созданную дверь с помощью GDL редактора[Рис 1].

Рис 1.  Открываем созданную нами дверь
Рис 1. Открываем созданную нами дверь

Разбираемся в GDL скрипте

GDL скрипт моей двери
GDL скрипт моей двери

Смотрим на самое начало скрипта.

mulx A/ 0.3
muly B/ 1
mulz ZZYZX/ 0.015
add 2.722346326484, -4.500640952867, 0

Ключевые слова "MULX", "MULY", "MULZ" масштабируют соответствующую ось локальных координат.

Ключевое слово "ADD" перемещает локальную систему координат вдоль соответствующей оси.

Таким образом мы понимаем, что создаваемый объект строится не в начале координат. Это необходимо исправить, чтобы в будущем не было ошибок. Для этого нужно перенести сохраняемый объект в начало координат и только после этого сохранить. [Рис 2]

Рис 2. Сохраняем дверь шкафа в начале координат
Рис 2. Сохраняем дверь шкафа в начале координат
Рис 3.
Рис 3.

Мы видим, что ключевое слово "ADD" пропало [Рис 3], а ключевое слово "MUL" мы можем закомментировать [Рис 4]. Это нужно для того, чтобы наша панель не масштабировалась.

Рис 4. Закомментируем масштабирование системы координат
Рис 4. Закомментируем масштабирование системы координат

Просматриваем скрипт дальше. Нас интересует, как именно он создает дверь[Рис 5].

Рис 5. Вызов функции
Рис 5. Вызов функции

Этот скрипт создает дверь посредствам вызова другой функции с помощью ключевого слова "CALL" (вызов) и передает ей некоторые параметры.

Нас интересуют параметры A, B, ZZYZX. Эти параметры присутствуют во всех скриптах и определяют Ширину, Толщину (глубину) и Высоту объекта. Мы можем использовать их для того, чтобы повысить уровень параметризации объекта.

Для этого мы должны написать наш объект (Дверь, панель) с помощью языка GDL Geometric Description Language - язык геометрических определений.
Это отдельная тема, если вам будет интересно, пишите в комментариях, и я покажу как создавать объект.

Как мы видим ключевое слово передает в параметр A, B, ZZYZX конкретное число, это число равно размеру нашей панели в момент сохранения, но если поменять данное число на переменную, то объект будет перестраиваться, а не растягиваться[Рис 6].

Рис 6. Тут нужно немного поэкспериментировать и понять какой параметр правильно присваивать
Рис 6. Тут нужно немного поэкспериментировать и понять какой параметр правильно присваивать

Тут нужно понять, что скрипт "Дверь шкафа" получает размеры двери от вашей мебели и сохраняет их в переменные A, B, ZZYZX, таким образом, поменяв константы на переменные [Рис 6], мы передали нашему объекту размеры двери.

В результате панель теперь не растягивается, а меняет количество реек.

Результат всех изменений
Результат всех изменений

Сравните с тем как было

Так было
Так было