Этот экспертный материал продолжает цикл
статей «ARCHICAD: открывая заново», начатый в декабре 2016 года статьей
Владимира Савицкого «Создание конструкций и извлечение рабочих чертежей из модели», а затем продолженный публикациями Светланы Кравченко «ARCHICAD: открывая заново. Визуализация – новые возможности для архитектора» и Александра Анищенко «TEAMWORK: эффективная командная работа шаг за шагом».
Цикл призван помочь пользователям в полной мере раскрыть весь потенциал
ARCHICAD®. Мы попросили архитекторов поделиться личным опытом
использования программы с применением нестандартных подходов,
малоизученных функций и новых возможностей, о которых многие
пользователи могут и не подозревать. Как разработчики приложения
ARCHICAD мы уверены, что только глубокое знание продукта может раскрыть
всю его ценность и решающим образом повлиять на результаты, скорость и
качество работы проектировщика.
Вы тоже предпочитаете «непротоптанные
дорожки»? Имеете опыт применения нестандартных подходов в работе с
ARCHICAD, регулярно задействуете не самые известные возможности
приложения? Будем рады пригласить к сотрудничеству новых авторов: ehffvn(jsr)tencuvfbsg.pbz»>ehffvn(jsr)tencuvfbsg.pbz.
Светлана Кравченко, практикующий архитектор
Язык GDL: уникальные возможности инструмента шаг за шагом
Наверняка многие из вас слышали о
GDL в ARCHICAD, однако как им пользоваться в работе до сих пор знают
далеко не все. Учитывая невероятную полезность этой функции, а также
множество вопросов после моего первого вебинара
на эту тему, я решила более подробно рассказать о том, как даже
поверхностное его знание может здорово помочь в повседневной работе
архитектора.
Начнем с основ
GDL (Geometric Description Language,
язык геометрического описания) – язык программирования, подобный языку
BASIC, созданный для работы в среде ARCHICAD. С его помощью описываются
объемные 3D-тела (такие как двери, окна, мебель) и 2D-символы в окне
плана этажа. Эти объекты называются Библиотечными Элементами.
Для тех, кто хоть немного знаком с программированием, освоить этот язык
не составит труда. Впрочем, при достаточном желании изучение GDL
окажется вполне по силам и человеку, далекому от этой среды.
Любой архитектор изучал в свое время
геометрию и начертательную геометрию, имеет отличное объемное мышление, а
это уже половина успеха. Не нужно сразу пытаться написать сложные
объекты, начинать стоит с основных геометрических фигур и форм; много
информации можно почерпнуть, изучая скрипты других Библиотечных
Элементов. Ну а самый главный источник информации – это справочное
руководство GDL, которое можно открыть через меню Помощь в самом ARCHICAD.
Итак, для чего архитектору может
пригодиться знание GDL? Например, в отличие от Grasshopper, при помощи
которого можно создавать сложные структуры, GDL просто незаменим для
написания различных маркеров и выносных надписей, а также при создании
специальных компонентов для других Библиотечных Элементов или
инструментов. Одним из моих первых применений GDL в работе было создание
специального филенчатого полотна двери, которое при изменении размеров
не масштабировалось во все стороны, а меняло только размеры филенки.
Толщина фигурной рамки и ширина обвязки оставались неизменными. Также
архитекторам очень часто хочется добавить какие-то простые функции в
существующие объекты стандартных библиотек – и это основная причина, по
которой начинают вникать в GDL.
Безусловно, знание GDL не является
жизненно необходимым, и многие из этих задач можно решить стандартными
инструментами. Например, можно построить филенки с обвязкой из
перекрытий и сохранить как специальное полотно двери. Если у вас таких
нестандартных дверей всего несколько штук, то так будет даже быстрее. Но
если в вашем проекте много подобных дверей разных размеров и ширина их
меняется в процессе работы, то написание специальной панели в GDL
значительно ускорит и упростит работу.
Геометрическое описание подразумевает, что любую из возможных фигур можно написать текстом по размерам или координатам.
Для 3D-скрипта есть блок команд основных пространственных фигур, таких как:
- BLOCK и BRICK — параллелепипед, строящийся по трем размерам с началом в точке 0 системы координат
BLOCK a, b, c
BRICK a, b, c
CYLIND – цилиндр вдоль оси Z, с высотой h и радиусом rCYLIND h, r
SPHERE – сфера с центром в начале координат и радиусом rSPHERE r
Похожим образом описываются эллипс и конус.
Следующий блок фигур уже сложнее – это
различные призмы. Они описываются набором координат точек. Самая простая
призма определяется количеством точек (n), высотой (h) и перечислением
координат всех точек по порядку.
PRISM n, h,
x1, y1,
…
xn, yn
Есть много разновидностей призмы. Следующий вид, PRISM_,
позволяет указывать к координатам точек коды статусов, которые
определяют видимость граней и ребер, а также позволяют создавать
криволинейные призмы и призмы с отверстиями (см. в справочнике раздел
Коды Статусов). Другой вид, BPRISM_, создает призму, закрученную вокруг оси Y. FPRISM_ строит призму с фаской или скруглением по верхней стороне.
Существует несколько команд, описывающих более сложные фигуры на основе полилиний: EXTRUDE, PYRAMID, REVOLVE, RULED, SWEEP, TUBE, COONS, MASS. Их описание с примерами можно найти в справочнике.
Для 2D-скрипта фигуры описываются
другими командами: линия, круг, прямоугольник, полилиния, сплайн. Но
можно прописать и команду для построения проекции из 3D-скрипта.
Создание 2D- или 3D-форм – это только часть функционала GDL. Если вам
нужен просто стол, то проще построить его инструментами самого ARCHICAD.
Объект пишется в случае, когда требуется какой-то параметризм:
возможность выбора разных типов ножек для стола, количества ножек,
изменение размеров стола с сохранением остальных размеров, расчет
пиломатериала для его изготовления, вес и стоимость. Объект может вообще
не содержать никакой геометрии, а только производить расчеты.
Для этого используются в том числе и Управляющие Предложения (Операторы
Управления), такие как циклы, условные операторы, обращение к
определенному месту кода (подпрограмме). С циклами и условиями лучше
ознакомиться в самом начале – используются они часто. Так, во всех
приведенных ниже примерах есть условные операторы.
ПРИМЕР №1 – поворот объекта
Часто у проектировщиков возникает
желание сделать объект поворачивающимся. На этом простом примере и
рассмотрим структуру Библиотечного Элемента, а также основные окна
Редактора Объектов GDL.
Чтобы открыть любой объект, размещенный в
пространстве проекта (если разработчик не наложил на него пароль),
нужно, выделив его, нажать комбинацию клавиш Ctrl+Shift+O. Другой способ
– воспользоваться меню Файл > Библиотеки и Объекты > Открыть Объект. Если в этот момент ни один объект не был выделен, то откроется окно для выбора объекта.
Добавим параметры поворота, например, к жалюзийной решетке (рис. 1).
Рис. 1. Первый подопытный
Рис. 2. Окно Редактора объектов GDL
Итак, мы открыли окно Редактора объектов GDL (рис. 2).
Слева вверху здесь расположено окно
просмотра разных видов, как в обычном окне параметров объекта; еще левее
кнопки для выбора вида – план, фасад, 3D-окно и предпросмотр.
Ниже располагаются кнопки для открытия
таблиц параметров, списков данных и скриптов. Скрипты можно открыть
двумя способами: кликнуть на кнопку с названием скрипта – открыть в этом
же окне, кликнуть на кнопку правее с пиктограммой окна – скрипт
откроется в отдельном окне. Это может быть полезно, чтобы одновременно
видеть разные скрипты (рис. 3).
Рис. 3. Одновременно открытые разные скрипты
Наверху в окне любого скрипта есть очень нужная кнопка Проверить:
при ее нажатии редактор подскажет, нет ли в скрипте ошибок. Сообщение
будет содержать причину ошибки и номер строки, в которой найдена ошибка.
В разделе «Детали» можно выбрать подтип объекта: специальное полотно двери, дверная ручка, рама навесной стены и так далее.
Так, специальные объекты (ручка,
полотно, рама) появятся в соответствующем окне выбора этих элементов.
При выборе какого-либо 2D-типа в объекте будут отсутствовать окна для
трехмерной геометрии. Там же выбираются типы для разных маркеров – узла,
разрезов, выносной надписи, зоны; они также появятся в соответствующих
инструментах.
В этом разделе можно заполнить описание объекта и выбрать пароль.
Далее – «Параметры», где в виде таблицы
представлены все данные, которые используются в этом объекте и которые
можно изменять во время работы над проектом.
Тут нужно добавить параметры для поворотов, которые мы позже будем использовать.
Рис. 4. Добавление параметров
Нажимаем кнопку Новый, расположенную выше таблицы (рис. 4). Появится новая строка, в которой нужно заполнить столбцы.
Первый из этих столбцов – Переменная.
Здесь мы латиницей и без пробелов пишем название переменной, которое
будет использоваться в скриптах. Именовать нужно так, чтобы было
несложно запомнить и при этом легко понять, за что эта переменная
отвечает. В нашем случае нужно создать две переменные для значения углов
поворотов по осям X и Y (вокруг оси Z объект и так можно поворачивать
прямо в плане). Я решила назвать их angle_x и angle_y.
В следующем столбце нужно выбрать тип данных. Варианты выбора представлены в таблице 1.
Таблица 1. Типы данных
Длина (в единицах модели) |
Наклон (угол в градусах) |
Действительное число (для размеров в мм листа или для коэффициентов) |
Целое число (для количественных значений) |
Логическое значение (истина/ложь или, по-простому, галочка) |
|
Покрытие |
Тип линии |
Образец штриховки |
Перо |
Разделитель |
Последние два типа не используются в
построении объекта, а нужны для большей наглядности и упорядоченности
списка в окне параметров объекта. Нам нужен угол – в таблице это вторая
пиктограмма.
Третий столбец – Имя. Тут можно без правил на любом языке написать, что именно мы хотим потом увидеть в окне параметров объекта.
И последний столбец – Значение.
Сейчас тут можно оставить 0: это значение меняется в любой момент как в
скрипте, так и в параметрах самого объекта. Как выглядят два новых
параметра в окне Редактора объектов GDL, показано на рис. 5. С помощью
стрелок в начале строки можно переместить строку в удобное место.
Рис. 5. Добавленные параметры
Затем нужно сохранить объект под новым
именем, так как стандартная библиотека зашита в контейнер, и в нем
нельзя перезаписывать объекты. Окно Параметров объекта будет теперь
выглядеть вот так (рис. 6).
Рис. 6. Новые параметры в окне Параметров объекта
Появились два новых параметра, значение
которых можно менять в любой момент. Но сейчас ничего не произойдет, так
как еще не написано никаких команд с их использованием.
Теперь нужно открыть окно 3D-скрипта.
Здесь идет полное описание построения
трехмерной модели на основе заданных параметров. Кроме того, в объект
могут быть вложены разные макросы.
Перед всеми построениями нужно повернуть
систему координат, в которой будет строиться объект. Тут важно понять
вот какую логику: все повороты, перемещения и масштабирование происходят
не так, как при работе в самом ARCHICAD. Мы не берем элемент и не
поворачиваем его, а поворачиваем глобальную систему координат (после
изменения она становится локальной) перед построением объекта.
Перемещение (команда ADD), поворот (ROT), масштабирование (MUL)
– это команды преобразования системы координат. Дальше преобразования
можно удалять в скрипте по одному, сразу по несколько либо удалить сразу
все. В справочнике все это описано достаточно подробно и с примерами.
Пример перемещения системы координат в 3D-пространстве сразу по трем осям показан на рис. 7.
ADD a, b, c
Рис. 7. Схема перемещения системы координат
Итак, перед всеми построениями
поворачиваем систему координат сначала по одной, потом по другой оси.
Поворот по оси Х выполняет команда ROTX alphax,
где alphax – угол поворота против часовой стрелки; вместо alphax нужно
вписать заранее созданную переменную. По оси Y поворот выполняется
аналогично (рис. 8).
Рис. 8. Изменение 3D-скрипта
Теперь можно задавать разные углы для
поворота – и в окне просмотра, расположенном вверху слева, будут
происходить изменения 3D-модели (рис. 9).
Рис. 9. При изменении углов меняется изображение в окне просмотра
Теперь можно задавать разные углы для
поворота – и в окне просмотра, расположенном вверху слева, будут
происходить изменения 3D-модели (рис. 9).
Но в 2D-виде пока ничего не происходит. В
2D-скрипте объект строится отдельными линиями и полилиниями, так
отрисовка объекта в плане происходит во много раз быстрее. На одном
объекте это незаметно, но если в проекте окажутся сотни таких решеток,
торможение будет существенным. Можно высчитать координаты точек этих
линий и простроить их так, как они выглядели бы в проекции повернутого
объекта, но это не очень просто и не очень быстро. В этой решетке я
предлагаю следующее решение: если углы по X или по Y не равны нулю, то
объект в 2D-скрипте, то есть для плана, будет отрисовываться как
проекция трехмерной модели, а иначе по-старому.
Проекцию модели для 2D-скрипта строит команда PROJECT2 projection_code, angle, method.
Что означают projection_code, angle, method – можно прочитать в
справочнике, мы же познакомимся с более важной командой из раздела
операторов управления IF – THEN – ELSE – ENDIF. Это операторы условий, которые помогут выстроить предложение условия из предыдущего абзаца.
На рис. 10 я выделила добавленные команды в 2D-скрипте и правее красным цветом дописала «перевод».
Рис. 10. Изменение 2D-скрипта
Теперь требуется только сохранить объект
и можно им пользоваться (рис. 11). Преимущество такого метода перед
преобразованием в морф заключается в том, что объект остается
параметрическим, его можно считать в спецификациях, в нем можно менять
размеры планок, размеры рамки и всё остальное, что было в оригинальном
объекте.
Рис. 11. Повернутые в пространстве новые объекты
Так подробно на этом примере мы рассмотрели основные окна и скрипты Редактора объектов GDL.
Если выбранный вами для поворота объект
имеет параметры не в виде списка, как в этой решетке, а в виде картинок и
схем, это означает, что разработчик написал также графический
интерфейс. Чаще всего при этом стандартный список с параметрами
скрывают, как на рис. 12: в выпадающем списке страниц параметров нет
раздела «Все параметры».
Рис. 12. В этом объекте отсутствует список всех параметров в стандартном виде
В этом случае нужно зайти в скрипт параметров и найти команду, которая прячет все параметры (рис. 13).
В этом скрипте описываются все действия, которые влияют на параметры:
- обозначение вариантов или диапазонов возможных значений (VALUES);
- какие-либо расчеты, результат которых присваивается параметру (PARAMETERS);
- скрытие или блокировка параметров (HIDEPARAMETER, LOCK).
Рис. 13. Строка в скрипте параметров, которая прячет все параметры
Строку HIDEPARAMETERS ALL
можно просто удалить либо, поставив в начале строки «!», сделать ее
нечитаемой (по синтаксису GDL строка, начинающаяся с восклицательного
знака, считается комментарием. Далее описания и переводы на скриншотах я
буду писать именно после знака «!»). После этого в списке страниц
параметров появится строка «Все параметры», и, выбрав ее, вы увидите
стандартного вида список с параметрами, среди которых будут и новые
строки для поворота.
ПРИМЕР №2 – текст на символе
Следующий пример я беру из текущего
проекта. При работе с планом многоквартирного жилого здания требовалось
на наружных блоках кондиционеров поставить букву «К» – причем так, чтобы
она всегда располагалась вертикально. Конечно, букву можно было бы
просто дописать сверху текстом или поставить выносную надпись-текст, но
тогда при повороте кондиционера, возможно, пришлось бы двигать и текст.
Для начала я добавила четыре новых параметра (рис. 14):
Рис. 14. Добавление новых параметров в объекте Кондиционер Воздуха
- Показывать текст: тип параметра – логическое значение,
что подразумевает два возможных значения: 0 (нет) и 1 (да). Таким
образом, текст можно будет включить или отключить. - Специальный текст: тип параметра – текстовый. Позволит
вписывать любой текст в символ (я намерена использовать одну букву,
чтобы она помещалась внутри прямоугольника блока кондиционера). - Шрифт: тип – текстовый. Обратите внимание – некоторые
виды написания этой переменной позволяют выбирать в столбце значения
шрифта из списка установленных на компьютере. «Fonttype» вызывает это
список автоматически, если же я напишу «typefont» или просто «font», то
придется писать название шрифта вручную. Этот момент я заметила случайно
в каком-то из стандартных объектов. - Перо текста: тип – перо. Ну, тут всё понятно.
Теперь посмотрим на пиктограммы, которые я нажала в начале строк.
У первой строки нажата пиктограмма , что означает bold – жирный. То есть эта строка в окне параметров объекта будет жирной.
У трех других – пиктограмма . Она означает, что эти строки будут вложены выпадающим списком под первую строку.
На рис. 15 – скриншот, иллюстрирующий, как это выглядит в Параметрах Объекта.
Для начала я добавила четыре новых параметра (рис. 14):
Рис. 15. Окно Параметров Объекта
А на рис. 16 – то, что я дописала в 2D-скрипте (по традиции с переводом и комментариями).
Рис. 16. Дописанные строки в 2D-скрипте
На следующем скриншоте (рис. 17) я для большей ясности подкрасила разные типы слов/команд/переменных.
Рис. 17. Дописанные строки в 2D-скрипте с пояснениями
Объект готов (рис. 18).
Рис. 18. Новые объекты на плане под разными углами
А если бы я не писала строки с поворотом и масштабированием, то объект выглядел бы так, как на рис. 19.
Рис. 19. Новые объекты на плане под разными углами без строк поворота и масштабирования
ПРИМЕР №3 – детализация
Для упрощения работ над проектом можно
при написании объекта добавить текстовый параметр с выбором из
нескольких вариантов детализации (простой, средний, детальный). И в
3D-скрипте при построении разных мелких деталей дописать условие типа:
если уровень детализации = “детально”, то
(описание построения деталей)
конец условия
Отдельного внимания заслуживают
Глобальные Переменные. В справочном руководстве они занимают 40 страниц и
для удобства поиска сгруппированы по темам. В предыдущем примере я
использовала некоторые данные об ориентации объекта в проекте. Тот же
раздел справочного руководства содержит Глобальные Переменные для
координат расположения объекта – с их помощью создаются объекты типа
выноски с координатами или отметки высоты на разрезе/фасаде.
Очень часто используется GLOB_SCALE
– масштаб чертежа (зависит от вида согласно текущему окну), при
масштабе 1:100 он равен 100, при масштабе 1:20 равен 20. Применяется
чаще всего для перевода размера шрифта в метры модели или наоборот.
Также на этот параметр можно «повесить» варианты отображения на плане.
Например, для скамейки написать в 2D-скрипте следующее:
IF GLOB_SCALE < 100 THEN PROJECT2 3, 270, 2 ELSE RECT2 0, 0, A, B ENDIF |
! если масштаб крупнее, чем 1:100, то ! строить проекцию из 3D-модели ! иначе ! строить прямоугольник размерами AxB ! конец условия |
Так на генплане в масштабе 1:500 скамьи
отобразятся прямоугольниками, а на фрагменте с более крупным масштабом
будет отрисовываться детальная проекция.
Подобный прием, но уже для трехмерной модели, используется в стандартных деревьях – если включить галочку Автоматический тип кроны.
На определенном расстоянии от камеры тип кроны меняется с детального на
простой, а с простого на эллипс. Правда, для того чтобы скрипты объекта
перечитались, нужно что-то с ними сделать – например, после смены
ракурса, выделив все деревья, открыть окно параметров объекта и, ничего
не меняя, просто нажать ОК, или нажать и отжать галочку замены покрытий.
Покажу на примере аппроксимации сферы. Вот что я написала в 3D-скрипте:
discam_x=abs(GLOB_EYEPOS_X-SYMB_POS_X) discam_y=abs(GLOB_EYEPOS_Y-SYMB_POS_Y) discam_h=sqr(discam_x^2+discam_y^2) discam_z=abs(GLOB_EYEPOS_Z-SYMB_POS_Z) discam=sqr(discam_h^2+discam_z^2) if discam<=20 then res=50 if discam<=30 and discam>20 then res=20 if discam<=40 and discam>30 then res=10 if discam>40 then res=5
resol res |
! разница в координатах позиции глаз и объекта по оси X ! разница в координатах позиции глаз и объекта по оси Y ! расстояние от глаз до объекта в плане по теореме Пифагора ! разница в координатах позиции глаз и объекта по оси Z ! расстояние от глаз до объекта в пространстве по теореме Пифагора ! если расстояние до объекта меньше или равно 20 м, то res=50 ! если расстояние до объекта меньше или равно 30 м и больше 20, то res=20 ! если расстояние до объекта меньше или равно 40 м и больше 30, то res=10 ! если расстояние до объекта больше 40, то res=5 ! задать для последующих построений аппроксимацию res |
В скрипте я использовала Глобальные Переменные GLOB_EYEPOS_X, GLOB_EYEPOS_Y, GLOB_EYEPOS_Z – это координаты расположения камеры (глаз) в 3D-окне проекта и SYMB_POS_X, SYMB_POS_Y, SYMB_POS_Z – это координаты расположения объекта в пространстве;
abs – модуль числа (убирает «-», если он есть);
sqr – квадратный корень;
^2 – возведение числа в квадрат.
В 3D-окне на разном расстоянии от камеры сфера будет строиться с разной
аппроксимацией. Для наглядности я включила каркасный режим (рис. 20).
Рис. 20. Объект с разной аппроксимацией в зависимости от расстояния в 3D-окне
Через Глобальные Переменные объект может получить:
- данные о расположении проекта (север, широта, долгота, возвышение), установленные в соответствующем диалоговом окне;
- текущий этаж и собственный этаж;
- тип текущего вида (например, в перемычках ГОСТ используется
такое условие: если тип вида – ведомость, то строить вид перемычки в
сечении с выносками позиций); в примере с решеткой можно дописать такое
условие: если тип вида – ведомость, то не поворачивать систему
координат, чтобы в любом случае в ведомости решеток был бы фронтальный
вид; - неполный показ конструкций (можно заставить объект не показывать какие-то части, если выбран показ только ядра).
В объект окна или двери можно вытащить данные о стене. Выносные
надписи могут получить очень много различной информации об элементе, с
которым они связаны, – например, флажок со слоями многослойной
конструкции или выноску с объемом элемента. И так далее 40 страниц
разных и очень полезных Глобальных Переменных.
ПРИМЕР №4 – маркер зоны
Рассмотрим, как создается собственный маркер зоны. Если создать новый объект и в разделе Детали выбрать ему подтип Паспорт Зоны, то в разделе Параметры отображаются синим цветом все специфические параметры, которые инструмент Зона передает маркеру (рис. 21).
Рис. 21. Параметры объекта подтипа Паспорт Зоны
При помощи команды TEXT2 можно написать
любую из этих переменных в 2D-скрипте – так получится маркер, состоящий
только из текста (рис. 22).
Рис. 22. 2D-скрипт с использованием переменных зоны
Используя общие параметры маркера зоны, можно определить текстовый стиль и высоту строки, зависящую от высоты шрифта:
DEFINE STYLE «ROOM» AC_TextFont_1,ROOM_LSIZE,5,0 STYLE «ROOM» row = ROOM_LSIZE/1000*GLOB_SCALE*1.5 |
! определение текстового стиля ! назначение текстового стиля |
text2 0, row, text2 0, 0, text2 0, -row, |
ROOM_NUMBER ROOM_NAME ROOM_AREA |
Можно создать новый параметр для выбора
типа маркера (рис. 23), задать ему варианты в скрипте Параметров (рис.
24) и в 2D-скрипте прописать разные виды отрисовки маркера для разных
типов.
Рис. 23. Добавление параметра для типа маркера
Рис. 24. Скрипт Параметров – варианты значений параметра «mt»
2D-скрипт:
if mt="маркер с номером" then<br /> text2 0, 0, ROOM_NUMBER<br /> CIRCLE2 0,0,row<br /> endif<br /> if mt="номер и площадь" then<br /> text2 0, row/2, ROOM_NUMBER<br /> text2 0, -row/2, AREA_TEXT<br /> endif<br /> if mt="название и площадь" then<br /> text2 0, row/2, ROOM_NAME<br /> text2 0, -row/2, AREA_TEXT<br /> endif<br /> if mt="номер, название и площадь" then<br /> text2 0, row, ROOM_NUMBER<br /> text2 0, 0, ROOM_NAME<br /> text2 0, -row, AREA_TEXT<br /> endif<br /> if mt="только площадь" then<br /> text2 0, 0, AREA_TEXT<br /> endif
В этом скрипте в качестве площади я не
использовала заранее определенную переменную площади зоны, а
преобразовала площадь в текст и добавила к ней единицы измерения:
area = str (ROOM_AREA, 4, 2) AREA_TEXT = area + » кв.м.» |
! преобразования числа в текст с 2 знаками после запятой ! добавление к строковому значению букв “кв.м.” |
Можно дополнить строки в маркере
линиями, разделяющими некоторые строки. Чтобы найти длину строки, нужно
использовать команду STW. Допишем в начале скрипта:
tl1=stw(ROOM_NUMBER) /1000*GLOB_SCALE
tl2=stw(ROOM_NAME) /1000*GLOB_SCALE
tl3=stw(AREA_TEXT) /1000*GLOB_SCALE
if mt=»номер и площадь» if mt=»номер, название и площадь» if mt=»название и площадь» if mt=»только площадь» |
then tl= MAX (tl1, tl3) then tl= MAX (tl1, tl2) then tl= MAX (tl2, tl3) then tl= tl3 |
И в вариантах маркеров допишем линии командой LINE2 (рис. 25).
Рис. 25. 2D-скрипт
Если номер зоны состоит из нескольких
цифр, для маркера можно создать параметр радиуса окружности, независимый
от высоты шрифта, или же вместо окружности описать фигуру наподобие
эллипса, длиной равной длине строки номера зоны, которую мы нашли ранее:
POLY2_ 5, 1+2+4,
-tl1 /2, row, 1,
tl1 /2, row, 1,
tl1 /2, -row, 1001,
-tl1 /2, -row, 1, -tl1 /2, row, 1001
Можно добавить новый параметр для типа
пола (FLOOR_TYPE) и параметр, позволяющий скрывать или показывать его
(ShowFloorType), а в 2D-скрипте дописать треугольник полилинией и текст с
типом пола:
if ShowFloorType then
ADD2 0, row*3
POLY2_ 4, 1,
-row*1.4, -row*0.8, 1,
row*2.8, 60, 201,
row*1.4, -row*0.8, 1,
0, 0, 700
text2 0,0, FLOOR_TYPE
endif
Для типа пола желательно добавить
отдельный параметр для пера, а также точки для графического
редактирования расположения маркера пола. О том, как добавлять точки
графического редактирования, я подробно рассказывала в своем вебинаре, а по ссылке в конце статьи можно скачать объекты и посмотреть, как это реализовано в данном конкретном случае.
И напоследок рассмотрим еще один очень важный подтип объекта, который
открывает большие возможности, – Глобальные Параметры Библиотеки (рис.
26).
Рис. 26. Выбор подтипа объекта «Глобальные Параметры Библиотеки»
Объект с этим подтипом ничего не строит и
не чертит, он определяет параметры в модельных видах. Таким образом,
туда можно вынести те параметры, которые хотелось бы видеть общими у
объекта, но при этом иметь возможность выставить разное значение для
разных видов.
Покажу это на примере маркера зоны. Мне попадались проекты, в которых
было несколько комплектов зон в разных слоях для разных видов. Если есть
потребность в разных маркерах, то Глобальные Параметры Библиотеки –
лучшее решение.
У меня есть маркер, в котором есть возможность ставить тип пола в
треугольнике и менять тип маркировки (рис. 27). И эти два параметра
вынесены в отдельный файл подтипа Глобальные Параметры Библиотеки (рис.
28).
Рис. 27. Зона со специальным маркером в окне плана
Рис. 28. Параметры объекта подтипа «Глобальные Параметры Библиотеки»
Чтобы эти параметры отобразились в диалоговом окне Параметры Модельного Вида,
нужно прописать их в скрипте Интерфейса объекта (рис. 29). Не буду
подробно задерживаться на специальных командах для этого скрипта, они
достаточно подробно и с примерами описаны в справочнике. Скажу только,
что тут мы описываем, в каком месте поля графического интерфейса будет
располагаться та или иная надпись или кнопка (поле с выбором вариантов,
галочка и т.д.), в Пользовательский Интерфейс можно вставлять и
изображения. В стандартной библиотеке почти каждый объект имеет
графический интерфейс; вы можете увидеть все возможности и посмотреть,
как написаны эти скрипты. Кроме кнопки Проверить скрипт имеет еще и кнопку Просмотр. Нажав на нее, можно быстро увидеть, что получается.
Рис. 29. Скрипт интерфейса объекта подтипа «Глобальные Параметры Библиотеки»
Можно сохранить объект и посмотреть его в диалоговом окне Параметры Модельного Вида (рис. 30). Здесь мы сможем менять тип маркировки сразу для всех зон в проекте (с этим маркером), но отдельно для разных видов.
Рис. 30. Новая вкладка Глобальных Параметров в диалоговом окне Параметры Модельного Вида
Теперь в объекте маркера зоны нужно запросить у объекта значения этих двух параметров.
В Основном Скрипте (который читается объектом первым, поэтому все
расчеты и определения значений, которые должны применяться в нескольких
скриптах, лучше писать тут) пишу две вот такие строки:
success1 = LIBRARYGLOBAL («LibraryGlobals20», «ShowFloorType», ShowFloorType)
success2 = LIBRARYGLOBAL («LibraryGlobals20», «mt», mt)
«success» будет равен 1, если запрос выполнен успешно; в противном случае будет 0.
Это можно использовать для того, чтобы вместо маркера зоны написать
предупреждающее сообщение о том, что в библиотеку не подгружен объект
LibraryGlobals20.
Дальше объект работает как обычно, используя два новых значения: если тип маркировки такой-то, то писать то-то и то-то и т.д.
В этой статье я осветила лишь малую
часть возможностей GDL. С его помощью можно создавать как совсем простые
элементы для оформления, так и очень сложные объекты.
Например, вы занимаетесь небольшими и простыми домами из СИП-панелей. У
вас есть определенный список вариантов изменений проекта:
- длина и ширина дома может быть от 2,4 до 24 метров с шагом 1,2 м;
- если ширина превышает 6 м, то посередине должна стоять еще одна стена;
- два варианта высоты этажа в зависимости от типоразмера панели;
- этажность – один или два этажа;
- окна могут быть в определенных местах панелей, определенного размера;
- отделка фасадов в трех вариантах;
- кровельное покрытие в трех вариантах;
- толщина стен нескольких типоразмеров
- и так далее.
Вы можете задать все эти параметры
для объекта, дописав еще стоимость за квадратный метр панели, кровли,
отделки и т.д. А в 2D- и 3D-скриптах объекта полностью выстроить и
вычертить этот дом с переменными вместо статичных размеров. Чтобы
пользователь не запутался в длинном списке параметров, можно написать
графический интерфейс на несколько страниц с картинками и схемами.
В Основном Скрипте посчитать все объемы и вывести стоимость. Еще можно в
2D-скрипте рядом с планом вывести таблицу с раскроем панелей. Написание
такого объекта потребует немало времени, нужно будет составить
детальное ТЗ, предусмотреть все нюансы, но зато вы получите не просто
объект, а почти программу, в которой выбором параметров можно будет
получить комплект эскизного проекта с расчетом материалов и стоимости
для заказчика.
Надеюсь, этим обзором я кого-то
заинтересовала возможностями GDL. Моя история началась с острого желания
изменить какую-то мелочь в каком-то стандартном маркере зоны, и чем
больше я вчитываюсь в справочник, тем больше раскрывается потенциал
этого инструмента, на мой взгляд, очень полезного для архитектора.
По ссылке ниже можно скачать все объекты, которые рассматривались в качестве примеров в этой статье:
Скачать примеры
Примечание. Для написания этих объектов использовался ARCHICAD 20, поэтому в более ранних версиях они не откроются.
О GRAPHISOFT
Компания GRAPHISOFT® в 1984 году совершила BIM революцию, разработав ARCHICAD®
— первое в индустрии САПР BIM-решение для архитекторов. GRAPHISOFT
продолжает лидировать на рынке архитектурного программного обеспечения,
создавая такие инновационные продукты, как BIMcloud™ — первое в мире решение, направленное на организацию совместного BIM-проектирования в режиме реального времени, EcoDesigner™
— первое в мире полностью интегрированное приложение, предназначенное
для энергетического моделирования и оценки энергоэффективности зданий и BIMx®
— лидирующее мобильное приложение для демонстрации и презентации
BIM-моделей. С 2007 года компания GRAPHISOFT входит в состав концерна Nemetschek Group.
Идя навстречу многочисленным пожеланиям профессиональных пользователей ArchiCAD, компания Graphisoft локализовала на русский язык документацию «Справочное руководство GDL», которая входит в официальный комплект поставки программы ArchiCAD и поставляется в электронном виде на DVD диске в межплатформенном PDF-формате.
Переведенное справочное руководство касается последней модификации языка GDL (Geometric Description Language, встроенном языке программы ArchiCAD), содержащейся в ArchiCAD версии 11, затрагивает все аспекты программирования, описывает все заложенные в язык команды и управляющие директивы. Это самое полное руководство по программированию на языке GDL.
Бесплатно скачать документацию «Справочное руководство GDL ArchiCAD 11» вы можете с русскоязычного веб-сайта, посвященного программе ArchiCAD – www.openbim.ru. Успехов в написании библиотек под ArchiCAD!
О языке GDL
Объекты, написанные на языке GDL (Geometric Description Language, встроенном языке программы ArchiCAD) — это самый оптимальный способ описания строительных конструкций и изделий для их дальнейшего использования в системах проектирования и программах для эксплуатационных служб. GDL объекты могут содержать различную информацию: 2D чертеж/символ объекта и его 3D геометрию, информацию об изделии и его характеристики, параметры, структуру и конструкцию изделия, покрытие и т.д.
С помощью языка GDL вы можете разрабатывать рекламные каталоги своей продукции и распространять их на выставках, торговых точках, Интернет — привлеките внимание проектировщиков к продукции вашей фирмы!
Скачать Справочное руководство GDL ArchiCAD 11
О компании Graphisoft
Компания Graphisoft – ведущий разработчик технологии Виртуального Здания (Virtual BuildingTM) и решений, основанных на этой технологии. Она предложила сообществу проектировщиков основанный на 3D-моделировании способ проектирования, обеспечивший лучшее представление о проекте, сделавший конструкции более предсказуемыми, а операции менее дорогостоящими. Официальный сайт компании: www.graphisoft.com. Cайт на русском языке: www.openbim.ru
-
GDL ArchiCAD 11
-
Graphisoft — Graphisoft http://www.graphisoft.com . GDL ArchiCAD
11 2007 Graphisoft, . , . ArchiCAD ArchiFM , PlotMaker, Virtual
Building, StairMaker GDL — Graphisoft. .http://www.graphisoft.com
-
GDL ArchiCAD 11 3
GDL (Geometric Description Language — ), Graphisoft. , ,
ArchiCAD Graphisoft. GDL, , , .. -
4 GDL ArchiCAD 11
-
GDL ArchiCAD 11 5
__________________________ 5
________________________ 13 . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 13 . . . . . . . . . . . . . . . . . .
. . . . 13 . . . . . . . . . . . . . . . 13, . . . . . . . . . . .
. . . . 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 15 . . . . . . . . . . . . . . . . . . . . . . . . .
. . 15 . . . . . . . . . . . . . . . . . . . . 16 . . 18 GDL . . .
. . . . . . . . 19 . . . . 19 ArchiCAD . . . . . . . . . . . . . 20
? . . . . . . . . 20 GDL . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 21 GDL- . . . . . . . . . . . . . . . . . . 21GDL _______________________ 23 . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 23 . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 23 . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 23 . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 23 . . . . . . . . . . . . . . . .
. . . . . . . . . 24 . . . . . . . . . . . . . . . . . . . . . . .
. . 24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25. . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 . . .
. . . . . . . . . . . . . . . . . . . . 26____________ 27 . 27 28 . . . . . . . . 31
____________ 33 . . . . . . 33BLOCK . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 33BRICK . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 33CYLIND . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 33SPHERE . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 34ELLIPS . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34CONE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 35PRISM . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 35PRISM_ . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 36CPRISM_ . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39BPRISM_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 40FPRISM_ . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 41HPRISM_ . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 43SPRISM_ . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 43SLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 46SLAB_ . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 46CSLAB_ . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47CWALL_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 47BWALL_ . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 49 -
6 GDL ArchiCAD 11
XWALL_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 51XWALL_{2} . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 53BEAM . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 55CROOF_ . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 55MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 58ARMC . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 59ARME . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60ELBOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 60 61HOTSPOT . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 61LIN_ . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61RECT
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 62POLY . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 62POLY_ . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 62PLANE . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63PLANE_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 63CIRCLE . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 63ARC . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64, . . .
. 64EXTRUDE . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 66PYRAMID . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 69REVOLVE . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 71RULED . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74RULED{2} . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 75SWEEP . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 77TUBE . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 80TUBEA . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . 84COONS . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 86MASS . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 89 . . . . . . . . . .
. . . . . . . . . 91LIGHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .91PICTURE . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .93 . . . . . . . . . . . .
94TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .94RICHTEXT . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .95 . . . . . . . . . . . . . .
. . . . . 95VERT . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .96TEVE . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .96VECT . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .96EDGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .97PGON . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .97PIPG . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98COOR
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .98BODY . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .100BASE . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .102 3D . . . . . .
. . . . . . . . . . . . 102CUTPLANE . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .102CUTPOLY . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .104CUTPOLYA . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.106CUTSHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .108CUTFORM . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .108 . . . . . 110GROUP . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.114ENDGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .114ADDGROUP . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .114SUBGROUP . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .114ISECTGROUP . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .114ISECTLINES . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.114PLACEGROUP . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .115KILLGROUP . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .115 -
GDL ArchiCAD 11 7
SWEEPGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 116 . . . . . . . 116_________________ 119 . . . . . . . . . . . . . . . . . . . .
119HOTSPOT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 119LINE2 . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 119RECT2 . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 120POLY2 . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
120POLY2_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 121POLY2_A . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 122POLY2_B . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 122POLY2_B{2} . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
122POLY2_B{3} . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 123ARC2 . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 123CIRCLE2 . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 124SPLINE2 . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
124SPLINE2A . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 126PICTURE2 . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 127PICTURE2{2} . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 127 . . . . . . . . . . .
. . . . . . . . . . 127TEXT2 . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 127RICHTEXT2 . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 128 . . . . . .
. . . . . . . . . . . . . . . . 128FRAGMENT2 . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 128FRAGMENT2 . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 .
129PROJECT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 129PROJECT2{2} . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 129PROJECT2{3} . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 132. . . 133DRAWING2 . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 133DRAWING3 . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 133DRAWING3{2} . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 134DRAWING3{3}
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
134_________ 135 . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 135HOTSPOT . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 135HOTLINE2 . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 140HOTARC2 . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
140______________________ 141 . . . . . . . . . . . . . . . . 141 .
. . . . . . . . . . 143 : . . . . . . . . . . . . . . . . . . . .
143 . 143 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 144 . . . . . . . . . . . . . . . . 144 . . .
. . . . . . . . 145 . . . . . . . . . . . . . . . . . . . . 145 . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 146 . . . . .
. . . . . . . . . . . . . . . . 146 . . . . . . . . . . . . . . . .
. . . . . . . . 147, . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 147, . . . . . . . . . . . . . . . .
. . . . . . . . 148 . 148 -
8 GDL ArchiCAD 11
. . . . . . . . . . . . . . . . . . . . . 149 . . . . . . . . .
. . . . . 149__________________________ 153 . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 153, 3D- 2D- . . . . . 153[LET] . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 153RADIUS . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 154RESOL . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 155TOLER . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 156PEN . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 156LINE_PROPERTY . . . . . . . . . . . . . . . . . . . . . . .
. . . . 157[SET] STYLE . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 157SET STYLE 0 . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 157, 3D- . . . . 157MODEL . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 157[SET] MATERIAL . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 158SECT_FILL . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 159SHADOW . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 160, 2D- . . . . 161DRAWINDEX . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 161[SET] FILL . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 161[SET] LINE_TYPE . . . . . .
. . . . . . . . . . . . . . . . . . . . . 162. . . . . . . . . . . . . . . . . 162 . . . . . . . . . . . . .
. . . . . . . . . . . 163DEFINE MATERIAL . . . . . . . . . . . . . . . . . . . . . . . .
. . 163DEFINE MATERIAL BASED_ON . . . . . . . . . . . . . . .
165DEFINE TEXTURE . . . . . . . . . . . . . . . . . . . . . . . . .
. 166. . . . . . . . . . . . . . . . . . . . . . . 168DEFINE FILL . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168DEFINE
FILLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
171DEFINE SYMBOL_FILL . . . . . . . . . . . . . . . . . . . . . .
173DEFINE SOLID_FILL . . . . . . . . . . . . . . . . . . . . . . .
. .174DEFINE EMPTY_FILL . . . . . . . . . . . . . . . . . . . . . .
. .174. . . . . . . . . . . . . . . . . . . . . . .175DEFINE LINE_TYPE
. . . . . . . . . . . . . . . . . . . . . . . . .175DEFINE
SYMBOL_LINE . . . . . . . . . . . . . . . . . . . . . . .175. . . . . . . . . . . . . . . . . . . . . . . . . . . .176DEFINE
STYLE . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.176DEFINE STYLE {2} . . . . . . . . . . . . . . . . . . . . . . .
. . . .177. . . . . . . . . . . . . . . . . . . . . . . . . . .177 . . . .
. . . . . . . . . . . . . .178 . . . . . . . . . . . . . . . . . .
. . . . . .179. . . . . . . . . . . . . .180
___________ 181 . . . . . . . . . . . . . . . . . . . .
181DATABASE_SET . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .181DESCRIPTOR . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .182REF DESCRIPTOR . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .182COMPONENT . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .182REF COMPONENT . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .183BINARYPROP . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.183SURFACE3D ( ) . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .183VOLUME3D ( ) . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .183POSITION . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .184DRAWING . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 . . .
. . . . . . . . . . . . . . . . . . . . 185VALUES . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.185PARAMETERS . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .186LOCK . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .187HIDEPARAMETER . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .187 . . . . . . . . . 187 -
GDL ArchiCAD 11 9
UI_DIALOG . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 187UI_PAGE . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 187UI_CURRENT_PAGE . . . . . . . . .
. . . . . . . . . . . . . . . . . 188UI_BUTTON . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 188UI_SEPARATOR . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
189UI_GROUPBOX . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 189UI_PICT . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 189UI_STYLE . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 190UI_OUTFIELD . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 190UI_INFIELD
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
191UI_INFIELD {2} . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 191UI_INFIELD{3} . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 191UI_TOOLTIP . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 194_______________ 195 . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 195DIM . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 195VARDIM1(expr) . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 196VARDIM2(expr) .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 . . . .
. . . . . . . . . . . . . . . . 198 . . . . . . . . . . . . . . . .
. . . . . . . . . 198 . . . . . . . . . . . . . . . . . . . . . . .
. . 198 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 199 . . . . . . . . . . . . . . . . . . . . . . 199ABS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 199CEIL . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 199INT . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 199FRA . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
199ROUND_INT . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 199SGN . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 199SQR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 199 . . . . . . . . . . . . . . . . . . . 200ACS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 200ASN . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 200ATN . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 200COS . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
200SIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 200TAN . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 200PI . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 200. . . . . . . . . . . . . . . . . . . . . . 200EXP . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
200LGT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 200LOG . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 201. . . . . . . . . . . . . . . . . . . . . . . . . . . 201NOT . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 201. . . . . . . . . . . . . . . . . . . . . . . 201MIN . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
201MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 201RND . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 201. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
201BITTEST . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 201BITSET . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 201. . . . . . . . . . . . . . . . . . . . . . . . . 202 . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 202STR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 202STR . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 202STR{2} . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 202SPLIT . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
205STW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 206STRLEN . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 206STRSTR . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 206STRSUB . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 207 -
10 GDL ArchiCAD 11
__________ 209 . . . . . . . 209FOR . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 209NEXT . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 209DO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 210IF . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 212GOTO . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
213GOSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 213RETURN . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 213END / EXIT . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 214 . . . 214 . .
. . . . . . . . . . . . . . . . . . . . . . . . 218 . . . . . . . .
. . . . 220 . . . . . . . . . . 220OPEN . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 221INPUT . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 221VARTYPE . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 221OUTPUT . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 221CLOSE . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 222_____________________________ 223 . . . . . . . . . . . . . . .
. . 223 . . . . . . . . . . . . . . . 223 . . . . . . . . . . . . .
. . . . . . . . . . . 224 . . . . . . . . . . . . . . . . . . . . .
. . . . 224 . . . . . . . . . . . . . . . . . . . 225 , , . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 226 . . . . . . . . . . 226 , , —. . . . .227 — . . . . . . . . . . . . . .227 , . . . . . . . .
. . . .227 — . . . . . . . . . . . . . . . . . . . . . . . . . .
.228 — . . . . . . . . . . . . . . . . . . . . .229 . . . . . . . .
. . . . . . . . . .230 — . . . . .231 — . . . . . . . . . . . . . .
. . . . . . . . . . . . . .233 — . . . . . . . . . . . . . . . . .
. . . . . . . . . . .234 — . . . . . . . . . . . . . . . . . . . .
. . . . . . . .236 — . . . . . . . . . . . . . . . . . . . . . . .
. . . . .237 — . . . . . . . . . . . . . . . . . . . . . . . . . .
. .238 — . . . . . . . . . . . . . . . . . . . .239 3D- — . . . . .
. . . . . . . . . . . . . . . . . . . . . . .240 . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .241 . . . . . . . . .
. . . . . . . .243 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 245REQ . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .245REQUEST . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .246 . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 257 . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .257 -
GDL ArchiCAD 11 11
. 2583D- . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 258 . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 258 . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 260WALLHOLE . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 260WALLNICHE . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 264. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 265 . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 2672D- . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 268. . . . . . . 268WALLHOLE2 . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 268WALLBLOCK2 . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 269WALLLINE2 . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 269GDL, . . 270 . . . . . . . . . . . . . . . . . . . . . . . . 271
. . . . . . . . . . . . . . . . . . . . . . . . 271 . . . . . . . .
. . . . . . . . . . . 271 3D- . . . . . . . . . . . . 272 2D- . . .
. . . . . . 274 2D- 3D- . . . . . 275 . . . . . . 275. . . . . . . . . . . . . . . . . . . . . . . 275 . . . . . . .
. . . . . . . . . . . . . . . . . . 276 . . . . . . . . . . . . . .
. . . . . . . . . . . 276GDL . . . . . . . . . . 277A . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 277B . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277C
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 278D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 281E . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 283F . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283G .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 284H . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 284I . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 284K . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 285L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 285M . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 285N . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286O .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 286P . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 287R . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 289S . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 292T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 293U . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 294V . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295W
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 296X . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 296. . . . . . . . . . 298 GDL Data In/Out . . . . . . . . . . . .
. . 298 . . . . . . . . . . . . . . . . . . . . . . . . . 298 . . .
. . . . . . . . . . . . . . . . . . . . . . 299 . . . . . . . . . .
. . . . . . . . 300 . . . . . . . . . . . . . . . . . . . . . . . .
. . 301 . . . . . . . . . . . . . . . . . . . . . . . . . 301 GDL
DateTime . . . . . . . . . . . . . . . . 302 . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 302 . . . . . . . . . . . . .
. . . . . . . . . . . . . . 303 . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 303 GDL File Manager I/O . . . . . . . . .
. 304 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
304 -
12 GDL ArchiCAD 11
/ . . . . . . . . . . . . . . . . . . 304 . . . . . . . . . . .
. . . . . . . . 305 GDL Text I/O . . . . . . . . . . . . . . . . .
306 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 309 Property
GDL . . . . . . . . . . . . . . . . . 310OPEN . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 310CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .311INPUT . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .311OUTPUT . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .313 GDL XML .
. . . . . . . . . . . . . . . . . . . 314 XML . . . . . . . . . . .
. . . . . . . . . . . .315 XML . . . . . . . . . . . . . . . . . .
. . . . . . .316 XML . . . . . . . . . . . . . . . . . . . . .
.319_______________ 323
-
GDL ArchiCAD 11 13
GDL — , BASIC. 3D-, , , , , 2D-, . .
, , , GDL. GDL . GDL . , . , BASIC, GDL . , , , GDL 2D- 3D-. , ,
, GDL . BASIC, , GDL. 3D-, . . » » ArchiCAD.Graphisoft GDL .
«Object Making With ArchiCAD» . «GDL Cookbook» GDL . GDL Graphisoft
; — Graphisoft.GDL , GDL, 3D- 2D-. ArchiCAD. .
-
14 GDL ArchiCAD 11
2D- 2D-. 2D- ( 2D-) FRAGMENT2. 2D- , 2D- .3D- 3D-. 3D- ( )
BINARY. , , . , BINARYPROP. , . , . ., , . . 2D- 3D- PICTURE
PICTURE2. .ArchiCAD ArchiFM GDL-, , ., , . , , . GDL. , , . : .
-
GDL ArchiCAD 11 15
, , . , , . . . . , , .
. , , , , . , , , 2D-. 2D-, 2D-. 3D-, 3D- 2D-, . . 3D- 2D-. ,
.. — , , .
GDL , . GDL. GDL. , , , . . , .
-
16 GDL ArchiCAD 11
GDL :
3D:BLOCK CYLIND SPHERE PRISM
2D:LINE2 RECT2 POLY2 CIRCLE2 ARC2
, — , — . , .BLOCK 1, 0.5, 0.5ADDX 1.5ROTY 30BLOCK 1, 0.5, 0.5
3D- ( G = ) (L = ) . :3D:ADDX ADDY ADDZROTX ROTY ROTZ
2D:ADD2 ROT2 ADD , ROT — .
, , , .
3D:ELLIPS CONEPOLY_ LIN_ PLANE PLANE_PRISM_ CPRISM_ SLAB SLAB_
CSLAB_TEXTLG
Z
Z
X
Y
X
Y
-
GDL ArchiCAD 11 17
2D:HOTSPOT2 POLY2_ TEXT2 FRAGMENT2 . .
3D:MULX MULY MULZADD MUL ROT
2D:MUL2PRISM 4, 1, 3, 0,
3, 3, -3, 3,-3, 0
ADDZ -1MUL 0.666667, 0.666667, 1PRISM 4, 1, 3, 0,
3, 3, -3, 3,-3, 0
ADDZ -1MUL 0.666667, 0.666667, 1PRISM 4, 1, 3, 0,
3, 3, -3, 3,-3, 0
MUL , , , , . . .
-
18 GDL ArchiCAD 11
, , , .
3D:BPRISM_ BWALL_ CWALL_ XWALL_CROOF_ FPRISM_ SPRISM_ EXTRUDE
PYRAMID REVOLVE RULEDSWEEP TUBE TUBEA COONSMESH MASSLIGHT PICTURE ,
. . ( ) , . CUTPLANE, CUTPOLY, CUTPOLYA, CUTSHAPE CUTEND.2D-PICTURE2 POLY2_ASPLINE2 SPLINE2_A
FOR NEXTDO WHILE ENDWHILEREPEAT UNTILIF THEN ELSE ENDIF GOTO
GOSUBRETURN END EXIT , , , . , , . -
GDL ArchiCAD 11 19
FOR I = 1 TO 5PRISM_ 8, 0.05,
-0.5, 0, 15,-0.5, -0.15, 15,0.5, -0.15, 15,0.5, 0, 15,0.45, 0,
15,0.45, -0.1, 15,-.45, -0.1, 15,-0.45, 0, 15ADDZ 0.2NEXT I
GDL . . .
GDL . GDL-. , .
GDL , .
: , , , GDL-, .
GDL. , , .
3D- ArchiCAD ; , — . , .
-
20 GDL ArchiCAD 11
3D-, , . ArchiCAD . 3D- 3D-. : ; , ; , . , , . 3D-. ArchiCAD — ,
, — .ArchiCAD3D- , x, y z ; (). ArchiCAD — , . , . x y . z 3D. . , ,
.? GDL . , BLOCK , . . , BLOCK , . , ? . BLOCK . BLOCK. / . ,
. -
GDL ArchiCAD 11 21
GDL GDL- ArchiCAD , , , . . , — , . 3D- , , , . ArchiCAD ArchiFM
GDL. , , , . . GDL- . , (, DXF, Zoom, Alias Wavefront), 3D-
ArchiCAD. GDL BINARY.GDL- ArchiCAD , . GDL- ; , , . GDL- , MASTER_GDL MASTEREND_GDL.,
MASTER_GDL, , /, , ., MASTEREND_GDL, , /, ( , , , ). . , ,
.MASTER_GDL- MASTEREND_GDL- , , 3D- ( 3D-), (. VALUES . 185), GDL.
ArchiCAD ( ArchiCAD , , GDL, ArchiCAD, , ArchiCAD). -
22 GDL ArchiCAD 11
-
GDL ArchiCAD 11 23
GDL GDL, , , , . .
GDL GDL , . , . , . GDL END EXIT, .
GDL . ( GDL, , ), , «=» .
, ( _). (,) , . (:) GDL, . (!) , . . . .
, . — , , (:). . . . GOTO GOSUB.
GDL- , : _() ~ ! : , ; . + * / ^ = < > = # ( ) [ ]{ } @
& |( ) » ‘ ` ‘ -
GDL
24 GDL ArchiCAD 11
Unicode, (, , `, ), , (, , ). , , , . — 255 . ArchiCAD, GDL,
Unicode, , . . :\ \n t new line . 1′-6″*1′-2′ ‘— : 255 ; ‘_’ ‘~’; , ‘_’ ~; . GDL, (). ArchiCAD, .
GDL ( ), . : .
-
GDL
GDL ArchiCAD 11 25
, , , , , . , 0 (). . . ( ArchiCAD . 223). , . , . , , . . , ,
MASTER_GDL. ArchiCAD. =, ., , . 32 . , . GDL A..Z.
, : . , , , , . . , , , , , . — , , , , ( ), . , , , . , , , , (
‘=’ », AND, OR, EXOR; IF GOTO, ). , , , , . -
GDL
26 GDL ArchiCAD 11
, . / , , . — . , MASTER_GDL, .
[aaa] , ( , , ).
{n} .
… .
variable GDL.
prompt , .
_
_
, .
______ GDL.
-
GDL ArchiCAD 11 27
, GDL (, , ), .
GDL . GDL . , , , z. . -, . -, . , . . . . , , , . , , . .
ADD, MUL ROTZ .
ADD2ADD2 x, y
:ADD2 a, b
X
Y
X
Y
b
a
-
28 GDL ArchiCAD 11
MUL2MUL2 x, y
ROT2ROT2 alpha
:ROT2 beta
ADDXADDX dx
ADDYADDY dy
ADDZADDZ dz
dx, dy dz .
X
Y
X
Y
beta
-
GDL ArchiCAD 11 29
ADDADD dx, dy, dz
ADDX dx: ADDY dy: ADDZ dz. , DEL 1.:ADD a,b,c
MULXMULX mx
MULYMULY my
MULZMULZ mz
. mx, my, mz ( ).
MULMUL mx, my, mz
MULX mx: MULY my: MULZ mz. , DEL 1.
c
b
Z
a
Z
Y
Y
X
X
-
30 GDL ArchiCAD 11
ROTXROTX alphax
ROTYROTY alphay
ROTZROTZ alphaz
alphax, alphay, alphaz .:
ROTZ beta
ROTROT x, y, z, alpha
, (x,y,z), alpha . , DEL 1.
XFORMXFORM a11, a12, a13, a14,
a21, a22, a23, a24,a31, a32, a33, a34
. GDL . .
Y
X
X
Z
Y
beta
-
GDL ArchiCAD 11 31
x’ = a11 * x + a12 * y + a13 * z + a14y’ = a21 * x + a22 * y +
a23 * z + a24z’ = a31 * x + a32 * y + a33 * z + a34:A=60B=30XFORM
2, COS(A), COS(B)*0.6, 0,0, SIN(A), SIN(B)*0.6, 0,0, 0, 1, 0
BLOCK 1, 1, 1
DEL nDEL n [, begin_with]
n . begin_with , n , . , . begin_with , n , begin_with. 1.
begin_with , . n , , . -
32 GDL ArchiCAD 11
DEL TOPDEl TOP
.
NTRNTR ()
.: BLOCK 1, 1, 1ADDX 2ADDY 2.5ADDZ 1.5ROTX -60ADDX 1.5BLOCK 1,
0.5, 2DEL 1, 1 ! ADDX 2BLOCK 1, 0.5, 1DEL 1, NTR() -2 ! ADDZ
1.5BLOCK 1, 0.5, 2DEL -2, 3 ! ROTX -60! ADDY 2.5BLOCK 1, 0.5, 2
-
GDL ArchiCAD 11 33
GDL , . ( , ), . , 3D-, , , , .
BLOCKBLOCK a, b, c
BRICKBRICK a, b, c
, , a, b , z. ( ). : a, b, c >= 0
CYLINDCYLIND h, r
z, h , . h=0, -. r=0, z.
Y
b
X
Z
a
c
r
Z
Y
X
r
Z
Y
X
h
-
34 GDL ArchiCAD 11
SPHERESPHERE r
r.
ELLIPSELLIPS h, r
. — . , z, h.:ELLIPS r, r !
Y
X
Z
r
rY
Z
X
h
-
GDL ArchiCAD 11 35
CONECONE h, r1, r2, alpha1, alpha2
. alpha1 alpha2 z; r1 r2 , h — z. h=0, alpha1 alpha2 , — .alpha1
alpha2 . :0 < alpha1 < 180 0 < alpha2 < 180:CONE h, r,
0, 90, 90 !PRISMPRISM n, h, x1, y1, … xn, yn
x-y (. POLY . 62 POLY_ . 62). z abs(h). h. -. : n >= 3
r2
r1Y
Z
X
Y Y
Z
Y
halpha1
alpha2
Y
n
Z
X 12
h
-
36 GDL ArchiCAD 11
PRISM_PRISM_ n, h, x1, y1, s1, … xn, yn, sn
CPRISM_ , . : n >= 3si: , .
.
. . 141 .:
PRISM_ 4,1, PRISM_ 4,1,0,0,15, 0,0,7,1,1,15, 1,1,5,2,0,15,
2,0,15,1,3,15 1,3,15 -
GDL ArchiCAD 11 37
ROTX 90PRISM_ 26, 1.2,
0.3, 0, 15,0.3, 0.06, 15,0.27, 0.06, 15,0.27, 0.21, 15,0.25,
0.23, 15,-0.25, 0.23, 15,-0.27, 0.21, 15,-0.27, 0.06, 15,-0.3,
0.06, 15,-0.3, 0, 15,0.3, 0, -1, ! 0.10, 0.03, 15,0.24, 0.03,
15,0.24, 0.2, 15,0.10, 0.2, 15,0.10, 0.03, -1, ! 0.07, 0.03,
15,0.07, 0.2, 15,-0.07, 0.2, 15,-0.07, 0.03, 15,0.07, 0.03, -1, !
-0.24, 0.03, 15,-0.24, 0.2, 15,-0.1, 0.2, 15,-0.1, 0.03, 15,-0.24,
0.03, -1 ! -
38 GDL ArchiCAD 11
j7 = 0 j7 = 1R=1H=3PRISM_ 9, H, -R, R, 15, COS(180)*R,
SIN(180)*R, 15, COS(210)*R, SIN(210)*R, 15, COS(240)*R, SIN(240)*R,
15, COS(270)*R, SIN(270)*R, 15, COS(300)*R, SIN(300)*R, 15,
COS(330)*R, SIN(330)*R, 15, COS(360)*R, SIN(360)*R, 15, R, R,
15ADDX 5PRISM_ 9, H, -R, R, 15, COS(180)*R, SIN(180)*R, 64+15,
COS(210)*R, SIN(210)*R, 64+15, COS(240)*R, SIN(240)*R, 64+15,
COS(270)*R, SIN(270)*R, 64+15, COS(300)*R, SIN(300)*R, 64+15,
COS(330)*R, SIN(330)*R, 64+15, COS(360)*R, SIN(360)*R, 64+15, R, R,
15 -
GDL ArchiCAD 11 39
CPRISM_CPRISM_ top_material, bottom_material, side_material,
n, h, x1, y1, s1, … xn, yn, sn
PRISM_. / , . PRISM_. : n >= 3. . 163.si: , .
.. . 141 .:
CPRISM_ «», 0, T_, !»» — !0 — .!T_ — !( )
13, 0.2,0, 0, 15,2, 0, 15,2, 2, 15,0, 2, 15,0, 0, -1, ! 0.2,
0.2, 15,1.8, 0.2, 15,1.0, 0.9, 15,0.2, 0.2, -1, ! 0.2, 1.8, 15,1.8,
1.8, 15,1.0, 1.1, 15,0.2, 1.8, -1 ! -
40 GDL ArchiCAD 11
BPRISM_BPRISM_ top_material, bottom_material, side_material,
n, h, radius, x1, y1, s1, … xn, yn, sn
, , CPRISM_. radius. CPRISM_ — , . . . z .. BWALL_ . 49 .si: ,
... . 141 . ( BPRISM_ CPRISM_):BPRISM_ «», «», «», 3, 0.4, 1, ! =
1 0, 0, 15, 5, 0, 15, 1.3, 2, 15 -
GDL ArchiCAD 11 41
BPRISM_ «», «», «», 17, 0.3, 5,
0, 7.35, 15, 0, 2, 15, 1.95, 0, 15, 8, 0, 15, 6.3, 2, 15, 2, 2,
15, 4.25, 4, 15, 8, 4, 15, 8, 10, 15, 2.7, 10, 15, 0, 7.35, -1, 4,
8.5, 15, 1.85, 7.05, 15, 3.95, 5.6, 15, 6.95, 5.6, 15, 6.95, 8.5,
15, 4, 8.5, -1FPRISM_FPRISM_ top_material, bottom_material, side_material,
hill_material,n, thickness, angle,hill_height,x1, y1, s1,…xn, yn, sn
PRISM_ ::hill_material, angle hill_height parameters.
.hill_material: . -
42 GDL ArchiCAD 11
angle: . : 0 = 3, hill_height < thicknesssi: , .
.. . 141 .
.RESOL 10FPRISM_ » «, » «, » «, » «,
4, 1.5, 0, 1.0, ! = 00, 0, 15,5, 0, 15,5, 4, 15,0, 4, 15
1
n
2
hill_height
thickness
angle
-
GDL ArchiCAD 11 43
FPRISM_ » «, » «, » «, » «,
10, 2, 45, 1,0, 0, 15,6, 0, 15,6, 5, 15,0, 5, 15,0, 0, -1,1, 2,
15,4, 2, 15,4, 4, 15,1, 4, 15,1, 2, -1HPRISM_HPRISM_ top_mat, bottom_mat, side_mat,
hill_mat,n, thickness, angle, hill_height, status,x1, y1,
s1,…,xn, yn, snFPRISM_, , . status: : 0: (FPRISM_). 1: .
SPRISM_SPRISM_ top_material, bottom_material, side_material,
n, xb, yb, xe, ye, h, angle,x1, y1, s1, … xn, yn, sn
CPRISM_. -. CROOF_. ( ). .
-
44 GDL ArchiCAD 11
xb, yb, xe, ye: (),angle: , (
),si: ,
. .
. . 141 .: z- 0.
:SPRISM_ », », »,
6,0, 0, 11, 6, 2, -10.0,0, 0, 15,10, 1, 15,11, 6, 15,5, 7,
15,4.5, 5.5, 15, 1, 6, 15SPRISM_{2} top_material, bottom_material, side_material, n,xtb,
ytb, xte, yte, topz, tangle,xbb, ybb, xbe, ybe, bottomz, bangle,x1,
y1, s1, mat1,…xn, yn, sn, matnSPRISM_ , x-y. CROOF_. ( ). . :xtb, ytb, xte, yte: () ,topz: ‘z’
,tangle: , ( ),xbb, ybb, xbe, ybe: () ,n
h
1
2
(x ,y )b b(x ,y )ee
angle
-
GDL ArchiCAD 11 45
bottomz: ‘z’ ,bangle: , ( ),si: , .
.. . 141 .
mati: , .
:SPRISM_{2} », », », 11,
0, 0, 11, 0, 30, -30.0,0, 0, 0, 11, 2, 30.0,
0, 0, 15, IND (MATERIAL, ‘C10’),10, 1, 15, IND (MATERIAL,
‘C11’),11, 6, 15, IND (MATERIAL, ‘C12’),5, 7, 15, IND (MATERIAL,
‘C13’),4, 5, 15, IND (MATERIAL, ‘C14’),1, 6, 15, IND (MATERIAL,
‘C10’),0, 0, -1, IND (MATERIAL, ‘C15’),9, 2, 15, IND (MATERIAL,
‘C15’),10, 5, 15, IND (MATERIAL, ‘C15’),6, 4, 15, IND (MATERIAL,
‘C15’),9, 2, -1, IND (MATERIAL, ‘C15’) -
46 GDL ArchiCAD 11
SLABSLAB n, h, x1, y1, z1, … xn, yn, zn
. -. , , x-y. h. . , , . , , . :n >= 3
SLAB_SLAB_ n, h, x1, y1, z1, s1, … xn, yn, zn, sn
SLAB , . PRISM_.si: , .
.
. . 141 .
Y
Z
X
-
GDL ArchiCAD 11 47
CSLAB_CSLAB_ top_material, bottom_material, side_material,
n, h, x1, y1, z1, s1, … xn, yn, zn, sn
SLAB_; / , . , SLAB_.. . 163, . 245 > IND . 223.si: , .
.
. . 141 .
CWALL_CWALL_ left_material, right_material, side_material,
height, x1, x2, x3, x4, t,mask1, mask2, mask3, mask4,n,x_start1,
y_low1, x_end1, y_high1, frame_shown1, …x_startn, y_lown, x_endn,
y_highn, frame_shownn,m, a1, b1, c1, d1,…am, bm, cm, dmleft_material, right_material, side_material: / , . ( x.)
. . 163 . 245 > IND. ,
x. x-z. height: .
-
48 GDL ArchiCAD 11
x1, x2, x3, x4: , x-y (. . ). , x1 = x4 = 0, x2 = x3 = ,
t: . , t < 0. (), t > 0, » ,
t = 0.mask1, mask2, mask3, mask4:
.maski = j1 + 2*j2 + 4*j3 + 8*j4 j1, j2, j3, j4 0 1. j1, j2, j3,
j4 , (1) (0).n: .x_starti, y_lowi, x_endi, y_highi: . .
frame_showni values:1 — ;0 — . .
frame_showni = -(1*j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 +
64*j7 + 128*j8), j1, j2… j8 0 1. j1 j4 , j5 j8 — , . , , , ,
.x4 x2x3x1
Y
X
t
j4
j3
Z
X
Y
j1
mask 1
j2
mask 4 mask 2
mask 3
X
Z
i
i
i
i
heig
ht
x_start
x_end
y_lo
w y_hi
gh
-
GDL ArchiCAD 11 49
m: . ai, bi, ci, di: :
[ai*x + bi*y + ci*z = di]. , ( ai*x + bi*y + ci*z > di) .
BWALL_BWALL_ left_material, right_material, side_material,
height, x1, x2, x3, x4, t, radius,mask1, mask2, mask3,
mask4,n,x_start1, y_low1, x_end1, y_high1,
frame_shown1,…x_startn, y_lown, x_endn, y_highn, frame_shownn,m,
a1, b1, c1, d1,…am, bm, cm, dm, , CWALL_. radius. CWALL_ x-z , . , . z . (. : RADIUS . 154,
RESOL . 155 TOLER . 156). . CWALL_ . 47 .j4
j3
j1
j2
j5
j7
j6
j8
Y
Z
X
[ai, bi, ci]
-
50 GDL ArchiCAD 11
: BWALL_ CWALL_.
ROTZ -60BWALL_ 1, 1, 1,
4, 0, 6, 6, 0,0.3, 2,15, 15, 15, 15,5,1, 1, 3.8, 2.5, -255,1.8,
0, 3, 2.5, -255,4.1, 1, 4.5, 1.4, -255,4.1, 1.55, 4.5,
1.95,-255,4.1, 2.1, 4.5, 2.5, -255,1, 0, -0.25, 1, 3 -
GDL ArchiCAD 11 51
XWALL_XWALL_ left_material, right_material,
vertical_material,horizontal_material,height, x1, x2, x3, x4,y1, y2, y3, y4,t, radius,log_height,
log_offset,mask1, mask2, mask3, mask4,n,x_start1, y_low1, x_end1,
y_high1,frame_shown1, …x_startn, y_lown, x_endn,
y_highn,frame_shownn,m, a1, b1, c1, d1,…am, bm, cm, dm,status, BWALL_. vertical_material, horizontal_material: / ,y1, y2, y3,
y4: — ( ).Y
Xy3
y1
y2
y4
x1 x2 x3 x4
-
52 GDL ArchiCAD 11
log_height, log_offset: , . .
status: .status = j1 + 2*j2 + 4*j3 + 32*j6 + 64*j7 + 128*j8 +
256*j9j1: .j2: .j3: ,j6: ,j7: .j8: .j9: .:XWALL_ «», «», «», «»,3.0,0.0, 4.0, 4.0, 0.0,0.0, 0.0, 0.3,
1.2,1.2, 0.0,0.0, 0.0,15, 15, 15, 15,3,0.25, 0.0, 1.25, 2.5,
-255,1.25, 1.5, 2.25, 2.5, -255,2.25, 0.5, 3.25, 2.5, -255, 0logoffset
logheight
-
GDL ArchiCAD 11 53
XWALL_{2}XWALL_{2} left_material, right_material,
vertical_material,horizontal_material,height, x1, x2, x3, x4,y1, y2, y3, y4, t, radius,log_height,
log_offset,mask1, mask2, mask3, mask4,n,x_start1, y_low1, x_end1,
y_high1,sill_depth1, frame_shown1, …x_startn, y_lown, x_endn,
y_highn,sill_depthn, frame_shownn,m, a1, b1, c1, d1,…am, bm, cm,
dm,status, XWALL_. silldepthi: . j9 frame_showni ,
; silldepthi .
frame_showni = -(1*j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 +
64*j7 + 128*j8 + 256*j9 + 512*j10), . j1, j2 … j8 , CWALL_ XWALL_. j9 . j9 1, . j10 —
-
54 GDL ArchiCAD 11
, . j10 1, — : — . :ROTZ 90xWALL_{2} «C13», «C11», «C12»,
«C12»,2, 0, 4, 4, 0,0, 0, 1, 1,1, 0,0, 0,15, 15, 15, 15,1,1, 0.9, 3,
2.1, 0.3, -(255 + 256),0,0BODY -1DEL 1ADDX 2xWALL_{2} «C13», «C11», «C12», «C12»,
2, 0, 2 * PI, 2 * PI, 0,0, 0, 1, 1,0, 0,15, 15, 15, 15,1,1.6,
0.9, 4.6, 2.1, 0.3, -(255 + 256),0,0BODY -1
ADDX 4xWALL_{2} «C13», «C11», «C12», «C12»,
2, 0, 2 * PI, 2 * PI, 0,0, 0, 1, 1,1, 2,0, 0,15, 15, 15,
15,1,1.6, 0.9, 4.6, 2.1, 0.3, -(255 + 256 + 512),0,0 -
GDL ArchiCAD 11 55
BEAMBEAM left_material, right_material, vertical_material,
top_material, bottom_material,height, x1, x2, x3, x4,y1, y2, y3, y4, t,mask1, mask2, mask3,
mask4. XWALL_. top_material, bottom_material: .:BEAM 1, 1, 1, 1,
1,0.3, 0.0, 7.0, 7.0, 0.0,0.0, 0.0, 0.1, 0.1, 0.5,15, 15, 15,
15CROOF_CROOF_ top_material, bottom_material, side_material,
n, xb, yb, xe, ye, height, angle, thickness,x1, y1, alpha1,
s1,…,xn, yn, alphan, sn.top_material, bottom_material, side_material: / ,
.n: .xb, yb, xe, ye: ().height: (
).angle:
, . .thickness: , .
-
56 GDL ArchiCAD 11
xi, yi: the .alphai: , i-o
, , . : -90 < alphai < 90. , . , , , , — .
si: , . .
. . 141 . :n >= 3.CROOF_ 1, 1, 1, !
9,0, 0,1, 0, ! (xb,yb)(xe,ye)0.0, ! -30, ! 2.5, ! 0, 0, -60,
15,10, 0, 0, 15,10, 20, -30, 15,0, 20, 0, 15,0, 0, 0, -1,2, 5, 0,
15,8, 5, 0, 15,5, 15, 0, 15,2, 5, 0, -1 -
GDL ArchiCAD 11 57
L=0.25R=(0.6^2+L^2)/(2*L)A=ASN(0.6/R)CROOF_ » «, «», «»,
16, 2, 0, 0,0, 0, 45, -0.2*SQR(2),0, 0, 0, 15,3.5, 0, 0, 15,3.5,
3, -45, 15,0, 3, 0, 15,0, 0, 0, -1,0.65, 1, -45, 15,1.85, 1, 0,
15,1.85, 2.4-L, 0, 13,1.25, 2.4-R, 0, 900,0, 2*A, 0, 4015,0.65, 1,
0, -1,2.5, 2, 45, 15,3, 2, 0, 15,3, 2.5, -45, 15,2.5, 2.5, 0,
15,2.5, 2, 0, -1 -
58 GDL ArchiCAD 11
MESHMESH a, b, m, n, mask,
z11, z12, … z1m,z21, z22, … z2m,…zn1, zn2, … znm
D- . b. n m , . zij .:mask = j1 + 4*j3 + 16*j5 + 32*j6 + 64*j7
j1, j3, j5, j6, j7 0 1.j1 (1): .j3 (4): .j5 (16): .j6 (32): ,j7
(64): ,. :m >= 2, n >= 2
.MESH 50, 30, 5, 6, 1+4+16+32+64,
2, 4, 6, 7, 8,10, 3, 4, 5, 6,7, 9, 5, 5, 7, 8, 10, 9, 4, 5,6, 7,
9, 8, 2,4, 5, 6, 8, 6i
n
m1
Y
Zij
1
Z
X
jb
a
-
GDL ArchiCAD 11 59
MESH 90,100, 12,8, 1+4+16+32+64,
17,16,15,14,13,12,11,10,10,10,10, 9, 16,14,13,11,10, 9, 9,
9,10,10,12,10, 16,14,12,11, 5, 5, 5, 5, 5,11,12,11, 16,14,12,11, 5,
5, 5, 5, 5,11,12,12, 16,14,12,12, 5, 5, 5, 5, 5,11,12,12,
16,14,12,12, 5, 5, 5, 5, 5,11,13,14,
17,17,15,13,12,12,12,12,12,12,15,15,
17,17,15,13,12,12,12,12,13,13,16,16ARMCARMC r1, r2, l, h, d, alpha
, . . . . alpha . :r1 >= r2 + dr1
-
60 GDL ArchiCAD 11
ARMEARME l, r1, r2, h, d
, y-z. . . . :r1 >= r2+dl >= h*(1-(r2-d)2/r12):ELLIPS
3,4FOR i=1 TO 6 ARME 6,4,0.5,3,3.7-0.2*i ROTZ 30NEXT iELBOWELBOW r1, alpha, r2
x-z ( ). r1, alpha, 2. alpha . :r1 > r2
Z
Y
r2
l
h
r1
d
Z
X
r1alp
ha
r2
-
GDL ArchiCAD 11 61
:ROTY 90ELBOW 2.5, 180, 1ADDZ -4CYLIND 4, 1ROTZ -90MULZ -1ELBOW
5, 180, 1DEL 1ADDX 10CYLIND 4, 1ADDZ 4ROTZ 90ELBOW 2.5, 180,1, , 3D- , , , .
HOTSPOT HOTSPOT x, y, z [, unID [, paramReference, flags] [,
displayParam]]3D (x, y, z). unID: 3D-. ,
. paramReference: ,
.displayParam: ,
paramRefrence. .. . 135 HOTSPOT.
LIN_ LIN_ x1, y1, z1, x2, y2, z2
, P1 (x1,y1,z1) P2 (x2,y2,z2).
-
62 GDL ArchiCAD 11
RECT RECT a, b
— b. : a, b >= 0
POLY POLY n, x1, y1, … xn, yn
n . i- (xi, yi, 0). : n >= 3
POLY_ POLY_ n, x1, y1, s1, … xn, yn, sn
POLY , . si = 0, , (xi,yi), . si = 1, . si = -1 , . .. . 143
.: n >= 3
X
Y
a
b
n
X
1 32
Y
n
X
1 32
Y
n
X
1 32
Y
-
GDL ArchiCAD 11 63
PLANE PLANE n, x1, y1, z1, … xn, yn, zn
n . i- (xi, yi, zi). , , . : n >= 3
PLANE_ PLANE_ n, x1, y1, z1, s1, … xn, yn, zn, sn
PLANE , , POLY_, . .. . 143. : n >= 3
CIRCLE CIRCLE r
— r.
r
-
64 GDL ArchiCAD 11
ARC ARC r, alpha, beta
( ) ( ) x-y , alpha beta, r. alpha beta .
, D- . , . , , PRISM_ CYLIND., : EXTRUDE PYRAMID REVOLVE, :
RULED SWEEP TUBE TUBEA -. (. ). ( RULED SWEEP) . ., :COONS,
:MASSalpha
beta
Y
X
-
GDL ArchiCAD 11 65
( RULED). ( , ).
. .
, , . , .mask = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7
j1, j2, j3, j4, j5, j6, j7 0 1. j1, j2, j3, j4 , (1) (0) . j5, j6,
j7 , (1) ,(0), .j1: .j2: ,.j3: ,.j4: .j5: .j6: .j7: / , . , 127.
, .0: / , , .1: / , , .
-
66 GDL ArchiCAD 11
-1: EXTRUDE: , .
.. . 143 . 3D- 1. 0 , . .
EXTRUDEEXTRUDE n, dx, dy, dz, mask, x1, y1, s1,
…, xn, yn, sn
. — . (dx, dy, dz). PRISM SLAB. , -. , PRISM_. .n: .mask: , (
).si: , .
.
:n > 2:mask = j1 + 2*j2 + 4*j3 + 16*j5 + 32*j6 j1, j2, j3,
j5, j6 0 1j1 (1): .j2 (2): .j3 (4): ( ) .j5 (16): .Z
X 1
2
n
Y
j1
j2
j3
j5
j6
-
GDL ArchiCAD 11 67
j6 (32): . :0: , , .1: , , .-1: ,
. .. . 143 ..EXTRUDE 14, 1, 1, 4, 1+2+4+16+32,
0, 0, 0,1, -3, 0,2, -2, 1,3, -4, 0,4, -2, 1,5, -3, 0,6, 0, 0,3,
4, 0,0, 0, -1,2, 0, 0,3, 2, 0,4, 0, 0,3, -2, 0,2, 0, -1 -
68 GDL ArchiCAD 11
A=5: B=5R=2: S=1C=R-SD=A-RE=B-REXTRUDE 28, -1, 0, 4,
1+2+4+16+32,0, 0, 0,D+R*SIN(0), R-R*COS(0), 1,D+R*SIN(15), R-R*COS(15),
1,D+R*SIN(30), R-R*COS(30), 1,D+R*SIN(45), R-R*COS(45),
1,D+R*SIN(60), R-R*COS(60), 1,D+R*SIN(75), R-R*COS(75),
1,D+R*SIN(90), R-R*COS(90), 1,A, B, 0,0, B, 0,0, 0, -1,C, C,
0,D+S*SIN(0), R-S*COS(0), 1,D+S*SIN(15), R-S*COS(15),
1,D+S*SIN(30), R-S*COS(30), 1,D+S*SIN(45), R-S*COS(45),
1,D+S*SIN(60), R-S*COS(60), 1,D+S*SIN(75), R-S*COS(75),
1,D+S*SIN(90), R-S*COS(90), 1,A-C,B-C,0,R-S*COS(90), E+S*SIN(90),
1,R-S*COS(75), E+S*SIN(75), 1,R-S*COS(60), E+S*SIN(60),
1,R-S*COS(45), E+S*SIN(45), 1,R-S*COS(30), E+S*SIN(30),
1,R-S*COS(15), E+S*SIN(15), 1,R-S*COS(0), E+S*SIN(0), 1,C, C,
-1 -
GDL ArchiCAD 11 69
PYRAMIDPYRAMID n, h, mask, x1, y1, s1, … xn, yn, sn
. x-y. (0, 0, h).n: .mask: ( )
.si: . :h > 0 n > 2:mask = j1 + 4*j3 + 16*j5 j1, j3, j5 0
1j1 (1): .j3 (4): ( ) .j5 (16): . :0: , , .1: , , . .. . 143 .1
Z
2
n
X
j3
j1
Y
j5
h
-
70 GDL ArchiCAD 11
:PYRAMID 4, 1.5, 1+4+16,
-2, -2, 0,-2, 2, 0,2, 2, 0,2, -2, 0
PYRAMID 4, 4, 21,-1, -1, 0,1, -1, 0,1, 1, 0,-1, 1, 0
ADDX -1.4ADDY -1.4GOSUB 100ADDX 2.8GOSUB 100ADDY 2.8 GOSUB
100ADDX -2.8GOSUB 100END100:PYRAMID 4, 1.5, 21,-0.25, -0.25, 0,0.25, -0.25, 0,0.25, 0.25, 0,-0.25, 0.25, 0
RETURN
-
GDL ArchiCAD 11 71
REVOLVEREVOLVE n, alpha, mask, x1, y1, s1, … xn, yn, sn
x-y .n: . alpha: .mask: , (
alpha < 360) .si: . :n >= 2yi >= 0.0yi yi + 1 ( )
0.:mask = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7 j1,
j2, j3, j4, j5, j6, j7 0 1j1 (1): .j2 (2): .j3 (4): .j4 (8): .j5
(16): .j6 (32): .j7 (64): , . :0: , , .1: , , .2: ArchiCAD/ArchiFM
Z-buffer, , , .
j6
j1
j3
j2
j4
1
n
Z
2
Y
j5
alpha
-
72 GDL ArchiCAD 11
. . , 0.
.. . 143 .REVOLVE{2} n, alphaOffset, alpha, mask, siedMat, x1,
y1, s1, mat1, …xn, yn, sn, matnREVOLVE, .alphaOffset: .alpha: , .sideMat: .mati: , i- .:
-
GDL ArchiCAD 11 73
ROTY -90REVOLVE 22, 360, 1+64,
0, 1.982, 0,0.093, 2, 0,0.144, 1.845, 0,0.220, 1.701, 0,0.318,
1.571, 0,0.436, 1.459, 0,0.617, 1.263, 0,0.772, 1.045, 0,0.896,
0.808, 0,0.987, 0.557, 0,1.044, 0.296, 0,1.064, 0.030, 0,1.167,
0.024, 0,1.181, 0.056, 0,1.205, 0.081, 0,1.236, 0.096, 0,1.270,
0.1, 0,1.304, 0.092, 0,1.333, 0.073, 0,1.354, 0.045, 0,1.364,
0.012, 0,1.564, 0, 0 -
74 GDL ArchiCAD 11
2: 2:ROTY -90 ROTY -90REVOLVE 26, 180, 16+32, REVOLVE 18, 180,
48,7, 1, 0, 7, 1, 0,6.0001, 1, 1, 6, 1, 2,6, 1, 0, 5.5, 2,
2,5.9999, 1.0002, 1, 5, 1, 2,5.5001, 1.9998, 1, 4, 1, 2,5.5, 2, 0,
3+COS(15), 1+SIN(15), 1,5.4999, 1.9998, 1, 3+COS(30), 1+SIN(30),
1,5.0001, 1.0002, 1, 3+COS(45), 1+SIN(45), 1,5, 1, 0, 3+COS(60),
1+SIN(60), 1,4.9999, 1, 1, 3+COS(75), 1+SIN(75), 1,4.0001, 1, 1, 3,
2, 1, 4, 1, 0, 3+COS(105), 1+SIN(105), 1,3+COS(15), 1+SIN(15), 1,
3+COS(120), 1+SIN(120), 1,3+COS(30), 1+SIN(30), 1, 3+COS(135),
1+SIN(135), 1,3+COS(45), 1+SIN(45), 1, 3+COS(150), 1+SIN(150),
1,3+COS(60), 1+SIN(60), 1, 3+COS(165), 1+SIN(165), 1,3+COS(75),
1+SIN(75), 1, 2, 1, 2,3, 2, 1, 1, 1, 03+COS(105), 1+SIN(105),
1,3+COS(120), 1+SIN(120), 1,3+COS(135), 1+SIN(135), 1,3+COS(150),
1+SIN(150), 1,3+COS(165), 1+SIN(165), 1,2, 1, 0,1.9999, 1, 0,1, 1,
0RULEDRULED n, mask,
u1, v1, s1, … un, vn, sn,x1, y1, z1, … xn, yn, zn
-
GDL ArchiCAD 11 75
RULED{2}RULED{2} n, mask,
u1, v1, s1, … un, vn, sn,x1, y1, z1, … xn, yn, zn
RULED — , , . . GDL, . , RULED{2}, ( ), , . ( RULED , .)n:
.mask: , ,. , , .
ui, vi: .si: .xi, yi, zi: . :n > 1:mask = j1 + 2*j2 + 4*j3 +
16*j5 + 32*j6 + 64*j7 j1, j2, j3, j5, j6, j7 0 1.j1 (1): .j2 (2): (
, ).j3 (4): ( ) ( ).j5 (16): .j6 (32): .j7 (64): , . :0: , , .j3
j61
n
j2
j5
1
Z
2
n
Xj1
Y
2
-
76 GDL ArchiCAD 11
1: , , .:
R=3RULED 16, 1+2+4+16+32,
COS(22.5)*R, SIN(22.5)*R, 0,COS(45)*R, SIN(45)*R, 0,COS(67.5)*R,
SIN(67.5)*R, 0,COS(90)*R, SIN(90)*R, 0,COS(112.5)*R, SIN(112.5)*R,
0,COS(135)*R, SIN(135)*R, 0,COS(157.5)*R, SIN(157.5)*R,
0,COS(180)*R, SIN(180)*R, 0,COS(202.5)*R, SIN(202.5)*R,
0,COS(225)*R, SIN(225)*R, 0,COS(247.5)*R, SIN(247.5)*R,
0,COS(270)*R, SIN(270)*R, 0,COS(292.5)*R, SIN(292.5)*R,
0,COS(315)*R, SIN(315)*R, 0,COS(337.5)*R, SIN(337.5)*R,
0,COS(360)*R, SIN(360)*R, 0,COS(112.5)*R, SIN(112.5)*R,
1,COS(135)*R, SIN(135)*R, 1,COS(157.5)*R, SIN(157.5)*R,
1,COS(180)*R, SIN(180)*R, 1,COS(202.5)*R, SIN(202.5)*R,
1,COS(225)*R, SIN(225)*R, 1,COS(247.5)*R, SIN(247.5)*R,
1,COS(270)*R, SIN(270)*R, 1,COS(292.5)*R, SIN(292.5)*R,
1,COS(315)*R, SIN(315)*R, 1,COS(337.5)*R, SIN(337.5)*R,
1,COS(360)*R, SIN(360)*R, 1,COS(22.5)*R, SIN(22.5)*R, 1,COS(45)*R,
SIN(45)*R, 1,COS(67.5)*R, SIN(67.5)*R, 1,COS(90)*R, SIN(90)*R,
1 -
GDL ArchiCAD 11 77
SWEEPSWEEP n, m, alpha, scale, mask,
u1, v1, s1, … un, vn, sn,x1, y1, z1, … xm, ym, zm
, . . x-y. , z x-y. (xi, yi, zi) (xi-1, yi-1, zi-1) (xi, yi,
zi).SWEEP , , , .n: . m: .alpha:.scale: p
.mask: ,
.ui, vi: .si: .xi, yi, zi: . :n > 1m > 1z1 < z2
-
78 GDL ArchiCAD 11
:mask = j1 + 2*j2 + 4*j3 + 16*j5 + 32*j6 + 64*j7 j1, j2, j3, j5,
j6, j7 0 1j1 (1): .j2 (2): .j3 (4): .j5 (16): .j6 (32): .j7 (64):
,. :0: , , .1: , , .
j3
j2
j5
j6
2
1
Z
2
n
Xj1
Y
m
1
-
GDL ArchiCAD 11 79
.. . 143 .:
SWEEP 4, 12, 7.5, 1, 1+2+4+16+32,-0.5, -0.25, 0,0.5, -0.25,
0,0.5, 0.25, 0,-0.5, 0.25, 0,0, 0, 0.5,0, 0, 1,0, 0, 1.5,0, 0, 2,0,
0, 2.5,0, 0, 3,0, 0, 3.5,0, 0, 4,0, 0, 4.5,0, 0, 5,0, 0, 5.5,0, 0,
6 -
80 GDL ArchiCAD 11
TUBETUBE n, m, mask,
u1, w1, s1,… un, wn, sn,x1, y1, z1, angle1,… xm, ym, zm,
anglem, . U-W U-V-W. V: . W: V z. U: V W . V , W . W . , , (u1, w1,
… un, wn). , , ( , ). .n: .m: .ui, wi: .si: .xi, yi, zi: .: , . , TUBE. , , . , : , , TUBE .
anglei: .
-
GDL ArchiCAD 11 81
:mask = j1 + 2*j2 + 16*j5 + 32*j6 + 64*j7 j1, j2, j5, j6, j7 0
1j1 (1): .j2 (2): .j5 (16): ( x2, y2, z2).j6 (32): ( xm-1, ym-1, zm-1)
.j7 (64):
, .
:n > 2 m > 3 :0: , , .1: , , . .. ArchiCAD 11.
W
U
Wm
m-1
21
alpha
V
U
-
82 GDL ArchiCAD 11
:
TUBE 4, 18, 16+32,
2.0, 0.0, 0,0.0, 0.0, 0,0.0, 0.4, 0,2.0, 0.4, 0,-1, 0, 0, 0,0,
0, 0, 0,4, 0, 0.1, 0,6, 0, 0.15, 0,6+4*SIN(15), 4 — 4*COS(15), 0.2, 0,6+4*SIN(30), 4 — 4*COS(30),
0.25, 0,6+4*SIN(45), 4 — 4*COS(45), 0.3, 0,6+4*SIN(60), 4 —
4*COS(60), 0.35, 0,6+4*SIN(75), 4 — 4*COS(75), 0.4, 0,10, 4, 0.45,
0,6+4*SIN(105), 4 — 4*COS(105), 0.5, 0,6+4*SIN(120), 4 —
4*COS(120), 0.55, 0,6+4*SIN(135), 4 — 4*COS(135), 0.6,
0,6+4*SIN(150), 4 — 4*COS(150), 0.65, 0,6+4*SIN(165), 4 —
4*cos(165), 0.7, 0,6, 8, 0.75, 0,0, 8, 1, 0,-1, 8, 1, 0 -
GDL ArchiCAD 11 83
TUBE 14, 6, 1+2+16+32, 0, 0,0, 0.03, 0,0, 0.03, 0.02, 0, 0.06,
0.02, 0, 0.05, 0.0699, 0, 0.05, 0.07, 1, 0.05, 0.15, 901, 1, 0,
801, 0.08, 90, 2000, 0.19, 0.15, 0, 0.19, 0.19, 0, 0.25, 0.19, 0,
0.25, 0.25, 0, 0, 0.25, 0, 0, 1, 0, 0, 0, 0.0001, 0, 0, 0, 0, 0, 0,
-0.8, 0, 0, 0, -0.8, 0.0001, 0, 0, -0.8, 1, 0, 0TUBE 3, 7, 16+32,
0, 0, 0, -0.5, 0, 0, 0, 0.5, 0,0.2, 0, -0.2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 3, 0, 5, 0, 3, 4, 5, 0,
3, 4, 0, 0, 3, 3.8, -0.2, 0 -
84 GDL ArchiCAD 11
TUBEATUBEA n, m, mask,
u1, w1, s1,… un, wn, sn,x1, y1, z1,… xm, ym, zm
TUBEA — , , TUBE. , (u1, w1, … un, wn) , — . . — REVOLVE., , .
.. . 143 .: -
GDL ArchiCAD 11 85
TUBEA 9, 7, 1 + 2 + 16 + 32, -1, 1, 0, 0, 2, 0, 0.8, 2, 0, 0.8,
1.6, 0, 0.8001, 1.6, 1, 3.2, 1.6, 0, 3.2, 2, 0, 4, 2, 0, 5, 1, 0,
0, -7, 0, 0, 0, 0, 4, 0, 1, 9, 3, 2.25, 9, 10, 2.25, 14, 10, 2.25,
20, 15, 5 -
86 GDL ArchiCAD 11
COONSCOONS n, m, mask,
x11, y11, z11, … x1n, y1n, z1n,x21, y21, z21, … x2n, y2n,
z2n,x31, y31, z31, … x3m, y3m, z3m,x41, y41, z41, … x4m, y4m,
z4m, .:mask = 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7 j3, j4, j5, j6,
j7 0 1j3 (4): 1- (x1, y1, z1) .j4 (8): 2- (x2, y2, z2) .j5 (16): 3-
(x3, y3, z3) .j6 (32): 4- (x4, y4, z4) .j7 (64): , . :n, m >
14(m)
2(n)
3(m)
1(n)
Z
Y
X
-
GDL ArchiCAD 11 87
:COONS 6, 6, 4+8+16+32+64, ! 1- , n=6 0, 0, 5, 1, 0, 4, 2, 0, 3,
3, 0, 2, 4, 0, 1, 5, 0, 0, ! 2- , n=6 0, 5, 0, 1, 5, 1, 2, 5, 2, 3,
5, 3, 4, 5, 4, 5, 5, 5, ! 3- , m=6 0, 0, 5, 0, 1, 4, 0, 2, 3, 0, 3,
2, 0, 4, 1, 0, 5, 0, ! 4- , m=6 5, 0, 0, 5, 1, 1, 5, 2, 2, 5, 3, 3,
5, 4, 4, 5, 5, 5 -
88 GDL ArchiCAD 11
ROTZ -90ROTY 90COONS 7, 6, 4+8+16+32+64, ! 1- , n=7 1, 2, 0,
0.5, 1, 0, 0.2, 0.5, 0, -0.5, 0, 0, 0.2, -0.5, 0, 0.5, -1, 0, 1,
-2, 0, ! 2- , n=7 6, 10, -2, 6.5, 4, -1.5, 5, 1, -1.2, 4, 0, -1, 5,
-1, -1.2, 6.5, -4, -1.5, 6, -10, -2, ! 3- , m=6 1, 2, 0, 2, 4,
-0.5, 3, 6, -1, 4, 8, -1.5, 5, 9, -1.8, 6, 10, -2, ! 4- , m=6 1,
-2, 0, 2, -4, -0.5, 3, -6, -1, 4, -8, -1.5, 5, -9, -1.8, 6, -10,
-2 -
GDL ArchiCAD 11 89
MASSMASS top_material, bottom_material, side_material,
n, m, mask, h,x1, y1, z1, s1,… xn, yn, zn, sn,xn+1, yn+1,
zn+1, sn+1,… xn+m, yn+m, zn+m, sn+m3D- ArchiCAD.top_material, bottom_material, side_material: / ,
.n: .m: .h: ( ).xi, yi, zi: .si: PRISM_... . 143 .:mask = j1 + 4*j3 + 16*j5 + 32*j6 + 64*j7 j1, j3, j5,
j6, j7 0 1j1 (1): .j3 (4): .j5 (16): .j6 (32): .j7 (64): ,,j8 (128): ,
.
i
n
m1
Y
Zij
1
Z
X
jb
a
-
90 GDL ArchiCAD 11
:n >=3, m >= 0:MASS «», «», «», 15, 12, 117, -5.0, 0, 12,
0, 15, 8, 12, 0, 15, 8, 0, 0, 15, 13, 0, 0, 13, 16, 0, 0, 13, 19,
0, 0, 13, 23, 0, 0, 13, 24, 0, 0, 15, 24, 12, 0, 15, 28, 12, 0, 15,
28, 20, 8, 13, 28, 22, 8, 15, 0, 22, 8, 15, 0, 20, 8, 13, 0, 12, 0,
-1,0, 22, 8, 0, 28, 22, 8, -1, 23, 17, 5, 0, 23, 0, 5, -1, 13, 13,
1, 0, 13, 0, 1, -1, 16, 0, 7, 0, 16, 19, 7, -1, 0, 20, 8, 0, 28,
20, 8, -1, 19, 17, 5, 0, 19, 0, 5, -1 -
GDL ArchiCAD 11 91
LIGHTLIGHT red, green, blue, shadow,
radius, alpha, beta, angle_falloff,distance1,
distance2,distance_falloff [[,] ADDITIONAL_DATA name1 =
value1,name2 = value2, …], , [, ] . x . alpha , beta. angle_falloff. ( , — .) distance1
distance2. distance_falloff . ( , , .) . shadow .0: .1: .
:alpha -
92 GDL ArchiCAD 11
:LIGHT 1.0,0.2,0.3, ! RGB 1, ! 1.0, ! radius 45.0,60.0, !
angle1, angle2 0.3, ! angle_falloff 1.0,10.0, ! distance1,
distance2 0.2 ! distance_falloff ArchiCAD ArchiFM :GDL- :IF C = 0 GOTO 10LIGHT G/100*D, G/100*E, G/100*F, !
RGB…10:r = 0, alpha > 0, beta > 0
-
GDL ArchiCAD 11 93
r > 0, alpha = 0, beta > 0
r > 0, alpha = 0, beta = 0 alpha, beta, radius
PICTUREPICTURE expression, a, b, mask
, . expression , , . 0 . , , ArchiCAD. MASTER_GDL, . , D-
RECT.mask = alpha + distortion. alpha: alpha-.0: alpha- , .1:
alpha-, .distortion: .0: , .2: ,( ).4: ,
( ).
-
94 GDL ArchiCAD 11
TEXTTEXT d, 0, expression
.. [SET] STYLE . 157 DEFINE STYLE . 176.d: , . GDL 0..DEFINE
STYLE «aa» «New York», 3, 7, 0SET STYLE «aa»TEXT 0.005, 0,
«3D-Text»name = «Grand»ROTX 90ROTY -30TEXT 0.003, 0, nameADDX STW
(name)/1000ROTY 60TEXT 0.003, 0, «Hotel»: 2D- GDL DEFINE STYLE .
-
GDL ArchiCAD 11 95
RICHTEXTRICHTEXT x, y,
height, 0, textblock_name TEXTBLOCK. . . 178.x, y: X-Y
(richtext).height: .textblock_name: TEXTBLOCK. GDL .VERT, VECT, EDGE, PGON BODY. . D- . 1. BASE BODY ( BASE) 1. (
2). . , . . , . . . . 0-2 . , . . . ( ), . . . . : . , . . . , . (
PGON vect = 0 < 0) , , , . : -
96 GDL ArchiCAD 11
VERT (TEVE) EDGE (VECT) PGON (PIPG) COOR BODY VERT, EDGE, VECT
PGON BASE. . , . . , , . 0.VERTVERT x, y, z
x-y-z, .
TEVETEVE x, y, z, u, v
VERT, . VERT , , ArchiCAD (. COOR . 98).x, y, z: .u, v: . (u,v),
. VERT TEVE, (u,v) .: (u,v) , .
VECTVECT x, y, z
, . (vect=0 PGON), .
-
GDL ArchiCAD 11 97
EDGEEDGE vert1, vert2, pgon1, pgon2, status
.vert1, vert2: . vert1 vert2
VERT. pgon1, pgon2: . :0: .< 0: . :1: .2: . :4: ( 2).8: (
2).16: .32: ( 16 ).64: ( 16).PGONPGON n, vect, status, edge1, edge2, … edgen
.n: .vect: . VECT.
: vect = 0, ArchiCAD . edge1, edge2, … edgen EDGE. 0 . . ( ; ,
). -
98 GDL ArchiCAD 11
: 1: .2: .16: .32: ().64: () ( 32). :4: ( 2).8: ( 2). , ArchiCAD
( ).n = 0 .PIPGPIPG expression, a, b, mask, n, vect,
status,edge1, edge2, … edgen
. 4 PICTURE, PGON.
COORCOOR wrap, vert1, vert2, vert3, vert4
BODY .wrap: . :1: ,2: ,3: ,4: ,
-
GDL ArchiCAD 11 99
5: , .
:256: .1024: ().2048: , ,.4096: .
: (.TEVE . 96).
vert1: VERT, .vert2, vert3, vert4: VERT 3 . VERT , .
:CSLAB_ » «, » «, » «,
4, 0.5,0, 0, 0, 15,1, 0, 0, 15,1, 1, 1, 15,0, 1, 1, 15
BASEVERT 1, 0, 0 !#1VERT 1, 1, 1 !#2VERT 0, 0, 0 !#3VERT 1, 0, 1
!#4COOR 2, -1, -2,-3, -4BODY 1X
Y
X’
Y’
Z
Z’
-
100 GDL ArchiCAD 11
BODYBODY status
. :1: .2: ().4: : , .32: .64: . 32, 64, . . SHADOW . 160. ,
ArchiCAD .:1: VERT 0.0, 0.0, 0.0 !#1VERT 1.0, 0.0, 0.0 !#2VERT 1.0,
1.0, 0.0 !#3VERT 0.0, 1.0, 0.0 !#4VERT 0.0, 0.0, 1.0 !#5VERT 1.0,
0.0, 1.0 !#6VERT 1.0, 1.0, 1.0 !#7VERT 0.0, 1.0, 1.0 !#8EDGE 1, 2,
1, 3, 0 !#1EDGE 2, 3, 1, 4, 0 !#2EDGE 3, 4, 1, 5, 0 !#3EDGE 4, 1,
1, 6, 0 !#4EDGE 5, 6, 2, 3, 0 !#5EDGE 6, 7, 2, 4, 0 !#6EDGE 7, 8,
2, 5, 0 !#7EDGE 8, 5, 2, 6, 0 !#8EDGE 1, 5, 6, 3, 0 !#9EDGE 2, 6,
3, 4, 0 !#10EDGE 3, 7, 4, 5, 0 !#11EDGE 4, 8, 5, 6, 0 !#12VECT 1.0,
0.0, 0.0 !#1VECT 0.0, 1.0, 0.0 !#21
3
Y
7
X
Z
5 8
4
6
2
-
GDL ArchiCAD 11 101
VECT 0.0, 0.0, 1.0 !#3PGON 4, -3, 0, -1, -4, -3, -2 !#1
!VERT1,2,3,4PGON 4, 3, 0, 5, 6, 7, 8 !#2 !VERT5,6,7,8PGON 4, -2, 0,
1, 10, -5, -9 !#3 !VERT1,2,5,6PGON 4, 1, 0, 2, 11, -6, -10 !#4
!VERT2,3,6,7PGON 4, 2, 0, 3, 12, -7, -11 !#5 !VERT3,4,7,8PGON 4,
-1, 0, 4, 9, -8, -12 !#6 !VERT1,4,5,8BODY 1 ! 2: ( ; ArchiCAD )VERT
0.0, 0.0, 0.0 !#1 VERT 1.0, 0.0, 0.0 !#2 VERT 1.0, 1.0, 0.0 !#3
VERT 0.0, 1.0, 0.0 !#4 VERT 0.0, 0.0, 1.0 !#5 VERT 1.0, 0.0, 1.0
!#6 VERT 1.0, 1.0, 1.0 !#7 VERT 0.0, 1.0, 1.0 !#8 EDGE 1, 2, -1,
-1, 0 !#1 EDGE 2, 3, -1, -1, 0 !#2 EDGE 3, 4, -1, -1, 0 !#3 EDGE 4,
1, -1, -1, 0 !#4 EDGE 5, 6, -1, -1, 0 !#5 EDGE 6, 7, -1, -1, 0 !#6
EDGE 7, 8, -1, -1, 0 !#7 EDGE 8, 5, -1, -1, 0 !#8 EDGE 1, 5, -1,
-1, 0 !#9 EDGE 2, 6, -1, -1, 0 !#10 EDGE 3, 7, -1, -1, 0 !#11 EDGE
4, 8, -1, -1, 0 !#12 PGON 4, 0, -1, -1, -4, -3, -2 !#1!VERT1,2,3,4PGON 4, 0, -1, 5, 6, 7, 8 !#2
!VERT5,6,7,8PGON 4, 0, -1, 1, 10, -5, -9 !#3
!VERT1,2,5,6PGON 4, 0, -1, 2, 11, -6, -10 !#4
!VERT2,3,6,7PGON 4, 0, -1, 3, 12, -7, -11 !#5
!VERT3,4,7,8PGON 4, 0, -1, 4, 9, -8, -12 !#6
!VERT1,4,5,8BODY -1 !
-
102 GDL ArchiCAD 11
BASEBASE (VERT, TEVE, VECT, EDGE, PGON PIPG). .
3DCUTPLANECUTPLANE [x, y, z [, side [, status]]]
[statement1 … statementn]CUTEND
CUTPLANE{2} angle [, status]
[statement1 … statementn] CUTEND
. CUTPLANE . CUTPLANE :0: x-y;1: x, angle — -;2: z ;3: , z ;4: ,
side:side = 0: , ( );side = 1: , ; x-y, x-z, y-z, ,-, -z x-z, , .
( side) , . x-y, x-z y-z (, 1.0, 1.0, 0.0 x-y), , . CUTPLANE
CUTEND . CUTPLANE . CUTPLANE . -
GDL ArchiCAD 11 103
, CUTPLANE CUTEND, , . , CUTPLANE , . CUTPLANE-CUTEND , .
CUTEND, CUTPLANE . CUTPLANE , CUTEND. CUTPLANE CUTEND , , , . ,
.: CUTPLANE CUTEND, . — CUTEND. , , , , , , , , .
.CUTPLANE 2, 2, 4CUTPLANE -2, 2, 4CUTPLANE -2, -2, 4CUTPLANE 2,
-2, 4ADD -1, -1, 0BRICK 2, 2, 4DEL 1
CUTENDCUTENDCUTENDCUTEND
CUTPLANE CUTPLANE 1, 1, 0, 1 SPHERE 2 SPHERE 2CUTEND CUTEND
-
104 GDL ArchiCAD 11
CUTPLANE 1.8, 1.8, CUTPLANE 1.8, 1.8, 1.8 1.8, 1 SPHERE 2 SPHERE
2CUTEND CUTENDCUTPLANE 60 CUTPLANE -120 BRICK 2, 2, 2 BRICK 2, 2, 2CUTEND
CUTENDCUTPOLYCUTPOLY n,
x1, y1, … xn, yn[, x, y,
z][statement1statement2…statementn]CUTEND -
GDL ArchiCAD 11 105
CUTPLANE . . z (x,y,z). . . , , . .ROTX 90MULZ -1CUTPOLY 3,
0.5, 1,2, 2,3.5, 1,-1.8, 0, 1
DEL 1 BPRISM_ » «, » «, » «, 4, 0.9, 7, 0.0, 0.0, 15, 6.0, 0.0,
15, 6.0, 3.0, 15, 0.0, 3.0, 15CUTENDA=1.0D=0.1CUTPOLY 4, D, D, A-D, D, A-D, A-D, D, A-DROTX 90
CUTPOLY 4, D, D, A-D, D, A-D, A-D, D, A-D DEL 1ROTY 90CUTPOLY 4, D,
D, A-D, D, A-D, A-D, D, A-D -
106 GDL ArchiCAD 11
DEL 1 BLOCK A, A, ACUTENDCUTENDCUTEND
ROTX 90FOR I=1 TO 3 FOR J=1 TO 5 CUTPOLY 4, 0, 0, 1, 0, 1, 1, 0,
1 ADDX 1.2 NEXT J DEL 5 ADDY 1.2NEXT IDEL NTR()-1ADD -0.2, -0.2,
0BRICK 6.2, 3.8, 1FOR K=1 TO 15 CUTENDNEXT KDEL TOPCUTPOLYACUTPOLYA n, status, d,
x1, y1, mask1, … xn, yn, maskn [,x, y,
z][statement1statement2…statementn]CUTEND CUTPOLY, . . , .
-
GDL ArchiCAD 11 107
status: .1:
.2: .d:
.d = 0 .maski: PRISM_.maski = j1 + 2 * j2 + 4 * j3 + 64 *
j7:ROTX 90FOR I=1 TO 3 FOR J=1 TO 5 CUTPOLYA 6, 1, 0, 1, 0.15, 5,
0.15, 0.15, 900, 0, 90, 4007, 0, 0.85, 5, 0.85, 0.85, 900, 0, 90,
4007 ADDX 1 NEXT J DEL 5 ADDY 1NEXT IDEL NTR()-1ADD -0.2, -0.2,
0BRICK 5.4, 3.4, 0.5FOR K=1 TO 15 CUTENDNEXT KDEL TOPi
Y
X
Z
jj
j
i+11
2 3
-
108 GDL ArchiCAD 11
CUTSHAPECUTSHAPE d [, status][statement1 statement2 …
statementn]CUTEND status: . ( ),
3.status = j1 + 2*j2
j1: .j2: .
:FOR I = 1 TO 5 ADDX 0.4 * I ADDZ 2.5 CUTSHAPE 0.4 DEL 2 ADDX
0.4NEXT IDEL TOPBRICK 4.4, 0.5, 4FOR I = 1 TO 5 CUTENDNEXT ICUTFORMCUTFORM n, method, status,
rx, ry, rz, d,x1, y1, mask1,…xn, yn, maskn
CUTPOLYA, . method: .1: .2: .
-
GDL ArchiCAD 11 109
3: . Y rx, ry, rz (ry .)
status: .status = j1 + 2*j2 + 8*j4 + 16*j5 + 32*j6 + 64*j7 +
128*j8 j1: .j2: .j4, j5: :j4 = 0 j5 = 0: ,.j4 = 0 j5 = 1: ,j4 = 1 j5 = 1: .
j6: , , . ( CUTFORM.)
j7 : , , .j8 : , , .rx, ry, rz: , , ,
.d: rx, ry, rz . , .
, d , rx, ry, rz.
, , d , by rx, ry, rz, , rx, ry, rz. mask: .maski = j1 + 2*j2 +
4*j3 + 8*j4 + 16*j5 + 64*j7 -
110 GDL ArchiCAD 11
j1: .j2: .j3: .j4: .j5: .j7: , .
GDL 3D- , . : ADDGROUP: .
SUBGROUP: .
ISECTGROUP: .
-
GDL ArchiCAD 11 111
ISECTLINES: .
SWEEPGROUP: .
GDL «», . . ( .) , . GDL, BLOCK, SPHERE .. . ( BODY -1):GROUP
«myGroup» BLOCK 1,1,1 BODY 1 ADDX 1 BLOCK 1,1,1ENDGROUP , . , (, ,
).. . 95. , , , , , . ( — , .) : -
112 GDL ArchiCAD 11
( )
()
( )
—
— ()
()
()
—
— ()
— ()
()
()
()
()
()
()
()
()
()
()
—
—
—
( )
— ( )
( )
( )
( )
— ( )
( )
( )
( )
— ( )
( )
( )
—
—
—
— — — —
— — —
— — —
-
GDL ArchiCAD 11 113
( )
MODEL SURFACE, -. MODEL WIRE, -. -. . GDL . . GDL, . , GDL, : ,
. : ; ( ); ( ). ( ), ( ). ( , , , , , .)—
—
—
— — —
— — — —
— — —
— ( )
( )
( )
-
114 GDL ArchiCAD 11
GROUPGROUP «name»
. , ENDGROUP, name. (); PLACEGROUP. , , PLACEGROUP, . . , , ; ,
, . , DEFINE SET (, , ); , / , , / , .ENDGROUPENDGROUP
.
ADDGROUP ADDGROUP (g_expr1, g_expr2)
SUBGROUP SUBGROUP (g_expr1, g_expr2)
ISECTGROUP ISECTGROUP (g_expr1, g_expr2)
ISECTLINES ISECTLINES (g_expr1, g_expr2)
: , , , . — , PLACEGROUP, . , . g_expr1, g_expr2 . — ( ), , ,
. -
GDL ArchiCAD 11 115
PLACEGROUPPLACEGROUP g_expr
— , . ; 3D-.
KILLGROUPKILLGROUP g_expr
, . KILLGROUP . . , . : GROUP «box» BRICK 1, 1, 1ENDGROUPGROUP
«sphere» ADDZ 1 SPHERE 0.45 DEL 1ENDGROUPGROUP «semisphere» ELLIPS
0.45, 0.45ENDGROUPGROUP «brick» ADD -0.35, -0.35,0 BRICK 0.70,
0.70, 0.35 DEL 1ENDGROUPresult_1=SUBGROUP(«box»,»sphere») !
«sphere» «box»result_2=ISECTGROUP(«semisphere»,»brick») !
«semisphere» «brick»result_3=ADDGROUP(result_1,result_2) !
PLACEGROUP result_3KILLGROUP «box»KILLGROUP «sphere»KILLGROUP
«semisphere»KILLGROUP «brick» -
116 GDL ArchiCAD 11
SWEEPGROUP SWEEPGROUP (g_expr, x, y, z)
, , , . -. SWEEPGROUP (2) (g_expr, x, y, z)
SWEEPGROUP SWEEPGROUP (2) , . ( SWEEPGROUP . ):
GROUP «a» SPHERE 1ENDGROUPPLACEGROUP SWEEPGROUP («a», 2, 0,
0)BINARYBINARY mode [, section]
GDL. , , , . D-. , , .mode: .0: PEN MATERIAL.1: PEN MATERIAL
.. .
-
GDL ArchiCAD 11 117
2: PEN MATERIAL. .
3: PEN MATERIAL. , .
section: , 1 16. , section. GDL 1. BINARY section . , ArchiCAD
(, DXF ZOOM) 3D- . , , . , GDL .: 3D- 3D- . , .
, 30-. , . , 3D- , GDL-.
-
118 GDL ArchiCAD 11
-
GDL ArchiCAD 11 119
, 2D- , , , -, 2D. 2D, , 3D-, 2D-, 3D- 2D- . , , , .
HOTSPOT2HOTSPOT2 x, y [, unID [, paramReference, flags][,
displayParam]]unID: 2D-. , .
paramReference: , .
displayParam: , paramRefrence. .
. . 135 HOTSPOT2.
LINE2LINE2 x1, y1, x2, y2
, .
(x, y)
Y
X
Y
(x1, y1)
X
(x2, y2)
-
120 GDL ArchiCAD 11
RECT2RECT2 x1, y1, x2, y2
.
POLY2POLY2 n, frame_fill, x1, y1, … xn, yn
n .
:n >= 2frame_fill = j1 + 2*j2 + 4*j3 j1, j2, j3 0 1.j1 (1):
.j2 (2): .j3 (4): .Y
(x1, y1)
X
(x2, y2)
n
12
Y
X
-
GDL ArchiCAD 11 121
POLY2_POLY2_ n, frame_fill, x1, y1, s1, … xn, yn, sn
POLY2 , . si = 0, , (xi,yi) . si = 1, . si = -1 . . :n >=
2frame_fill = j1 + 2*j2 + 4*j3 + 8*j4 + 32*j6 + 64*j7 j1, j2, j3 0
1.j1 (1): .j2 (2): .j3 (4): .j4 (8): .j6: ( — ).j7: ( j6 = 0, — )
:s = j1 + 16*j5 + 32*j6 j1, j5, j6 0 1.j1 (1): .j5 (16): ( 0, ).j6
(32): (, j5).-1: . POLY2_ 0 ( ), LINE_PROPERTY POLY2_. .. . 143
.n
12
Y
X
-
122 GDL ArchiCAD 11
POLY2_APOLY2_A n, frame_fill, fill_pen,
x1, y1, s1, …, xn, yn, sn
POLY2_BPOLY2_B n, frame_fill, fill_pen,
fill_background_pen,x1, y1, s1, …, xn, yn, sn
POLY2_ , . POLY2_. .. . 143 .
POLY2_B{2}POLY2_B{2} n, frame_fill, fill_pen,
fill_background_pen,fillOrigoX, fillOrigoY,fillAngle,x1, y1, s1,
…, xn, yn, snPOLY2_B , , . frame_fill = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 +
312*j6 +64*j7 j1, j2, j3, j4 j5, j6, j7 0 1.j1 (1): .j2 (2): .j3
(4): .j4 (8): .j5 (16): (, j4).j6 (32): ( j7, ,).j7 (64): ( j6; ,
). .. . 143 .
-
GDL ArchiCAD 11 123
POLY2_B{3}POLY2_B{3} n, frame_fill, fill_pen,
fill_background_pen,fillOrigoX, fillOrigoY,mxx, mxy, myx, myy,
x1, y1, s1, …, xn, yn, snPOLY2_ . frame_fill = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 +
64*j7 +128*j8 j1, j2, j3, j4, j5, j6, j7, j8 0 1. j1-j7: POLY2_.j8
(128): . mxx, mxy, myx, myy: j8 , . . . . 143 .ARC2ARC2 x, y, r, alpha, beta
(, ), alpha beta.Alpha beta .
(x, y)
beta
alpha
X
Yr
-
124 GDL ArchiCAD 11
CIRCLE2CIRCLE2 x, y, r
(, ) r.
SPLINE2SPLINE2 n, status, x1, y1,
angle1, , xn, yn, anglen
:n >= 2-, n . — (xi, yi) anglei, . :0: .1: -. , , , -.
(x, y)YY
X
r
(x ,y )1 n
angle i
ii i
X
Y
-
GDL ArchiCAD 11 125
2: -. — angle . .
.SPLINE2 5, 2,
0, 0, 60,1, 2, 30,1.5, 1.5, -30,3, 4, 45,4, 3, -45
n = 5FOR I = 1 TO n SPLINE2 4, 0,
0.0, 2.0, 135.0,-1.0, 1.8, 240.0,-1.0, 1.0, 290.0,0.0, 0.0,
45.0MUL2 -1.0, 1.0 SPLINE2 4, 0,
0.0, 2.0, 135.0,-1.0, 1.8, 240.0,-1.0, 1.0, 290.0,0.0, 0.0,
45.0DEL 1 SPLINE2 4, 0,
0.0, 2.0, 100.0,0.0, 2.5, 0.0,0.0, 2.4, 270.0,0.0, 2.0,
270.0ADD2 2.5, 0NEXT I
-
126 GDL ArchiCAD 11
SPLINE2ASPLINE2A n, status, x1, y1, angle1, length_previous1,
length_next1,…xn, yn, anglen, length_previousn,length_nextn
SPLINE2 (- ). ). 2D-. . // — ArchiCAD 11. :0: .1: -.
, , , -.2: -. —
angle, length_previousi
length_nexti . .
xi, yi: .length_previousi, length_nexti: .anglei: , .:SPLINE2A
9, 2,0.0, 0.0, 0.0, 0.0, 0.0,0.7, 1.5, 15, 0.9, 1.0,1.9, 0.8, 72,
0.8, 0.3,1.9, 1.8, 100, 0.3, 0.4,1.8, 3.1, 85, 0.4, 0.5,2.4, 4.1,
352, 0.4, 0.4,3.5, 3.3, 338, 0.4, 0.4,4.7, 3.7, 36, 0.4, 0.8, 6.0,
4.6, 0, 0.0, 0.01 n
angle i
ii i
X
Y (x ,y )
leng
th_p
revi
ous i
i
leng
th_n
ext
-
GDL ArchiCAD 11 127
PICTURE2PICTURE2 expression, a, b, mask
PICTURE2{2}PICTURE2{2} expression, a, b, mask
PICTURE . 3D, 2D- . expression , — , . 0 , . PICTURE2{2} mask =
1 , . , GDL.TEXT2TEXT2 x, y, expression
expression , ,.. [SET] STYLE . 157 DEFINE STYLE . 176.
Y
X
ArchiCAD(x,y)
-
128 GDL ArchiCAD 11
RICHTEXT2RICHTEXT2 x, y, textblock_name
TEXTBLOCK. . . 178.x, y: X-Y (richtext).textblock_name:
TEXTBLOCK.FRAGMENT2FRAGMENT2 fragment_index,
use_current_attributes_flag
fragment_index 2D- .use_current_attributes_flag: , .0: , , .1: ,
, ,.
FRAGMENT2FRAGMENT2 ALL,use_current_attributes_flag
2D- .use_current_attributes_flag: , .0: , , .1: , , ,
.
-
GDL ArchiCAD 11 129
PROJECT2PROJECT2 projection_code, angle, method
PROJECT2{2}PROJECT2{2} projection_code, angle,method
[,backgroundColor, fillOrigoX,fillOrigoY, filldirection]
3D- 2D-. , PROJECT2{2}, SET FILL, , 2D-.projection_code: .3: .4:
.6: .7: .8: .9: .-3: .-6: , .-7: , .-8: , .-9: , .angle: ,
3D-.method: .1: .2: .3: . -
130 GDL ArchiCAD 11
16: : ( ).
32: : 3D ( ).
64: : . ( ).
128: : ( 32). — .
256: : ( 32, 128). — .
512: : ( 32). .
1024: : ( 32, 512). .
BackgroundColor: .fillOrigoX: X .fillOrigoY: Y .filldirection:
.: PROJECT2{2} SET FILL.
-
GDL ArchiCAD 11 131
:
: PROJECT2 32 3 ( ) method, CUTPOLYA 2 ( ), . , SECT_FILL,
3D-. -
132 GDL ArchiCAD 11
PROJECT2{3}PROJECT2{3} projection_code, angle, method , parts[,
backgroundColor, fillOrigoX, fillOrigoY,filldirection][[,]PARAMETERS name1=value1 , …
namen=valuen]3D- 2D-. , PROJECT2{2}, SET FILL, , 2D-. , PROJECT2{3}, , , , .
, .method: .1: .2: .3: .
16: : ( ).
32: : 3D ( ).
64: : . ( ).
128: : ( 32). — .
256: : ( 32, 128). — .
512: : ( 32). .
1024: : ( 32, 512). .
2048: : 16, 32, 64, 128, 256, 512, 1024 . .
-
GDL ArchiCAD 11 133
4096: : 16, 32, 64, 128, 256, 512, 1024 . .
8192: : : , .parts: . 15 .part = j1 + 2*j2 + 4*j3 + 8*j4
j1, j2, j3, j4 0 1. j1, j2, j3, j4 , (1) (0).
j1: ( , SECT_FILL) ( ).j2: .j3: .j4: .
, ArchiCAD. , (, , ), , 2D- 2D- 3D- . , «» 2D- 3D- .
DRAWING2DRAWING2 [expression]
expression, (expression = 0, ) (expression = 1), , .
DRAWING3DRAWING3 projection_code, angle, method
-
134 GDL ArchiCAD 11
DRAWING3{2}DRAWING3{2} projection_code, angle, method
[,backgroundColor, origoX, origoY,filldirection]
PROJECT2, 3D- , , . PROJECT2 PROJECT2{2}. DRAWING3{2} method: 3:
,32:
Этот экспертный материал продолжает цикл
статей «ARCHICAD: открывая заново», начатый в декабре 2016 года статьей
Владимира Савицкого «Создание конструкций и извлечение рабочих чертежей из модели», а затем продолженный публикациями Светланы Кравченко «ARCHICAD: открывая заново. Визуализация – новые возможности для архитектора» и Александра Анищенко «TEAMWORK: эффективная командная работа шаг за шагом».
Цикл призван помочь пользователям в полной мере раскрыть весь потенциал
ARCHICAD®. Мы попросили архитекторов поделиться личным опытом
использования программы с применением нестандартных подходов,
малоизученных функций и новых возможностей, о которых многие
пользователи могут и не подозревать. Как разработчики приложения
ARCHICAD мы уверены, что только глубокое знание продукта может раскрыть
всю его ценность и решающим образом повлиять на результаты, скорость и
качество работы проектировщика.
Вы тоже предпочитаете «непротоптанные
дорожки»? Имеете опыт применения нестандартных подходов в работе с
ARCHICAD, регулярно задействуете не самые известные возможности
приложения? Будем рады пригласить к сотрудничеству новых авторов: ehffvn(xmr)tencuvfbsg.pbz»>ehffvn(xmr)tencuvfbsg.pbz.
Светлана Кравченко, практикующий архитектор
Язык GDL: уникальные возможности инструмента шаг за шагом
Наверняка многие из вас слышали о
GDL в ARCHICAD, однако как им пользоваться в работе до сих пор знают
далеко не все. Учитывая невероятную полезность этой функции, а также
множество вопросов после моего первого вебинара
на эту тему, я решила более подробно рассказать о том, как даже
поверхностное его знание может здорово помочь в повседневной работе
архитектора.
Начнем с основ
GDL (Geometric Description Language,
язык геометрического описания) – язык программирования, подобный языку
BASIC, созданный для работы в среде ARCHICAD. С его помощью описываются
объемные 3D-тела (такие как двери, окна, мебель) и 2D-символы в окне
плана этажа. Эти объекты называются Библиотечными Элементами.
Для тех, кто хоть немного знаком с программированием, освоить этот язык
не составит труда. Впрочем, при достаточном желании изучение GDL
окажется вполне по силам и человеку, далекому от этой среды.
Любой архитектор изучал в свое время
геометрию и начертательную геометрию, имеет отличное объемное мышление, а
это уже половина успеха. Не нужно сразу пытаться написать сложные
объекты, начинать стоит с основных геометрических фигур и форм; много
информации можно почерпнуть, изучая скрипты других Библиотечных
Элементов. Ну а самый главный источник информации – это справочное
руководство GDL, которое можно открыть через меню Помощь в самом ARCHICAD.
Итак, для чего архитектору может
пригодиться знание GDL? Например, в отличие от Grasshopper, при помощи
которого можно создавать сложные структуры, GDL просто незаменим для
написания различных маркеров и выносных надписей, а также при создании
специальных компонентов для других Библиотечных Элементов или
инструментов. Одним из моих первых применений GDL в работе было создание
специального филенчатого полотна двери, которое при изменении размеров
не масштабировалось во все стороны, а меняло только размеры филенки.
Толщина фигурной рамки и ширина обвязки оставались неизменными. Также
архитекторам очень часто хочется добавить какие-то простые функции в
существующие объекты стандартных библиотек – и это основная причина, по
которой начинают вникать в GDL.
Безусловно, знание GDL не является
жизненно необходимым, и многие из этих задач можно решить стандартными
инструментами. Например, можно построить филенки с обвязкой из
перекрытий и сохранить как специальное полотно двери. Если у вас таких
нестандартных дверей всего несколько штук, то так будет даже быстрее. Но
если в вашем проекте много подобных дверей разных размеров и ширина их
меняется в процессе работы, то написание специальной панели в GDL
значительно ускорит и упростит работу.
Геометрическое описание подразумевает, что любую из возможных фигур можно написать текстом по размерам или координатам.
Для 3D-скрипта есть блок команд основных пространственных фигур, таких как:
- BLOCK и BRICK — параллелепипед, строящийся по трем размерам с началом в точке 0 системы координат
BLOCK a, b, c
BRICK a, b, c
CYLIND – цилиндр вдоль оси Z, с высотой h и радиусом rCYLIND h, r
SPHERE – сфера с центром в начале координат и радиусом rSPHERE r
Похожим образом описываются эллипс и конус.
Следующий блок фигур уже сложнее – это
различные призмы. Они описываются набором координат точек. Самая простая
призма определяется количеством точек (n), высотой (h) и перечислением
координат всех точек по порядку.
PRISM n, h,
x1, y1,
…
xn, yn
Есть много разновидностей призмы. Следующий вид, PRISM_,
позволяет указывать к координатам точек коды статусов, которые
определяют видимость граней и ребер, а также позволяют создавать
криволинейные призмы и призмы с отверстиями (см. в справочнике раздел
Коды Статусов). Другой вид, BPRISM_, создает призму, закрученную вокруг оси Y. FPRISM_ строит призму с фаской или скруглением по верхней стороне.
Существует несколько команд, описывающих более сложные фигуры на основе полилиний: EXTRUDE, PYRAMID, REVOLVE, RULED, SWEEP, TUBE, COONS, MASS. Их описание с примерами можно найти в справочнике.
Для 2D-скрипта фигуры описываются
другими командами: линия, круг, прямоугольник, полилиния, сплайн. Но
можно прописать и команду для построения проекции из 3D-скрипта.
Создание 2D- или 3D-форм – это только часть функционала GDL. Если вам
нужен просто стол, то проще построить его инструментами самого ARCHICAD.
Объект пишется в случае, когда требуется какой-то параметризм:
возможность выбора разных типов ножек для стола, количества ножек,
изменение размеров стола с сохранением остальных размеров, расчет
пиломатериала для его изготовления, вес и стоимость. Объект может вообще
не содержать никакой геометрии, а только производить расчеты.
Для этого используются в том числе и Управляющие Предложения (Операторы
Управления), такие как циклы, условные операторы, обращение к
определенному месту кода (подпрограмме). С циклами и условиями лучше
ознакомиться в самом начале – используются они часто. Так, во всех
приведенных ниже примерах есть условные операторы.
ПРИМЕР №1 – поворот объекта
Часто у проектировщиков возникает
желание сделать объект поворачивающимся. На этом простом примере и
рассмотрим структуру Библиотечного Элемента, а также основные окна
Редактора Объектов GDL.
Чтобы открыть любой объект, размещенный в
пространстве проекта (если разработчик не наложил на него пароль),
нужно, выделив его, нажать комбинацию клавиш Ctrl+Shift+O. Другой способ
– воспользоваться меню Файл > Библиотеки и Объекты > Открыть Объект. Если в этот момент ни один объект не был выделен, то откроется окно для выбора объекта.
Добавим параметры поворота, например, к жалюзийной решетке (рис. 1).
Рис. 1. Первый подопытный
Рис. 2. Окно Редактора объектов GDL
Итак, мы открыли окно Редактора объектов GDL (рис. 2).
Слева вверху здесь расположено окно
просмотра разных видов, как в обычном окне параметров объекта; еще левее
кнопки для выбора вида – план, фасад, 3D-окно и предпросмотр.
Ниже располагаются кнопки для открытия
таблиц параметров, списков данных и скриптов. Скрипты можно открыть
двумя способами: кликнуть на кнопку с названием скрипта – открыть в этом
же окне, кликнуть на кнопку правее с пиктограммой окна – скрипт
откроется в отдельном окне. Это может быть полезно, чтобы одновременно
видеть разные скрипты (рис. 3).
Рис. 3. Одновременно открытые разные скрипты
Наверху в окне любого скрипта есть очень нужная кнопка Проверить:
при ее нажатии редактор подскажет, нет ли в скрипте ошибок. Сообщение
будет содержать причину ошибки и номер строки, в которой найдена ошибка.
В разделе «Детали» можно выбрать подтип объекта: специальное полотно двери, дверная ручка, рама навесной стены и так далее.
Так, специальные объекты (ручка,
полотно, рама) появятся в соответствующем окне выбора этих элементов.
При выборе какого-либо 2D-типа в объекте будут отсутствовать окна для
трехмерной геометрии. Там же выбираются типы для разных маркеров – узла,
разрезов, выносной надписи, зоны; они также появятся в соответствующих
инструментах.
В этом разделе можно заполнить описание объекта и выбрать пароль.
Далее – «Параметры», где в виде таблицы
представлены все данные, которые используются в этом объекте и которые
можно изменять во время работы над проектом.
Тут нужно добавить параметры для поворотов, которые мы позже будем использовать.
Рис. 4. Добавление параметров
Нажимаем кнопку Новый, расположенную выше таблицы (рис. 4). Появится новая строка, в которой нужно заполнить столбцы.
Первый из этих столбцов – Переменная.
Здесь мы латиницей и без пробелов пишем название переменной, которое
будет использоваться в скриптах. Именовать нужно так, чтобы было
несложно запомнить и при этом легко понять, за что эта переменная
отвечает. В нашем случае нужно создать две переменные для значения углов
поворотов по осям X и Y (вокруг оси Z объект и так можно поворачивать
прямо в плане). Я решила назвать их angle_x и angle_y.
В следующем столбце нужно выбрать тип данных. Варианты выбора представлены в таблице 1.
Таблица 1. Типы данных
Длина (в единицах модели) |
Наклон (угол в градусах) |
Действительное число (для размеров в мм листа или для коэффициентов) |
Целое число (для количественных значений) |
Логическое значение (истина/ложь или, по-простому, галочка) |
|
Покрытие |
Тип линии |
Образец штриховки |
Перо |
Разделитель |
Последние два типа не используются в
построении объекта, а нужны для большей наглядности и упорядоченности
списка в окне параметров объекта. Нам нужен угол – в таблице это вторая
пиктограмма.
Третий столбец – Имя. Тут можно без правил на любом языке написать, что именно мы хотим потом увидеть в окне параметров объекта.
И последний столбец – Значение.
Сейчас тут можно оставить 0: это значение меняется в любой момент как в
скрипте, так и в параметрах самого объекта. Как выглядят два новых
параметра в окне Редактора объектов GDL, показано на рис. 5. С помощью
стрелок в начале строки можно переместить строку в удобное место.
Рис. 5. Добавленные параметры
Затем нужно сохранить объект под новым
именем, так как стандартная библиотека зашита в контейнер, и в нем
нельзя перезаписывать объекты. Окно Параметров объекта будет теперь
выглядеть вот так (рис. 6).
Рис. 6. Новые параметры в окне Параметров объекта
Появились два новых параметра, значение
которых можно менять в любой момент. Но сейчас ничего не произойдет, так
как еще не написано никаких команд с их использованием.
Теперь нужно открыть окно 3D-скрипта.
Здесь идет полное описание построения
трехмерной модели на основе заданных параметров. Кроме того, в объект
могут быть вложены разные макросы.
Перед всеми построениями нужно повернуть
систему координат, в которой будет строиться объект. Тут важно понять
вот какую логику: все повороты, перемещения и масштабирование происходят
не так, как при работе в самом ARCHICAD. Мы не берем элемент и не
поворачиваем его, а поворачиваем глобальную систему координат (после
изменения она становится локальной) перед построением объекта.
Перемещение (команда ADD), поворот (ROT), масштабирование (MUL)
– это команды преобразования системы координат. Дальше преобразования
можно удалять в скрипте по одному, сразу по несколько либо удалить сразу
все. В справочнике все это описано достаточно подробно и с примерами.
Пример перемещения системы координат в 3D-пространстве сразу по трем осям показан на рис. 7.
ADD a, b, c
Рис. 7. Схема перемещения системы координат
Итак, перед всеми построениями
поворачиваем систему координат сначала по одной, потом по другой оси.
Поворот по оси Х выполняет команда ROTX alphax,
где alphax – угол поворота против часовой стрелки; вместо alphax нужно
вписать заранее созданную переменную. По оси Y поворот выполняется
аналогично (рис. 8).
Рис. 8. Изменение 3D-скрипта
Теперь можно задавать разные углы для
поворота – и в окне просмотра, расположенном вверху слева, будут
происходить изменения 3D-модели (рис. 9).
Рис. 9. При изменении углов меняется изображение в окне просмотра
Теперь можно задавать разные углы для
поворота – и в окне просмотра, расположенном вверху слева, будут
происходить изменения 3D-модели (рис. 9).
Но в 2D-виде пока ничего не происходит. В
2D-скрипте объект строится отдельными линиями и полилиниями, так
отрисовка объекта в плане происходит во много раз быстрее. На одном
объекте это незаметно, но если в проекте окажутся сотни таких решеток,
торможение будет существенным. Можно высчитать координаты точек этих
линий и простроить их так, как они выглядели бы в проекции повернутого
объекта, но это не очень просто и не очень быстро. В этой решетке я
предлагаю следующее решение: если углы по X или по Y не равны нулю, то
объект в 2D-скрипте, то есть для плана, будет отрисовываться как
проекция трехмерной модели, а иначе по-старому.
Проекцию модели для 2D-скрипта строит команда PROJECT2 projection_code, angle, method.
Что означают projection_code, angle, method – можно прочитать в
справочнике, мы же познакомимся с более важной командой из раздела
операторов управления IF – THEN – ELSE – ENDIF. Это операторы условий, которые помогут выстроить предложение условия из предыдущего абзаца.
На рис. 10 я выделила добавленные команды в 2D-скрипте и правее красным цветом дописала «перевод».
Рис. 10. Изменение 2D-скрипта
Теперь требуется только сохранить объект
и можно им пользоваться (рис. 11). Преимущество такого метода перед
преобразованием в морф заключается в том, что объект остается
параметрическим, его можно считать в спецификациях, в нем можно менять
размеры планок, размеры рамки и всё остальное, что было в оригинальном
объекте.
Рис. 11. Повернутые в пространстве новые объекты
Так подробно на этом примере мы рассмотрели основные окна и скрипты Редактора объектов GDL.
Если выбранный вами для поворота объект
имеет параметры не в виде списка, как в этой решетке, а в виде картинок и
схем, это означает, что разработчик написал также графический
интерфейс. Чаще всего при этом стандартный список с параметрами
скрывают, как на рис. 12: в выпадающем списке страниц параметров нет
раздела «Все параметры».
Рис. 12. В этом объекте отсутствует список всех параметров в стандартном виде
В этом случае нужно зайти в скрипт параметров и найти команду, которая прячет все параметры (рис. 13).
В этом скрипте описываются все действия, которые влияют на параметры:
- обозначение вариантов или диапазонов возможных значений (VALUES);
- какие-либо расчеты, результат которых присваивается параметру (PARAMETERS);
- скрытие или блокировка параметров (HIDEPARAMETER, LOCK).
Рис. 13. Строка в скрипте параметров, которая прячет все параметры
Строку HIDEPARAMETERS ALL
можно просто удалить либо, поставив в начале строки «!», сделать ее
нечитаемой (по синтаксису GDL строка, начинающаяся с восклицательного
знака, считается комментарием. Далее описания и переводы на скриншотах я
буду писать именно после знака «!»). После этого в списке страниц
параметров появится строка «Все параметры», и, выбрав ее, вы увидите
стандартного вида список с параметрами, среди которых будут и новые
строки для поворота.
ПРИМЕР №2 – текст на символе
Следующий пример я беру из текущего
проекта. При работе с планом многоквартирного жилого здания требовалось
на наружных блоках кондиционеров поставить букву «К» – причем так, чтобы
она всегда располагалась вертикально. Конечно, букву можно было бы
просто дописать сверху текстом или поставить выносную надпись-текст, но
тогда при повороте кондиционера, возможно, пришлось бы двигать и текст.
Для начала я добавила четыре новых параметра (рис. 14):
Рис. 14. Добавление новых параметров в объекте Кондиционер Воздуха
- Показывать текст: тип параметра – логическое значение,
что подразумевает два возможных значения: 0 (нет) и 1 (да). Таким
образом, текст можно будет включить или отключить. - Специальный текст: тип параметра – текстовый. Позволит
вписывать любой текст в символ (я намерена использовать одну букву,
чтобы она помещалась внутри прямоугольника блока кондиционера). - Шрифт: тип – текстовый. Обратите внимание – некоторые
виды написания этой переменной позволяют выбирать в столбце значения
шрифта из списка установленных на компьютере. «Fonttype» вызывает это
список автоматически, если же я напишу «typefont» или просто «font», то
придется писать название шрифта вручную. Этот момент я заметила случайно
в каком-то из стандартных объектов. - Перо текста: тип – перо. Ну, тут всё понятно.
Теперь посмотрим на пиктограммы, которые я нажала в начале строк.
У первой строки нажата пиктограмма , что означает bold – жирный. То есть эта строка в окне параметров объекта будет жирной.
У трех других – пиктограмма . Она означает, что эти строки будут вложены выпадающим списком под первую строку.
На рис. 15 – скриншот, иллюстрирующий, как это выглядит в Параметрах Объекта.
Для начала я добавила четыре новых параметра (рис. 14):
Рис. 15. Окно Параметров Объекта
А на рис. 16 – то, что я дописала в 2D-скрипте (по традиции с переводом и комментариями).
Рис. 16. Дописанные строки в 2D-скрипте
На следующем скриншоте (рис. 17) я для большей ясности подкрасила разные типы слов/команд/переменных.
Рис. 17. Дописанные строки в 2D-скрипте с пояснениями
Объект готов (рис. 18).
Рис. 18. Новые объекты на плане под разными углами
А если бы я не писала строки с поворотом и масштабированием, то объект выглядел бы так, как на рис. 19.
Рис. 19. Новые объекты на плане под разными углами без строк поворота и масштабирования
ПРИМЕР №3 – детализация
Для упрощения работ над проектом можно
при написании объекта добавить текстовый параметр с выбором из
нескольких вариантов детализации (простой, средний, детальный). И в
3D-скрипте при построении разных мелких деталей дописать условие типа:
если уровень детализации = “детально”, то
(описание построения деталей)
конец условия
Отдельного внимания заслуживают
Глобальные Переменные. В справочном руководстве они занимают 40 страниц и
для удобства поиска сгруппированы по темам. В предыдущем примере я
использовала некоторые данные об ориентации объекта в проекте. Тот же
раздел справочного руководства содержит Глобальные Переменные для
координат расположения объекта – с их помощью создаются объекты типа
выноски с координатами или отметки высоты на разрезе/фасаде.
Очень часто используется GLOB_SCALE
– масштаб чертежа (зависит от вида согласно текущему окну), при
масштабе 1:100 он равен 100, при масштабе 1:20 равен 20. Применяется
чаще всего для перевода размера шрифта в метры модели или наоборот.
Также на этот параметр можно «повесить» варианты отображения на плане.
Например, для скамейки написать в 2D-скрипте следующее:
IF GLOB_SCALE < 100 THEN PROJECT2 3, 270, 2 ELSE RECT2 0, 0, A, B ENDIF |
! если масштаб крупнее, чем 1:100, то ! строить проекцию из 3D-модели ! иначе ! строить прямоугольник размерами AxB ! конец условия |
Так на генплане в масштабе 1:500 скамьи
отобразятся прямоугольниками, а на фрагменте с более крупным масштабом
будет отрисовываться детальная проекция.
Подобный прием, но уже для трехмерной модели, используется в стандартных деревьях – если включить галочку Автоматический тип кроны.
На определенном расстоянии от камеры тип кроны меняется с детального на
простой, а с простого на эллипс. Правда, для того чтобы скрипты объекта
перечитались, нужно что-то с ними сделать – например, после смены
ракурса, выделив все деревья, открыть окно параметров объекта и, ничего
не меняя, просто нажать ОК, или нажать и отжать галочку замены покрытий.
Покажу на примере аппроксимации сферы. Вот что я написала в 3D-скрипте:
discam_x=abs(GLOB_EYEPOS_X-SYMB_POS_X) discam_y=abs(GLOB_EYEPOS_Y-SYMB_POS_Y) discam_h=sqr(discam_x^2+discam_y^2) discam_z=abs(GLOB_EYEPOS_Z-SYMB_POS_Z) discam=sqr(discam_h^2+discam_z^2) if discam<=20 then res=50 if discam<=30 and discam>20 then res=20 if discam<=40 and discam>30 then res=10 if discam>40 then res=5
resol res |
! разница в координатах позиции глаз и объекта по оси X ! разница в координатах позиции глаз и объекта по оси Y ! расстояние от глаз до объекта в плане по теореме Пифагора ! разница в координатах позиции глаз и объекта по оси Z ! расстояние от глаз до объекта в пространстве по теореме Пифагора ! если расстояние до объекта меньше или равно 20 м, то res=50 ! если расстояние до объекта меньше или равно 30 м и больше 20, то res=20 ! если расстояние до объекта меньше или равно 40 м и больше 30, то res=10 ! если расстояние до объекта больше 40, то res=5 ! задать для последующих построений аппроксимацию res |
В скрипте я использовала Глобальные Переменные GLOB_EYEPOS_X, GLOB_EYEPOS_Y, GLOB_EYEPOS_Z – это координаты расположения камеры (глаз) в 3D-окне проекта и SYMB_POS_X, SYMB_POS_Y, SYMB_POS_Z – это координаты расположения объекта в пространстве;
abs – модуль числа (убирает «-», если он есть);
sqr – квадратный корень;
^2 – возведение числа в квадрат.
В 3D-окне на разном расстоянии от камеры сфера будет строиться с разной
аппроксимацией. Для наглядности я включила каркасный режим (рис. 20).
Рис. 20. Объект с разной аппроксимацией в зависимости от расстояния в 3D-окне
Через Глобальные Переменные объект может получить:
- данные о расположении проекта (север, широта, долгота, возвышение), установленные в соответствующем диалоговом окне;
- текущий этаж и собственный этаж;
- тип текущего вида (например, в перемычках ГОСТ используется
такое условие: если тип вида – ведомость, то строить вид перемычки в
сечении с выносками позиций); в примере с решеткой можно дописать такое
условие: если тип вида – ведомость, то не поворачивать систему
координат, чтобы в любом случае в ведомости решеток был бы фронтальный
вид; - неполный показ конструкций (можно заставить объект не показывать какие-то части, если выбран показ только ядра).
В объект окна или двери можно вытащить данные о стене. Выносные
надписи могут получить очень много различной информации об элементе, с
которым они связаны, – например, флажок со слоями многослойной
конструкции или выноску с объемом элемента. И так далее 40 страниц
разных и очень полезных Глобальных Переменных.
ПРИМЕР №4 – маркер зоны
Рассмотрим, как создается собственный маркер зоны. Если создать новый объект и в разделе Детали выбрать ему подтип Паспорт Зоны, то в разделе Параметры отображаются синим цветом все специфические параметры, которые инструмент Зона передает маркеру (рис. 21).
Рис. 21. Параметры объекта подтипа Паспорт Зоны
При помощи команды TEXT2 можно написать
любую из этих переменных в 2D-скрипте – так получится маркер, состоящий
только из текста (рис. 22).
Рис. 22. 2D-скрипт с использованием переменных зоны
Используя общие параметры маркера зоны, можно определить текстовый стиль и высоту строки, зависящую от высоты шрифта:
DEFINE STYLE «ROOM» AC_TextFont_1,ROOM_LSIZE,5,0 STYLE «ROOM» row = ROOM_LSIZE/1000*GLOB_SCALE*1.5 |
! определение текстового стиля ! назначение текстового стиля |
text2 0, row, text2 0, 0, text2 0, -row, |
ROOM_NUMBER ROOM_NAME ROOM_AREA |
Можно создать новый параметр для выбора
типа маркера (рис. 23), задать ему варианты в скрипте Параметров (рис.
24) и в 2D-скрипте прописать разные виды отрисовки маркера для разных
типов.
Рис. 23. Добавление параметра для типа маркера
Рис. 24. Скрипт Параметров – варианты значений параметра «mt»
2D-скрипт:
if mt="маркер с номером" then<br /> text2 0, 0, ROOM_NUMBER<br /> CIRCLE2 0,0,row<br /> endif<br /> if mt="номер и площадь" then<br /> text2 0, row/2, ROOM_NUMBER<br /> text2 0, -row/2, AREA_TEXT<br /> endif<br /> if mt="название и площадь" then<br /> text2 0, row/2, ROOM_NAME<br /> text2 0, -row/2, AREA_TEXT<br /> endif<br /> if mt="номер, название и площадь" then<br /> text2 0, row, ROOM_NUMBER<br /> text2 0, 0, ROOM_NAME<br /> text2 0, -row, AREA_TEXT<br /> endif<br /> if mt="только площадь" then<br /> text2 0, 0, AREA_TEXT<br /> endif
В этом скрипте в качестве площади я не
использовала заранее определенную переменную площади зоны, а
преобразовала площадь в текст и добавила к ней единицы измерения:
area = str (ROOM_AREA, 4, 2) AREA_TEXT = area + » кв.м.» |
! преобразования числа в текст с 2 знаками после запятой ! добавление к строковому значению букв “кв.м.” |
Можно дополнить строки в маркере
линиями, разделяющими некоторые строки. Чтобы найти длину строки, нужно
использовать команду STW. Допишем в начале скрипта:
tl1=stw(ROOM_NUMBER) /1000*GLOB_SCALE
tl2=stw(ROOM_NAME) /1000*GLOB_SCALE
tl3=stw(AREA_TEXT) /1000*GLOB_SCALE
if mt=»номер и площадь» if mt=»номер, название и площадь» if mt=»название и площадь» if mt=»только площадь» |
then tl= MAX (tl1, tl3) then tl= MAX (tl1, tl2) then tl= MAX (tl2, tl3) then tl= tl3 |
И в вариантах маркеров допишем линии командой LINE2 (рис. 25).
Рис. 25. 2D-скрипт
Если номер зоны состоит из нескольких
цифр, для маркера можно создать параметр радиуса окружности, независимый
от высоты шрифта, или же вместо окружности описать фигуру наподобие
эллипса, длиной равной длине строки номера зоны, которую мы нашли ранее:
POLY2_ 5, 1+2+4,
-tl1 /2, row, 1,
tl1 /2, row, 1,
tl1 /2, -row, 1001,
-tl1 /2, -row, 1, -tl1 /2, row, 1001
Можно добавить новый параметр для типа
пола (FLOOR_TYPE) и параметр, позволяющий скрывать или показывать его
(ShowFloorType), а в 2D-скрипте дописать треугольник полилинией и текст с
типом пола:
if ShowFloorType then
ADD2 0, row*3
POLY2_ 4, 1,
-row*1.4, -row*0.8, 1,
row*2.8, 60, 201,
row*1.4, -row*0.8, 1,
0, 0, 700
text2 0,0, FLOOR_TYPE
endif
Для типа пола желательно добавить
отдельный параметр для пера, а также точки для графического
редактирования расположения маркера пола. О том, как добавлять точки
графического редактирования, я подробно рассказывала в своем вебинаре, а по ссылке в конце статьи можно скачать объекты и посмотреть, как это реализовано в данном конкретном случае.
И напоследок рассмотрим еще один очень важный подтип объекта, который
открывает большие возможности, – Глобальные Параметры Библиотеки (рис.
26).
Рис. 26. Выбор подтипа объекта «Глобальные Параметры Библиотеки»
Объект с этим подтипом ничего не строит и
не чертит, он определяет параметры в модельных видах. Таким образом,
туда можно вынести те параметры, которые хотелось бы видеть общими у
объекта, но при этом иметь возможность выставить разное значение для
разных видов.
Покажу это на примере маркера зоны. Мне попадались проекты, в которых
было несколько комплектов зон в разных слоях для разных видов. Если есть
потребность в разных маркерах, то Глобальные Параметры Библиотеки –
лучшее решение.
У меня есть маркер, в котором есть возможность ставить тип пола в
треугольнике и менять тип маркировки (рис. 27). И эти два параметра
вынесены в отдельный файл подтипа Глобальные Параметры Библиотеки (рис.
28).
Рис. 27. Зона со специальным маркером в окне плана
Рис. 28. Параметры объекта подтипа «Глобальные Параметры Библиотеки»
Чтобы эти параметры отобразились в диалоговом окне Параметры Модельного Вида,
нужно прописать их в скрипте Интерфейса объекта (рис. 29). Не буду
подробно задерживаться на специальных командах для этого скрипта, они
достаточно подробно и с примерами описаны в справочнике. Скажу только,
что тут мы описываем, в каком месте поля графического интерфейса будет
располагаться та или иная надпись или кнопка (поле с выбором вариантов,
галочка и т.д.), в Пользовательский Интерфейс можно вставлять и
изображения. В стандартной библиотеке почти каждый объект имеет
графический интерфейс; вы можете увидеть все возможности и посмотреть,
как написаны эти скрипты. Кроме кнопки Проверить скрипт имеет еще и кнопку Просмотр. Нажав на нее, можно быстро увидеть, что получается.
Рис. 29. Скрипт интерфейса объекта подтипа «Глобальные Параметры Библиотеки»
Можно сохранить объект и посмотреть его в диалоговом окне Параметры Модельного Вида (рис. 30). Здесь мы сможем менять тип маркировки сразу для всех зон в проекте (с этим маркером), но отдельно для разных видов.
Рис. 30. Новая вкладка Глобальных Параметров в диалоговом окне Параметры Модельного Вида
Теперь в объекте маркера зоны нужно запросить у объекта значения этих двух параметров.
В Основном Скрипте (который читается объектом первым, поэтому все
расчеты и определения значений, которые должны применяться в нескольких
скриптах, лучше писать тут) пишу две вот такие строки:
success1 = LIBRARYGLOBAL («LibraryGlobals20», «ShowFloorType», ShowFloorType)
success2 = LIBRARYGLOBAL («LibraryGlobals20», «mt», mt)
«success» будет равен 1, если запрос выполнен успешно; в противном случае будет 0.
Это можно использовать для того, чтобы вместо маркера зоны написать
предупреждающее сообщение о том, что в библиотеку не подгружен объект
LibraryGlobals20.
Дальше объект работает как обычно, используя два новых значения: если тип маркировки такой-то, то писать то-то и то-то и т.д.
В этой статье я осветила лишь малую
часть возможностей GDL. С его помощью можно создавать как совсем простые
элементы для оформления, так и очень сложные объекты.
Например, вы занимаетесь небольшими и простыми домами из СИП-панелей. У
вас есть определенный список вариантов изменений проекта:
- длина и ширина дома может быть от 2,4 до 24 метров с шагом 1,2 м;
- если ширина превышает 6 м, то посередине должна стоять еще одна стена;
- два варианта высоты этажа в зависимости от типоразмера панели;
- этажность – один или два этажа;
- окна могут быть в определенных местах панелей, определенного размера;
- отделка фасадов в трех вариантах;
- кровельное покрытие в трех вариантах;
- толщина стен нескольких типоразмеров
- и так далее.
Вы можете задать все эти параметры
для объекта, дописав еще стоимость за квадратный метр панели, кровли,
отделки и т.д. А в 2D- и 3D-скриптах объекта полностью выстроить и
вычертить этот дом с переменными вместо статичных размеров. Чтобы
пользователь не запутался в длинном списке параметров, можно написать
графический интерфейс на несколько страниц с картинками и схемами.
В Основном Скрипте посчитать все объемы и вывести стоимость. Еще можно в
2D-скрипте рядом с планом вывести таблицу с раскроем панелей. Написание
такого объекта потребует немало времени, нужно будет составить
детальное ТЗ, предусмотреть все нюансы, но зато вы получите не просто
объект, а почти программу, в которой выбором параметров можно будет
получить комплект эскизного проекта с расчетом материалов и стоимости
для заказчика.
Надеюсь, этим обзором я кого-то
заинтересовала возможностями GDL. Моя история началась с острого желания
изменить какую-то мелочь в каком-то стандартном маркере зоны, и чем
больше я вчитываюсь в справочник, тем больше раскрывается потенциал
этого инструмента, на мой взгляд, очень полезного для архитектора.
По ссылке ниже можно скачать все объекты, которые рассматривались в качестве примеров в этой статье:
Скачать примеры
Примечание. Для написания этих объектов использовался ARCHICAD 20, поэтому в более ранних версиях они не откроются.
О GRAPHISOFT
Компания GRAPHISOFT® в 1984 году совершила BIM революцию, разработав ARCHICAD®
— первое в индустрии САПР BIM-решение для архитекторов. GRAPHISOFT
продолжает лидировать на рынке архитектурного программного обеспечения,
создавая такие инновационные продукты, как BIMcloud™ — первое в мире решение, направленное на организацию совместного BIM-проектирования в режиме реального времени, EcoDesigner™
— первое в мире полностью интегрированное приложение, предназначенное
для энергетического моделирования и оценки энергоэффективности зданий и BIMx®
— лидирующее мобильное приложение для демонстрации и презентации
BIM-моделей. С 2007 года компания GRAPHISOFT входит в состав концерна Nemetschek Group.