Справочном руководстве gdl

Этот экспертный материал продолжает цикл
статей «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. Добавление новых параметров в объекте Кондиционер Воздуха

  1. Показывать текст: тип параметра – логическое значение,
    что подразумевает два возможных значения: 0 (нет) и 1 (да). Таким
    образом, текст можно будет включить или отключить.
  2. Специальный текст: тип параметра – текстовый. Позволит
    вписывать любой текст в символ (я намерена использовать одну букву,
    чтобы она помещалась внутри прямоугольника блока кондиционера).
  3. Шрифт: тип – текстовый. Обратите внимание – некоторые
    виды написания этой переменной позволяют выбирать в столбце значения
    шрифта из списка установленных на компьютере. «Fonttype» вызывает это
    список автоматически, если же я напишу «typefont» или просто «font», то
    придется писать название шрифта вручную. Этот момент я заметила случайно
    в каком-то из стандартных объектов.
  4. Перо текста: тип – перо. Ну, тут всё понятно.

Теперь посмотрим на пиктограммы, которые я нажала в начале строк.

У первой строки нажата пиктограмма , что означает 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
sphere 1

! разница в координатах позиции глаз и объекта по оси 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.

Значек GDL

Идя навстречу многочисленным пожеланиям профессиональных пользователей 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- . . . . . . . . . . . . . . . . . . 21

    GDL _______________________ 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 . . . . . . . . . .
    . . . . . . . . . 91

    LIGHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . .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 . . . . . . . . . . . . .
    . . . . . . . . . . . 163

    DEFINE MATERIAL . . . . . . . . . . . . . . . . . . . . . . . .
    . . 163DEFINE MATERIAL BASED_ON . . . . . . . . . . . . . . .
    165DEFINE TEXTURE . . . . . . . . . . . . . . . . . . . . . . . . .
    . 166

    . . . . . . . . . . . . . . . . . . . . . . . 168DEFINE FILL . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168DEFINE
    FILLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    171DEFINE SYMBOL_FILL . . . . . . . . . . . . . . . . . . . . . .
    173

    DEFINE 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 . . . . . . . . . . . . . . . . . . . . . . 199

    ABS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . 199CEIL . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . 199INT . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . 199FRA . . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    199ROUND_INT . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . 199SGN . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . 199

    SQR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . 199 . . . . . . . . . . . . . . . . . . . 200

    ACS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . 200ASN . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . 200ATN . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . . 200COS . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    200SIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . 200TAN . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . . 200PI . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . 200

    . . . . . . . . . . . . . . . . . . . . . . 200EXP . . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    200LGT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . 200LOG . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . 201

    . . . . . . . . . . . . . . . . . . . . . . . . . . . 201NOT . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . 201

    . . . . . . . . . . . . . . . . . . . . . . . 201MIN . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    201MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . 201RND . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . 201

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    201BITTEST . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . 201BITSET . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . 201

    . . . . . . . . . . . . . . . . . . . . . . . . . 202 . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . 202

    STR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . . 260

    WALLHOLE . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . 260WALLNICHE . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . 264

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . 265 . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . 2672D- . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . 268

    . . . . . . . 268WALLHOLE2 . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . 268WALLBLOCK2 . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . 269WALLLINE2 . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . . . 269

    GDL, . . 270 . . . . . . . . . . . . . . . . . . . . . . . . 271
    . . . . . . . . . . . . . . . . . . . . . . . . 271 . . . . . . . .
    . . . . . . . . . . . 271 3D- . . . . . . . . . . . . 272 2D- . . .
    . . . . . . 274 2D- 3D- . . . . . 275 . . . . . . 275

    . . . . . . . . . . . . . . . . . . . . . . . 275 . . . . . . .
    . . . . . . . . . . . . . . . . . . 276 . . . . . . . . . . . . . .
    . . . . . . . . . . . 276

    GDL . . . . . . . . . . 277A . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . 277B . . . . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277C
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . 278

    D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . . 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 . . . . . . . . . . .
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

    CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    . . . . . . . . . .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_TEXT

    LG

    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, 15

    ADDZ 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, -1

    FPRISM_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, -1

    HPRISM_HPRISM_ top_mat, bottom_mat, side_mat,

    hill_mat,n, thickness, angle, hill_height, status,x1, y1,
    s1,…,xn, yn, sn

    FPRISM_, , . 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, 15

    SPRISM_{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, matn

    SPRISM_ , 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, dm

    left_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, 0

    logoffset

    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,0

    BODY -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,0

    BODY -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,
    15

    CROOF_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, 6

    i

    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,16

    ARMCARMC 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 i

    ELBOWELBOW 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,
    :MASS

    alpha

    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, matn

    REVOLVE, .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,
    0

    RULEDRULED 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 >
    1

    4(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+m

    3D- 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 1

    X

    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 !#2

    1

    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, 4

    ADD -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 CUTEND

    CUTPLANE 60 CUTPLANE -120 BRICK 2, 2, 2 BRICK 2, 2, 2CUTEND
    CUTEND

    CUTPOLYCUTPOLY 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, 15CUTEND

    A=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 TOP

    CUTPOLYACUTPOLYA 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 TOP

    i

    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 I

    CUTFORMCUTFORM 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, sn

    POLY2_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, sn

    POLY2_ . 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.0

    MUL2 -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.0

    DEL 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.0

    ADD2 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.0

    1 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. Добавление новых параметров в объекте Кондиционер Воздуха

  1. Показывать текст: тип параметра – логическое значение,
    что подразумевает два возможных значения: 0 (нет) и 1 (да). Таким
    образом, текст можно будет включить или отключить.
  2. Специальный текст: тип параметра – текстовый. Позволит
    вписывать любой текст в символ (я намерена использовать одну букву,
    чтобы она помещалась внутри прямоугольника блока кондиционера).
  3. Шрифт: тип – текстовый. Обратите внимание – некоторые
    виды написания этой переменной позволяют выбирать в столбце значения
    шрифта из списка установленных на компьютере. «Fonttype» вызывает это
    список автоматически, если же я напишу «typefont» или просто «font», то
    придется писать название шрифта вручную. Этот момент я заметила случайно
    в каком-то из стандартных объектов.
  4. Перо текста: тип – перо. Ну, тут всё понятно.

Теперь посмотрим на пиктограммы, которые я нажала в начале строк.

У первой строки нажата пиктограмма , что означает 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
sphere 1

! разница в координатах позиции глаз и объекта по оси 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.

Понравилась статья? Поделить с друзьями:
  • Samsung a71 руководство пользователя
  • Г кац е мухаматулиной метафорические карты руководство для психолога 2015
  • Стиральная машина indesit 671 xw инструкция
  • Как собрать пояс верности для мужчин инструкция
  • Курсовая работа по классному руководству в начальных классах