Что делать, если для стандартной мебели необходимо создать нестандартный фасад?
Для этого мы можем использовать специальные панели.
Но возможности специальных панелей ограничены, так как Archicad сохраняет созданную панель в исходном виде, и при изменении размеров объекта (мебели) созданная панель растягивается и масштабируется [Анимация 1].
Но данную проблему можно обойти, если немного разобраться в том, как работает специальная панель в Archicad.
Для того чтобы понять, как исправить эту проблему, нам необходимо открыть созданную дверь с помощью GDL редактора[Рис 1].
Разбираемся в GDL скрипте
Смотрим на самое начало скрипта.
mulx A/ 0.3
muly B/ 1
mulz ZZYZX/ 0.015
add 2.722346326484, -4.500640952867, 0
Ключевые слова "MULX", "MULY", "MULZ" масштабируют соответствующую ось локальных координат.
Ключевое слово "ADD" перемещает локальную систему координат вдоль соответствующей оси.
Таким образом мы понимаем, что создаваемый объект строится не в начале координат. Это необходимо исправить, чтобы в будущем не было ошибок. Для этого нужно перенести сохраняемый объект в начало координат и только после этого сохранить. [Рис 2]
Мы видим, что ключевое слово "ADD" пропало [Рис 3], а ключевое слово "MUL" мы можем закомментировать [Рис 4]. Это нужно для того, чтобы наша панель не масштабировалась.
Просматриваем скрипт дальше. Нас интересует, как именно он создает дверь[Рис 5].
Этот скрипт создает дверь посредствам вызова другой функции с помощью ключевого слова "CALL" (вызов) и передает ей некоторые параметры.
Нас интересуют параметры A, B, ZZYZX. Эти параметры присутствуют во всех скриптах и определяют Ширину, Толщину (глубину) и Высоту объекта. Мы можем использовать их для того, чтобы повысить уровень параметризации объекта.
Для этого мы должны написать наш объект (Дверь, панель) с помощью языка GDL Geometric Description Language - язык геометрических определений.
Это отдельная тема, если вам будет интересно, пишите в комментариях, и я покажу как создавать объект.
Как мы видим ключевое слово передает в параметр A, B, ZZYZX конкретное число, это число равно размеру нашей панели в момент сохранения, но если поменять данное число на переменную, то объект будет перестраиваться, а не растягиваться[Рис 6].
Тут нужно понять, что скрипт "Дверь шкафа" получает размеры двери от вашей мебели и сохраняет их в переменные A, B, ZZYZX, таким образом, поменяв константы на переменные [Рис 6], мы передали нашему объекту размеры двери.
В результате панель теперь не растягивается, а меняет количество реек.
Сравните с тем как было