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

Значек 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

Этот экспертный материал продолжает цикл
статей «ARCHICAD: открывая заново», начатый в декабре 2016 года статьей
Владимира Савицкого «Создание конструкций и извлечение рабочих чертежей из модели», а затем продолженный публикациями Светланы Кравченко «ARCHICAD: открывая заново. Визуализация – новые возможности для архитектора» и Александра Анищенко «TEAMWORK: эффективная командная работа шаг за шагом».
Цикл призван помочь пользователям в полной мере раскрыть весь потенциал
ARCHICAD®. Мы попросили архитекторов поделиться личным опытом
использования программы с применением нестандартных подходов,
малоизученных функций и новых возможностей, о которых многие
пользователи могут и не подозревать. Как разработчики приложения
ARCHICAD мы уверены, что только глубокое знание продукта может раскрыть
всю его ценность и решающим образом повлиять на результаты, скорость и
качество работы проектировщика.

Вы тоже предпочитаете «непротоптанные
дорожки»? Имеете опыт применения нестандартных подходов в работе с
ARCHICAD, регулярно задействуете не самые известные возможности
приложения? Будем рады пригласить к сотрудничеству новых авторов: ehffvn(zar)tencuvfbsg.pbz»>ehffvn(zar)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.

ArchiCAD 11 GDL Reference Guide

Graphisoft

Visit the Graphisoft website at http://www.graphisoft.com for local distributor and product availability information.

ArchiCAD 11 GDL Reference Guide

Copyright © 2007 by Graphisoft, all rights reserved. Reproduction, paraphrasing or translation without express prior written permission is strictly prohibited.

Trademarks

ArchiCAD and ArchiFM are registered trademarks and PlotMaker, Virtual Building, StairMaker and GDL are trademarks of Graphisoft. All other trademarks are the property of their respective holders.

Introduction

This manual is a complete reference for Graphisoft’s proprietary scripting language, GDL (Geometric Description Language). The manual is recommended for those users who wish to expand on the possibilities presented by the construction tools and object libraries available in Graphisoft software. It gives a detailed description of GDL, including syntax definition, commands, variables, etc.

ArchiCAD 11 GDL Reference Guide

3

4

ArchiCAD 11 GDL Reference Guide

General Overview ____________________________________11 Starting Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Library Part Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Analyze, Deconstruct and Simplify . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Elaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Entry Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Intermediate Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Advanced Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Expert Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3D Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

The 3D Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Coordinate Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 The GDL Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 The GDL Script Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

GDL Syntax _________________________________________21 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Characters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Simple Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Derived Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23

Coordinate Transformations __________________________ 25 2D Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 3D Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Managing the Transformation Stack . . . . . . . . . . . . . . . . . . . .29

3D Shapes __________________________________________31 Basic Shapes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

BLOCK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 BRICK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 CYLIND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

SPHERE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ELLIPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 CONE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 PRISM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 PRISM_. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 CPRISM_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 BPRISM_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 FPRISM_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 HPRISM_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 SPRISM_. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 SLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 SLAB_. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 CSLAB_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 CWALL_. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 BWALL_. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 XWALL_. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 XWALL_{2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 BEAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 CROOF_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 ARMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 ARME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 ELBOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Planar Shapes in 3D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

HOTSPOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 LIN_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 RECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 POLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 POLY_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 PLANE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 PLANE_. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 CIRCLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 ARC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Shapes Generated from Polylines . . . . . . . . . . . . . . . . . . . . . . . 62

EXTRUDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 PYRAMID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

ArchiCAD 11 GDL Reference Guide

5

Contents

REVOLVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 RULED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 RULED{2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 SWEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 TUBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 TUBEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 COONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 MASS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Elements for Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

LIGHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 PICTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

3D Text Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 RICHTEXT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Primitive Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

VERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 TEVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 VECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 EDGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 PGON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 PIPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 COOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 BODY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 BASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Cutting in 3D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

CUTPLANE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 CUTPOLY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 CUTPOLYA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 CUTSHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 CUTFORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

Solid Geometry Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 108

GROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 ENDGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 ADDGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 SUBGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 ISECTGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 ISECTLINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 PLACEGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 KILLGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

SWEEPGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114

Binary 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

2D Shapes__________________________________________117 Drawing Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

HOTSPOT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 LINE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 RECT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 POLY2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 POLY2_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 POLY2_A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 POLY2_B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 POLY2_B{2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 POLY2_B{3} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 ARC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 CIRCLE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 SPLINE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 SPLINE2A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 PICTURE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 PICTURE2{2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126

Text Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126

TEXT2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126 RICHTEXT2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126

Binary 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127

FRAGMENT2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 FRAGMENT2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127

3D Projections in 2D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127

PROJECT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 PROJECT2{2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128 PROJECT2{3} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130

Drawings in the List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

DRAWING2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 DRAWING3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 DRAWING3{2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 DRAWING3{3} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131

Graphical Editing __________________________________ 133 Hotspot-based Editing Commands. . . . . . . . . . . . . . . . . . . . .133

HOTSPOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 HOTLINE2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137

6

ArchiCAD 11 GDL Reference Guide

Contents

HOTARC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138

Status Codes _______________________________________ 139 Status Code Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Additional Status Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141

Previous part of the polyline: current position and tangent is defined. 141

Segment by absolute endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Segment by relative endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142 Segment by length and direction . . . . . . . . . . . . . . . . . . . . . . . . . . .142 Tangential segment by length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Set start point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Close polyline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144 Set tangent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144 Set centerpoint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145 Tangential arc to endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145 Tangential arc by radius and angle . . . . . . . . . . . . . . . . . . . . . . . . . .146 Arc using centerpoint and point on the final radius . . . . . . . . . . . .146 Arc using centerpoint and angle . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 Full circle using centerpoint and radius . . . . . . . . . . . . . . . . . . . . . .147

Attributes _________________________________________ 151 Directives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151

Directives for 3D and 2D Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . .151

[LET] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 RADIUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152 RESOL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 TOLER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 PEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 LINE_PROPERTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 [SET] STYLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 SET STYLE 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155

Directives Used in 3D Scripts Only . . . . . . . . . . . . . . . . . . . . . . . . .155

MODEL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 [SET] MATERIAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156 SECT_FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 SHADOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158

Directives Used in 2D Scripts Only . . . . . . . . . . . . . . . . . . . . . . . . .159

DRAWINDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 [SET] FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159

[SET] LINE_TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160

Inline Attribute Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . .160

Materials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160

DEFINE MATERIAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 DEFINE MATERIAL BASED_ON . . . . . . . . . . . . . . . . . . . . .163 DEFINE TEXTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164

Fills. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166

DEFINE FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 DEFINE FILLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 DEFINE SYMBOL_FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171 DEFINE SOLID_FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172 DEFINE EMPTY_FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172

Line Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172

DEFINE LINE_TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172 DEFINE SYMBOL_LINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173

Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173

DEFINE STYLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173 DEFINE STYLE {2}. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .174

Paragraph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 Textblock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 Additional Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177

External file dependence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178

Non-Geometric Scripts ______________________________ 179 The Properties Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179

DATABASE_SET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 DESCRIPTOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 REF DESCRIPTOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 COMPONENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 REF COMPONENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 BINARYPROP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 SURFACE3D ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 VOLUME3D ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 POSITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 DRAWING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182

The Parameter Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182

VALUES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 PARAMETERS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 LOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185 HIDEPARAMETER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185

ArchiCAD 11 GDL Reference Guide

7

Contents

The User Interface Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

UI_DIALOG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 UI_PAGE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 UI_CURRENT_PAGE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 UI_BUTTON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 UI_SEPARATOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 UI_GROUPBOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 UI_PICT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 UI_STYLE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 UI_OUTFIELD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 UI_INFIELD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 UI_INFIELD {2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 UI_INFIELD{3} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 UI_TOOLTIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

Expressions and Functions ___________________________ 195 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 VARDIM1(expr) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 VARDIM2(expr) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Arithmetical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Relational Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Boolean Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

Arithmetical Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

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

Circular Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

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

PI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200

Transcendental Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200

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

Boolean Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201

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

Statistical Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201

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

Bit functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201

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

Special Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 String Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202

STR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 STR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 STR{2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 SPLIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 STW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 STRLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 STRSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 STRSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207

Control Statements _________________________________ 209 Flow Control Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209 NEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209 DO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210 IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212 GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 GOSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 RETURN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 END / EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214

Parameter Buffer Manipulation . . . . . . . . . . . . . . . . . . . . . . . .214 Macro Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218 The Output Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 File Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220

8

ArchiCAD 11 GDL Reference Guide

Contents

INPUT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220 VARTYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 OUTPUT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221

Miscellaneous______________________________________ 223 Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

General environment information . . . . . . . . . . . . . . . . . . . . . . . . . .223 Story information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Fly-through information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 General element parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225 Object, Lamp, Door, Window parameters. . . . . . . . . . . . . . . . . . . .225 Object, Lamp parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 Object, Lamp, Door, Window parameters — available for listing and labels only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 Object, Lamp parameters — available for listing and labels only . . .226 Window, Door and Wall End parameters . . . . . . . . . . . . . . . . . . . .227 Window, Door parameters — available for listing and labels only . .228 Lamp parameters — available for listing and labels only . . . . . . . . . .228 Label parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 Wall parameters — available for Doors/Windows. . . . . . . . . . . . . . .230 Wall parameters — available for listing and labels only . . . . . . . . . . .231 Column parameters — available for listing and labels only . . . . . . . .233 Beam parameters — available for listing and labels only . . . . . . . . . .235 Slab parameters — available for listing and labels only . . . . . . . . . . .236 Roof parameters — available for listing and labels only . . . . . . . . . .237 Fill parameters — available for listing and labels only . . . . . . . . . . . .238 Mesh parameters — available for listing and labels only . . . . . . . . . .238 Free users’ globals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239 Old Global Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240

Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

REQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242 REQUEST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243

Doors and Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

General Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253 Creation of Door/Window Library Parts . . . . . . . . . . . . . . . . . . . .254 3D related challanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .254 Rectangular Doors/Windows in Straight Walls . . . . . . . . . . . . . . . .254 Non-Rectangular Doors/Windows in Straight Walls . . . . . . . . . . .256

WALLHOLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256

WALLNICHE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260

Rectangular Doors/Windows in Curved Walls . . . . . . . . . . . . . . . .261 Non-Rectangular Doors/Windows in Curved Walls. . . . . . . . . . . .263 2D Related Challanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264

Cutting custom wall opening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264 WALLHOLE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264 WALLBLOCK2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265 WALLLINE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265 WALLARC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266

GDL Created from the Floor Plan . . . . . . . . . . . . . . . . . . . . . 266 Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

Common Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267 Reserved Keywords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267 3D Use Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268 2D Use Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270 2D and 3D Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271 Non-Geometric Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271

Property Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271 Parameter Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272 Interface Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273

Alphabetical List of Current GDL Keywords . . . . . . . . . . . . . . . . .274

A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280 F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280 G. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281 H. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281 I. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281 K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283 O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283 P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284 R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286 S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289 T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .290

ArchiCAD 11 GDL Reference Guide

9

Contents

U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

Parameter Naming Convention . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

GDL Data I/O Add-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

Description of Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Opening a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Reading Values from Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Writing Values into Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Closing Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

GDL DateTime Add-On. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

Opening Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Reading Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Closing Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

GDL File Manager I/O Add-On . . . . . . . . . . . . . . . . . . . . . . 301

Specifying Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Getting File/Folder Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

Finishing Folder Scanning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302

GDL Text I/O Add-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

Opening File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303

Reading Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304

Writing Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305

Closing File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .306

Property GDL Add-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307

CLOSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307

INPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .308

OUTPUT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311

GDL XML Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

Opening XML Document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .312

Reading XML Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313

Modifying XML Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316

Index_____________________________________________ 321

10

ArchiCAD 11 GDL Reference Guide

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Что касается Архикада и взаимосвязи 3д и 2д в нём. В Архикаде в основе элементов лежит GDL — это интерпретируемый, максимально примитивный процедурный язык, основанный на Basic. В случае с архидовскими элементами, их структура состоит, в основном, из нескольких кусков кода, исполняемых следующим образом (при создании и изменении параметров элемента): сначала исполняется блок Master, Properties, Parameter, и, в зависимости от текущего вида — 3D или 2D. При этом, надо очень чётко понимать, что 2D — это вид в плане, то есть он не обязан соответствовать виду в 3D, или в разрезе/на фасаде. То есть я могу написать ему, чтобы он на плане показывал круг, а в 3D и на фасаде он будет в виде звезды. Кактебетакое,илонмаск? С одной стороны, это позволяет сэкономить на проецировании, но с другой — это не даёт реальной честной модели на плане, как это происходит в Ревите, например.

Егор Глебов поправляет в чате канала: «Ты бы всё-таки говорил, что это всё В ДОПОЛНЕНИЕ к тому, что архикад строит честную проекцию. То есть сделать кастомное 2D отображение — это опция, а не единственный возможный вариант. Классическая команда PROJECT2.»

Поскольку для меня эта команда никогда не применима, упустил этот момент. Однако, от этого не легче.

Кроме того, из-за структуры программы, при каждом изменении параметров, элемент перерисовывает себя, и снова исполняет все эти блоки кода. Это не современный объектно-ориентированный подход с эвентной моделью, а какой-то древний атавизм, в определённых случаях не ускоряющий работу модели, а наоборот — замедляющий.

Не говоря о том, что в ГДЛ отсутствуют многие функции, распространённые в современных языках.

Например, попробуйте догадаться, как работает вот этот код:

_newStr = ""        ! intialize a new empty string

! _currStr = "12,10"
len = STRLEN (numberToStripZeroes  )
_newStr = STRSUB (numberToStripZeroes  , len - 2, len)
if _newStr = ",00" then
    _newStr = STRSUB (numberToStripZeroes  , 0, len-3)
else
    _newStr = numberToStripZeroes  
endif

Это фрагмент вот этого кода:

eps = 0.0001
paperToModel = GLOB_SCALE/1000

define style  'txtStyle'  AC_TextFont_1, AC_TextSize_1, 8, AC_TextStyle_1
style 'txtStyle'

rot2 -90

unid=1
ms=AC_MarkerSize*paperToModel
bb=ms*1.5

hotspot2 -bb,   0 
hotspot2 bb+ms, 0


line2 -bb, 0, bb+ms, 0
add2 bb+ms, 0
line2 0, 0, -ms, -ms*0.3
line2 0, 0, -ms, ms*0.3
del 1


xPos = 0
yPos = 0



if show_slope_inclination = 1 then
    r = request ("View_Rotangle", "", _angleViewRot)
    _totalRotate = (SYMB_ROTANGLE + _angleViewRot) MOD 360
    if (_totalRotate > (90 + EPS) & _totalRotate < (270 + EPS)) then
        rot2 180
    endif

!   if SYMB_ROTANGLE > 180+EPS OR SYMB_ROTANGLE < EPS then ROT2 180
    
    if inclination_in_percents then an_gle=STR(TAN(ROOF_ANGLE)*100, 3, 2)
    
    
    ! SAVE THE TEXT VARIABLE BEFORE THE STRIPPING PROCESS
    if inclination_in_percents then
        numberToStripZeroes = an_gle
    else
        numberToStripZeroes = STR(ROOF_ANGLE, 3, 2)
    endif


    ! STRIP ZEROES FROM THE END
    _newStr = ""        ! intialize a new empty string

    ! _currStr = "12,10"
    len = STRLEN (numberToStripZeroes  )
    _newStr = STRSUB (numberToStripZeroes  , len - 2, len)
    if _newStr = ",00" then
        _newStr = STRSUB (numberToStripZeroes  , 0, len-3)
    else
        _newStr = numberToStripZeroes  
    endif
    
    
    ! OUTPUT THE TEXT
    if inclination_in_percents then
        TEXT2 xPos, yPos, "i = "+ _newStr +"%"
    else
        TEXT2 xPos, yPos, "i = "+ _newStr +"°"
    endif

endif

В современных ЯП убрать нули из конца строки очень легко, обычно для этого есть специальная функция. Более того, насколько я понял, обратиться к индексу строки (символу в строке) тут напрямую нельзя. Это очень неудобно, и странно. Обычно, в общем виде, можно написать что-то вроде string[12], и получить символ номер 12 из строки string.


Может быть интересно:


libcats.org

Главная

Обложка книги Справочное руководство GDL ArchiCad 11

Справочное руководство GDL ArchiCad 11

Graphisoft

Скачать книгу бесплатно (pdf, 3.74 Mb)


Читать «Справочное руководство GDL ArchiCad 11»

EPUB | FB2 | MOBI | TXT | RTF

* Конвертация файла может нарушить форматирование оригинала. По-возможности скачивайте файл в оригинальном формате.

Популярные книги за неделю:

#1

Ф.И.Бурдейный, Н.В.Казанский. Карманный справочник радиолюбителя-коротковолновика (1959, DjVu)

440 Kb

#2

Я.Войцеховский. Радиоэлектронные игрушки (1977, djvu)

13.76 Mb

#3

Подготовка саперов, подразделений специального назначения по разминированию

Категория: Научно-популярная литература (разное)

1.49 Mb

#4

128 советов начинающему программисту

Очков В.Ф., Пухначев Ю.В.

Категория: computers, computers, prog

8.91 Mb

#5

Английский язык в картинках

I.A. Richards; Christine M. Gibson

Категория: Иностранные языки

5.77 Mb

#6

Красота в изгнании. Королевы подиума

Александр Васильев

Категория: Исторические

21.01 Mb

#7

Ограждение участка. Ограды. Заборы. Калитки. Ворота

В.И.Рыженко

Категория: Строительство

1.23 Mb

#8

Эти загадочные зеркала

В. Правдивцев

Категория: Религия. Эзотерика

88.19 Mb

#9

Самоделки школьника

Тарасов Б.В.

Категория: science, science, technical, hobby, oddjob

41.91 Mb

#10

Наука и жизнь.Маленькие хитрости

Категория: E_Engineering, EM_Mechanics of elastic materials

3.50 Mb

Только что пользователи скачали эти книги:

#1

А.С.Бернштейн. Термоэлектрические генераторы (МРБ-0252, 1956, djvu)

878 Kb

#2

1С Предприятие 8.0. Описание встроенного языка

813 Kb

#3

Общая теория относительности после Эйнтштейна

Гуревич Л.Э., Глинер Э.Б.

2.18 Mb

#4

Начальная школа

Категория: Педагогика в помощь учителю

5.41 Mb

#5

Межличностное общение

Куницына В.Н., и др.

Категория: Психология теоретическая учебная литература

692 Kb

#6

128 советов начинающему программисту

Очков В.Ф., Пухначев Ю.В.

Категория: computers, computers, prog

8.91 Mb

#7

Школа шахмат

Пожарский

Категория: 2004628-Шахматы. 375 книг в формате DJVU, Пожарский

6.48 Mb

#8

Азбука вязания. Варежки, перчатки, шапочки и шарфы

Категория: Рукоделие, Вязание

6.99 Mb

#9

Схемотехника электронных систем. Цифровые устройства

Бойко В.И., Гуржий А.Н., Жуйков В.Я.

Категория: civil, civil, hardware

6.61 Mb

#10

Прицепы к легковым автомобилям

В.В. Волгин

Категория: КНИГИ ТЕХНИКА

14.63 Mb

Понравилась статья? Поделить с друзьями:

А вот и еще наши интересные статьи:

  • Скачать мануал на тойоту витц
  • Как создать сайт на ucoz пошаговая инструкция
  • Циклоферон инструкция по применению цена в екатеринбурге
  • Долфин инструкция по применению при беременности
  • Нолицин цена в новосибирске инструкция по применению

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии