Введение в создание объектов GDL для начинающих Давид Никольсон-Коль
Graphisoft Посетите веб-сайт Graphisoft http://ww...
175 downloads
389 Views
6MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Введение в создание объектов GDL для начинающих Давид Никольсон-Коль
Graphisoft Посетите веб-сайт Graphisoft http://www.graphisoft.com для получения дополнительной информации о дистрибьюторах и имеющихся программных продуктах.
Введение в создание объектов © 2004. Originally written 2000, rewritten 2004 by David Nicholson-Cole. Все права защищены. Воспроизведение, изложение и перевод без предварительного получения письменного разрешения строго запрещены. Список участников: Marks Barfield Architects, разработчик British Airways London Eye, http://www.marksbarfield.com. Модель GDL Давида Никольсона-Коля. Опубликовано GRAPHISOFT R&D Rt. Издание 2004. Описанная в этом руководстве версия GDL совместима с ArchiCAD 8.1, ArchiCAD 9 и ArchiFM 2000.
Торговые знаки ArchiCAD и ArchiFM являются зарегистрированными торговыми знаками, а PlotMaker, Virtual Building, StairMaker и GDL торговыми знаками Graphisoft. IFC и IAI являются торговыми знаками International Alliance for Interoperability. Artlantis и PhotoCAD являются торговыми знаками Abvent. Piranesi является торговым знаком Informatix. ArchiFacade является торговым знаком Cigraph. Lara Croft является торговым знаком Core Design. Lightworks является торговым знаком Lightwork Design. Все другие торговые знаки являются собственностью соответствующих владельцев.
Про эту книгу
Выражение признательности
Эта книга прежде всего предназначена для того, чтобы содействовать повышению эффективности Вашей работы в ArchiCAD: она выведет Вас за пределы стандартных инструментальных панелей ArchiCAD в мир создания объектов. Мы надеемся, что это небольшое учебное пособие откроет для Вас новый мир. В "Часть I. Создание объектов без GDL" показывается, как можно создавать объекты с помощью существующих инструментов без программирования в языке GDL. "Часть II. Руководство по GDL для начинающих" направлена на изучение основ программирования на GDL. Мы надеемся, что обе части предоставят Вам удовольствие. Однако помните, не следует читать всю книгу для нахождения полезной для Вас информации: даже если Вы никогда не воспользуетесь языком GDL, советы по созданию объектов, приведенные в начальной части книги, существенно повысят Вашу уверенность и эффективность работы с ArchiCAD. Некоторые из приводимых в книге примеров можно найти на веб-сайте или на компакт диске.
Книга Введение в создание объектов с помощью ArchiCAD: GDL для начинающих была написана при идейной поддержке Graphisoft для заполнения того пробела, который образовался между GDL Cookbook и существующими справочными руководствами по языку. Первое издание вышло в 2000 г. для ArchiCAD 6.5 и 7.0. Данное издание было подготовлено в 2004 г. и включает возможности ArchiCAD 8 и ArchiCAD 9. В книге содержатся простые упражнения по созданию объектов, а также знания по методам создания объектов, почерпнутые из других источников, включая справочные руководства. В связи с этим выражаю признательность тем коллективам авторов, которые создавали эти руководства и учебники. Использование этого материала позволило существенно расширить исходные рамки книги. Автор выражает благодарность коллективу редакторов из Graphisoft - Анет Сзаки, Тибору Солнаки и Акош Феметер - за их многочисленные предложения и поддержку.Автор также выражает признательность Карлу Оттенштейну из Сентпоинта, Айдахо, за критические замечания и вычитку материала книги в процессе ее написания.
Про автора Давид Никольсон-Коль является архитектором и преподавателем в университете г. Ноттингем (Великобритания). Он стал восторженным проповедником GDL и создателем многих объектов после того, как убедился в мощи (и простоте использования) GDL. Он приобрел известность в мире GDL как автор серии учебников GDL Cookbook. Давид организовал серию конференций пользователей "Университет ArchiCAD" и является основателем Альянса GDL. GDL Cookbook 4 логически следует из той книги, которую Вы сейчас читаете. Эта книга содержит всеобъемлющий материал по методам и приемам программирования в GDL. Она также является полезной сама по себе как руководство по использованию GDL. Давид путешествовал по всему миру по приглашению дилеров ArchiCAD, читая лекции по GDL.
3
Замечание о печати Книга подготовлена в файле формата PDF. Книга сверстана таким образом, что ее можно распечатать с использованием обоих сторон листов бумаги.
Введение в создание объектов
4
Введение в создание объектов
Содержание
Содержание ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL __________ 7 Глава 1. Введение в создание объектов . . . . . . . . . . . . . . . . . 7 1.1. Про создание объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Библиотечные элементы ArchiCAD . . . . . . . . . . . . . . . . . 8 Источники библиотечных элементов. . . . . . . . . . . . . . . 11 Создание объектов с помощью расширений . . . . . . . . . 12 1.2. Создание собственных библиотечных элементов . . . 12 Без GDL - с использованием инструментов ArchiCAD . 12 Создание объектов с помощью скриптов GDL . . . . . . . 14 Как создается объект? . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Должен ли объект ВЫГЛЯДЕТЬ точным или БЫТЬ точным? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Идея ‘инвестиционного объекта’ . . . . . . . . . . . . . . . . . . 16 Сможете ли Вы изучить GDL? . . . . . . . . . . . . . . . . . . . . 17 Опыт работы с ArchiCAD . . . . . . . . . . . . . . . . . . . . . . . . 17 Дополнительная литература. . . . . . . . . . . . . . . . . . . . . . 18 Глава 2. Создание объектов без GDL 1. . . . . . . . . . . . . . . . . 19 2.1. Создание объектов без GDL. . . . . . . . . . . . . . . . . . . . . . 19 Приступаем к созданию объектов . . . . . . . . . . . . . . . . . 19 2.2. Давайте что-то создадим в 2D . . . . . . . . . . . . . . . . . . . . 20 2.3. Получение файла из DXF/DWG . . . . . . . . . . . . . . . . . . 21 2.4. Давайте сделаем 3D-объект стола . . . . . . . . . . . . . . . . . 22 2.5. Давайте сделаем 3D-окно с помощью перекрытия . . . 23 2.6. Давайте сделаем стул с помощью инструмента Стена 25 2.7. Давайте создадим ферму крыши из штриховки. . . . . . 27 Итоги этой главы по созданию объектов . . . . . . . . . . . 29 Глава 3. Создание объектов без GDL 2. . . . . . . . . . . . . . . . . 30 3.1. Использование основных фигур библиотеки . . . . . . . . 30 Построение ‘банановой’ фермы или объекта вертикального импоста . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2. Давайте создадим объект путем сечений . . . . . . . . . . . 32 3.3. Городское моделирование . . . . . . . . . . . . . . . . . . . . . . . 34 Городское моделирование - здания в виде объектов . . . 34 Городское моделирование - вся местность может состоять из одного объекта . . . . . . . . . . . . . . . . . . . . . . 36 Введение в создание объектов
Городское моделирование - камера самое мощное оружие! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.4. Создание объектов с помощью расширений и операций над объемными элементами . . . . . . . . . . . . . . . . 36 Профайлер - создание тел вращения и перемещения . . 37 3.5. Создание маховика с помощью Профайлера! . . . . . . . 38 3.6. Преобразование 3D-сеток в крыши . . . . . . . . . . . . . . . 40 Другие расширения в ArchiCAD . . . . . . . . . . . . . . . . . . . . 41 3.7. Подрезка стен под крыши . . . . . . . . . . . . . . . . . . . . . . . 42 Операции над объемными элементами (ООЭ) решают все проблемы! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Примечания относительно именования объектов . . . . 44 Зачем надо создавать объекты? . . . . . . . . . . . . . . . . . . 45 Используете ли Вы студенческую версию? . . . . . . . . . . 45 Итоги этой главы по созданию объектов . . . . . . . . . . . 45 ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ___________________________________47 Глава 4. Начало работы с GDL . . . . . . . . . . . . . . . . . . . . . . . 47 4.1. Начало работы с GDL . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Скрипты и кнопки в таблице параметров. . . . . . . . . . . 47 3D-сущности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Первые шаги в 3D GDL. . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3D-вид. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Проверка скрипта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3D-пространство и 3D-курсор . . . . . . . . . . . . . . . . . . . . 50 Не забывайте о 2D-скрипте . . . . . . . . . . . . . . . . . . . . . . 52 Итоги по GDL к этому моменту . . . . . . . . . . . . . . . . . . 52 4.2. Давайте построим 3D-объект - стул . . . . . . . . . . . . . . . 52 4.3. Давайте сделаем стул параметрическим . . . . . . . . . . . 54 4.4. Первый шаги в написании 2D-скриптов . . . . . . . . . . . 57 Выбор объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Подтипы - можно приписать объекту категорию . . . 59 Итоги этой главы по изучению GDL . . . . . . . . . . . . . . . 59 Глава 5. Предоставление в GDL вариантов выбора . . . . . 61 5.1. Предоставление в GDL вариантов выбора. . . . . . . . . . 61
5
Содержание
5.2. Логические параметры - простейший вариант выбора62 5.3. Всплывающее меню - возможность выбора значений 63 5.4. Концепция мультиобъекта . . . . . . . . . . . . . . . . . . . . . . 66 Итоги этой главы по изучению GDL . . . . . . . . . . . . . . . 69 Глава 6. Мощь команды PRISM. . . . . . . . . . . . . . . . . . . . . . 70 6.1. Мощь команды PRISM . . . . . . . . . . . . . . . . . . . . . . . . . 70 PRISM является самым гибким 3D-элементом GDL . . 70 ‘Мгновенный GDL’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Написание призмы с самого начала . . . . . . . . . . . . . . . . 72 О синтаксисе команд призм . . . . . . . . . . . . . . . . . . . . . . 72 6.2. Применение призм к коробке сидения . . . . . . . . . . . . 75 6.3. Познакомимся с геометрией круга и сделаем стул более удобным. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Итоги этой главы по изучению GDL . . . . . . . . . . . . . . . 79 Глава 7. Анализ автоматически построенных скриптов. 80 7.1. Анализ автоматически построенных скриптов. . . . . . 80 Анализ автопостроенного 3D-скрипта стола . . . . . . . 81 Стол можно сделать параметрическим . . . . . . . . . . 84 Примечания относительно модификации объектов . . 88 7.2. Вернемся к ‘мгновенному GDL’. . . . . . . . . . . . . . . . . . 89 Используем 'мгновенный GDL' с командой REVOLVE . 89 Модификация объектов, созданных с помощью расширений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Итоги этой главы по изучению GDL . . . . . . . . . . . . . . . 92 Глава 8. Встроенная мощь GDL . . . . . . . . . . . . . . . . . . . . . . 93 8.1. Подпрограммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Золотые правила написания подпрограмм . . . . . . . . . . 95 8.2 Макросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Подпрограммы и макросы . . . . . . . . . . . . . . . . . . . . . . . . 96 Сложный пример макроса. . . . . . . . . . . . . . . . . . . . . . . . 97 8.3. Текстура - раскрытие большого секрета . . . . . . . . . . . 98 Можно накладывать текстуру с помощью макросов 101 Дополнительные замечания относительно текстуры101 Итоги этой главы по изучению GDL . . . . . . . . . . . . . . 101 Глава 9. Объекты афиш . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 9.1. Объекты афиш - использование реалистических рисунков! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 9.2. Создание афиш в виде аппликации . . . . . . . . . . . . . . 103
6
9.3. Создание афиш с помощью альфа-канала с рисунком . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 9.4. Прямоугольная аппликация - комбинированный объект. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 9.5. Идея афиши в 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 9.6. Создание афиши - использование фотографии . . . . .111 Итоги этой главы по построению афиш . . . . . . . . . . .112 Глава 10. Окна и двери GDL. . . . . . . . . . . . . . . . . . . . . . . . .113 10.1. Окна и двери GDL . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 Правила для окон и дверей. . . . . . . . . . . . . . . . . . . . . . . .113 10.2. Возврат к ранее созданному окну . . . . . . . . . . . . . . .114 10.3. Вы также можете создать световой люк . . . . . . . . . .117 10.4. Построение очень сложного окна . . . . . . . . . . . . . . .119 Примечание относительно последующих версий ArchiCAD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Объекты могут быть лучше окон . . . . . . . . . . . . . . . . .122 Итоги этой главы по изучению GDL . . . . . . . . . . . . . . .123 Глава 11. Дополнительные возможности GDL . . . . . . . . .124 11.1. Дополнительные возможности GDL . . . . . . . . . . . . .124 Язык программирования GDL. . . . . . . . . . . . . . . . . . . . .125 11.2. Циклы - FOR... NEXT . . . . . . . . . . . . . . . . . . . . . . . . .125 Цикл FOR... NEXT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 Цикл с подсчетом чисел . . . . . . . . . . . . . . . . . . . . . . . . .125 Цикл по расстоянию - его оптимизация! . . . . . . . . . . .126 Изящный способ вычисления расстояния . . . . . . . . . . .127 Цикл по величине угла . . . . . . . . . . . . . . . . . . . . . . . . . . .127 Другие возможности по построению циклов . . . . . . . .129 11.3. Графические узловые точки . . . . . . . . . . . . . . . . . . . .130 Построим графические узловые точки . . . . . . . . . . . . .131 11.4. Операции над объемными элементами . . . . . . . . . . .131 Операции над стулом . . . . . . . . . . . . . . . . . . . . . . . . . . .132 11.5. Определение текста в 2D . . . . . . . . . . . . . . . . . . . . . .133 11.6. Другие возможности . . . . . . . . . . . . . . . . . . . . . . . . . .134 11.7. Советы начинающим в GDL. . . . . . . . . . . . . . . . . . . .135 11.8. Изменения в ArchiCAD 9 . . . . . . . . . . . . . . . . . . . . . .136 Предметный указатель ____________________________ 137
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL Глава 1. Введение в создание объектов Введение в возможности ArchiCAD по созданию объектов с помощью GDL и без него. Архитектура - это "... осознанное, правильное и величественное оперирование объемами, создаваемыми под воздействием света". - Ле Корбюзье
1.1. Про создание объектов Реальные пространственный мир может мыслиться как совокупность объектов, которые становятся видимыми под лучами света. 3D-среда ArchiCAD может быть воспринята как большая театральная сцена, на которой Вы объединяете в единое целое исполнителей (элементы и объекты), декорации (план этажа) и сценарий (проектные идеи). Вы объединяете объекты как единое целое, освещаете их и - представление начинается! Большинство объектов ArchiCAD - это конструктивные элементы: стены, крыши, колонны, 3D-сетки и т.д. Они объединяется в единое целое для создания сооружений. Эти элементы легко создаются с помощью инструментов ArchiCAD. Вы можете пойти дальше и воспользоваться специальными объектами, такими как мебель, окна, двери, источники света и т.д. В руководствах по ArchiCAD все такие объекты называются библиотечными элементами. Они могут быть найдены в Ваших библиотеках или созданы. Итак, почему мы должны беспокоиться по поводу создания новых объектов? Мы может создавать: • конструктивные элементы, которые выполняют свои функциональные назначения; • детали строительных элементов, которые выглядят подлинными; • мебель, удобную, элегантную и функциональную; • комплектующие изделия, которые соответствуют каталогам и спецификациям производителей этих изделий; Введение в создание объектов
• источники света, которые преобразуют окружающую среду модели; • окна и двери, которые вырезают проемы в стенах, открываются и закрываются, с различными рамами и коробками, металлическими конструкциями и переплетами; • световые люки и слуховые окна, которые вырезают проемы в крыше, как окна и двери в стенах; • выносные надписи и текстовые блоки для нанесения специальных текстов; • лестницы, для которых Вы можете менять площадки, ступени и перила; • рисунки, которые могут быть размещены в модели для придания ей естественного вида; • чертежные 2D-объекты и инструменты, которые обогащают ваши чертежи. Короче говоря, простота и производительность работы пользователей ArchiCAD существенно зависят от имеющихся объектов. Эта книга как раз нацелена на обучение пользователей основам создания объектов ArchiCAD. Одной этой книги недостаточно. Следует также изучить Справочное пособие по GDL содержимое меню Справка и Справочное руководство по ArchiCAD. Вам придется часто "погружаться" в эти книги. Если Вы хотите приобрести дальнейшие знания по созданию объектов, то следующим шагом после изучения этого учебника может быть ознакомление с книгой GDL Cookbook, в которой рассматриваются более развитые возможности GDL.
7
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Если Вы используете ArchiCAD, то можете заметить, что большинство библиотечных элементов содержат различные параметры, позволяющие настраивать свойства объекта, например, количество створок окна или стиль филенок дверного полотна. Они также предоставляют возможность указать различные способы представления объектов на плане этажа и в 3D-окне (покрытия, перья, штриховка). Если Вы уже пытались создавать объекты в ArchiCAD без помощи GDL (мы будем называть такие объекты ‘с автоматически построенными скриптами’), то обычно получали объекты, у которых единственной возможностью по их изменению было удлинение/укорочение. Ваши объекты, скорее всего, не предлагали такую возможность, например, как указание их покрытий. Данное введение по созданию объектов направлено на то, чтобы Вы научились самостоятельно создавать объекты, более того, такие объекты, которые можно изменять, то есть параметрические объекты. Башня Эврика в Мельбурне, архитектор Фендер Катсилидес. Технология создания объектов предназначена не только для визуализации. Это центральная задача создания конструкторской документации.
Библиотеки должны быть загруженными Если Вы создали объект, то ArchiCAD должен уметь его найти. Всякий раз при запуске ArchiCAD, он читает каталоги (папки) библиотеки и создает индекс найденных библиотечных элементов.
Библиотечные элементы ArchiCAD При разработке проекта можно использовать основные инструментальные средства построения модели: стены, перекрытия, колонны, крыши и т.д. Инструментальная панель ArchiCAD также предоставляет доступ к библиотечным элементам: объектам мебели, источников света, окон, дверей, световых люков и т.д. В инструментальной панели, в меню Сервис и в меню Расширения Вы можете найти расширения, такие как ArchiTerra, StairMaker, Профайлер или RoofMaker. Для размещения объектов в проекте следует предпринимать различные действия, например, щелчок и буксировка, щелчок и щелчок и другие. Более того, во многих случаях открывается диалоговое окно, в котором устанавливается множество характеристик создаваемого объекта.
8
Существующая библиотека ArchiCAD - это папка в каталоге установленного ArchiCAD. По умолчанию происходит загрузка собственной библиотеки ArchiCAD. Однако при разработке проекта или экспериментировании с GDL Вы можете создавать дополнительные папки с вновь созданными объектами. При этом следует убедиться, что имена созданных папок и объектов не повторяются в уже существующих библиотеках. При работе в ArchiCAD следует следить за тем, чтобы сохраняемые Вами объекты запоминались в папках загруженных библиотек.
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Вы можете либо создать новую библиотечную папку, которая связывается с текущими проектами, либо объекты могут быть запомнены в персональной библиотеке в папке ArchiCAD. Важно, чтобы Вы помнили, где они располагаются, и чтобы они были загружены в ArchiCAD. Следует логически упорядочить и соответствующим образом назвать подпапки, содержащие объекты текстуру и т.д.
этап жизненного цикла здания. IFC рассматривает такие этапы жизненного цикла, как анализ (осмысливание), проектирование, управление и даже разрушение построенной среды. При этом на всех этапах жизненного цикла является важным наличие документации, а управление зданием осуществляется коллективом, которому необходим доступ к информационной базе данных совместного пользования. Объекты могут классифицироваться по подтипам, например, они могут относиться к окнам, крышам, хранилищам или другим типам (классам) объектов. Если Ваша модель ArchiCAD использует объекты GDL, созданные в различных странах, как ArchiCAD поймет, что собой представляют объекты с такими именами ‘sedia’, ‘janela’, ‘fenster’, ‘Tur’, ‘tepe_penceresi’, ‘iskemle’, ‘parathiro’? Является ли ‘lanterna’ источником света или это световой люк? ArchiCAD знает!
Что появилось нового в этой книге? С момента предыдущей публикации этой книги в 2000 году в языке GDL появилось много незначительных изменений. Давайте проанализируем четыре наиболее значительных изменения, которые влияют на создание объектов. Подтипы. Сейчас имена всех объектов имеют расширение .GSM и объекты содержат уникальный внутренний идентификатор, на основании которого ArchiCAD распознает тип объекта: окно, дверь, источник света и т.д. На международных конференциях было принято решение о способе классификации объектов виртуального мира, который получил название Industry Foundation Classes (IFC). Graphisoft играет ведущую роль в этом движении. 3D-модель на самом деле является большой базой данных, для которой 3D-вид просто является визуальной демонстрацией ее содержимого, а процесс проектирования представляет собой всего лишь один Введение в создание объектов
Сейчас все объекты имеют внутренний идентификационный код GUID (Globally Unique IDentifier - глобальный уникальный идентификатор), который включает классификацию подтипов
9
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
и позволяет API внутри ArchiCAD правильно распознавать объекты. Поэтому световой люк будет вырезать отверстия в крышах, а не в стенах; лампы будут иметь яркость и цвет освещения, а не будут делать проемов в крышах. GUID - это довольно мощный инструмент идентификации, намного более мощный, чем имя объекта. Для эксперимента я изменил имя объекта в библиотеке, перезагрузил библиотеку и проверил план этажа. Объект остался на прежнем месте, с новым именем и с таким же внешним видом в 3D-окне, так как его GUID не изменился (не делайте этого сами!). Вы можете быстро получить список категорий IFC в GDL. Для этого выполните команду Файл > Объекты GDL > Открыть объект по подтипу. Щелчками раскройте списки и Вы увидите исчерпывающий перечень типов объектов, включая животные, автомобили, изгороди и ограждения и.т.п. Графические узловые точки. Сейчас объекты GDL могут иметь специальные узловые точки, которые предназначаются для редактирования формы объекта. В предыдущих версиях GDL допускалось только изменять размеры объекта путем растяжения/сжатия прямоугольного параллелепипеда вокруг него. Теперь пользователь может оперативно управлять объектом, например, он может вытащить выдвижной ящик стола или шкафа, открыть или закрыть дверь, изменить расположение полок. Это делается в 3D и/или 2D с помощью узловых точек, которые легко определить. Для тех, кто использует GDL для создания объектов, следует помнить, что графические узловые точки являются весьма полезным и удобным средством оперативной работы пользователей с объектами.
Эта труба может быть растянута, скручена, повернута в 3D и 2D с помощью графических узловых точек.
10
Операции над объемными элементами (ООЭ). Необходимые объемные тела могут быть получены также с помощью операций объединения или вычитания объемных тел. Пересекающиеся трубы могли бы выглядеть нормально при 3D-визуализации, однако их вид может оказаться некорректным при каркасном представлении. Теперь можно произвести объединение таких труб с получением их правильного соединения. Мы может вычитать 3D-контуры из пространственных фигур (например, удалять сферическую поверхность из перекрытия) с созданием фигур, которые не могут быть получены с использованием обычных конструктивных инструментов и команд. Это так называемые в ArchiCAD операции над объемными элементами.
Сейчас в ArchiCAD с помощью операций над объемными элементами можно легко получить такой вырез в деревянном бруске Open GL. Это новый механизм 3D-визуализации, разработанный в Silicon Graphics. Он работает намного быстрее, чем механизм ArchiCAD, использует программы ускорения для специального аппаратного обеспечения графической видеокарты Вашего компьютера. Open GL обладает возможностями работать с невидимыми линиями, отбрасыванием теней, текстурой, устранением ступенчатости, освещением, геометрическими преобразованиями и т.д. Это оказывает существенное влияние на представление объектов, так как раньше текстура не использовалась в полной мере. Сейчас же отсутствие текстуры рассматривается как недопустимый факт. Этот механизм позволяет создавать модель с большим количеством многоугольников, что дает более детализированное и сглаженное представление Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
реальных объектов. Open GL можно использовать для создания высококачественных изображений, как это сделано в этой книге. Визуализация. В ArchiCAD 9 используется новая технология визуализации, а именно, Lightworks. Это один из наиболее популярных механизмов визуализации, среди имеющихся на рынке. В настоящее время более 80 приложений используют эту технологию и более 1 миллиона человек пользуются нею. Сейчас механизм визуализации Lightworks встроен в интерфейс ArchiCAD. Lightworks дает возможность создавать высококачественные фотореалистические изображения. В Lightworks реализованы механизмы трассировки лучей света, отбрасывания неконтрастных теней, отражения лучей и механизмы редактирования сложных ретушировщиков. Причем Lightworks работает с собственными элементами ArchiCAD. Для получения дополнительной информации см. документацию по ArchiCAD 9, а также веб-сайт http://www.lightworks.com/.
Источники библиотечных элементов Библиотека ArchiCAD Прежде, чем приступить к созданию собственных библиотечных элементов, просмотрите Библиотеку ArchiCAD, входящую в состав пакета. Изучите ее возможности. Здесь Вы можете найти библиотечные элементы, которые никогда ранее не использовали и не предполагали использовать. Вы можете посмотреть, как изменяются параметры элементов и это может натолкнуть Вас на мысль о том, какие именно качественные и количественные характеристики позволят создать то, что Вам необходимо - возможности 3D-представления, изменение размеров с помощью узловых точек, применение текстуры, вразумительные 2D-символы, всплывающие меню и даже пользовательский интерфейс.
Дальнейшее развитие ArchiCAD Какую бы версию ArchiCAD Вы не использовали в момент чтения этой книги, Вы можете быть уверенными, что легко найдете пути решения возникающих перед Вами проблем. Каждая новая версия наращивается корректно в том смысле, что пользователи легко приспосабливаются к новым возможностям. Основные средства моделирования (стены, перекрытия, крыши) усовершенствуются от версии к версии, однако остаются легко узнаваемыми и воспринимаемыми специалистами. Имеются дополнительные инструменты для построения колонн, балок, 3D-сеток. В последнее время появилась технология расширений - специальные инструменты, которые упрощают процесс моделирования. GDL сам по себе представляется в виде внутреннего кода ArchiCAD и изменяется от версии к версии, однако не настолько существенно, что опытный пользователь не смог бы сразу же воспользоваться его новыми возможностями.
Введение в создание объектов
GDL широко поддерживается. В Интернете имеется много сайтов с рекомендациями по созданию объектов.
Дополнительные библиотеки В Интернете и на компакт-дисках имеется несколько специальных библиотек, поставляемых компаниями, занимающимися созданием объектов, например, People and More, Theometrics, Hoshino, M.A.D. и т.д. В Интернете постоянно увеличивается количество сайтов, посвященных объектам ArchiCAD, таких как GDL Central (www. gdlcentral.com) и Objects On Line (www.objectsonline. com). Попытайтесь найти следующее в Google: Studio Arkada, Arkiklub, ArchiRadar, GDL Alliance, Cigraph. На веб-сайте Graphisoft приводится список адресов таких сайтов. На сайте
11
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
GDL Central Вы можете найти адреса компаний, которые используют GDL для создания своих продуктов. Вы можете обнаружить, что с помощью специальных программ можно просматривать объекты GDL в веб-браузерах, изменять их параметрически и визуализировать, как это обычно делается в ArchiCAD.
Библиотеки DXF и DWG Большинство производителей строительных элементов предлагают диски с файлами DXF/DWG, хотя подавляющее большинство из них являются 2D-элементами. Всегда стоит проанализировать такие диски, так как файлы DXF/DWG могут использоваться в ArchiCAD, и Вы можете воспользоваться ими в GDL. 2D-файлы DXF и DWG могут непосредственно вставляться в планы проектов. Здесь Вы можете проанализировать их на предмет создания на их основе новых библиотечных элементов с использованием параметрических возможностей GDL. Что касается 3D-представления, Вы также можете создавать объекты с помощью других приложений, разработанных сторонними компаниями, например, Zoom, Sketchup, Rhino, Design Workshop, AutoCAD, 3DS. Вы можете сохранить как DXF/DWG и затем импортировать в ArchiCAD в виде библиотечных элементов. В руководстве по конвертированию DXF/DWG, которое входит в состав документации по ArchiCAD, процедура экспорта/импорта файлов DXF/DWG описывается детально. Сайты типа 3D Cafe (www.3dcafe. com) заполнены объектами, созданными различными компаниями, хотя, как правило, они являются моделями DXF/DWG, требующими их импорта в ArchiCAD через GDL. Как бы они хорошо не выглядели, они не будут параметрическими. Вы также можете приложить свои усилия в другом направлении. Если Вы изучили GDL, то можете создавать плоские или пространственные библиотечные элементы в GDL, используя параметрические возможности этого языка, и затем сохранять результирующее многообразие параметрических фигур в виде отдельных файлов DXF/DWG. Элементы, созданные в GDL, будут полностью или частично работать в AutoCAD или ADT с использованием GDL Adaptor.
12
Использование старых библиотек - обновление библиотечных элементов Вы можете воспользоваться библиотечными элементами из старых версий ArchiCAD при условии, что их имена имеют трехбуквенное расширение. Они будут намного медленнее загружаться и могут работать неправильно. Вы можете ускорить этот процесс с помощью меню Специальное. При запуске ArchiCAD нажмите клавиши Opt-Cmd (Mac) или Alt-Ctrl (PC). При этом в линейке меню появится меню Специальное. Загрузите библиотеку, которую Вы хотите обновить. Затем выполните команду Обновить библиотечные элементы из меню Специальное. Обновление может занять 10-20 минут. При этом в старые библиотечные элементы включатся GUID и другие свойства, характерные для ArchiCAD 8/9.
Создание объектов с помощью расширений Имеется ряд программ, написанных сторонними компаниями, которые могут создавать и редактировать библиотечные элементы ArchiCAD, например, Zoom GDL, 3NF. Вы также можете найти большое количество расширений, который могут создавать объекты ArchiCAD, например, RoofMaker, Trussmaker, Профайлер, Аксессуары крыш, зон и стен, ArchiForma, GDL Toolbox. Создаваемые с помощью этих расширений объекты содержат скрипты GDL, а также другие, зависимые от конкретного приложения, данные.
1.2. Создание собственных библиотечных элементов Без GDL - с использованием инструментов ArchiCAD В инструментальной панели ArchiCAD имеются 3D-инструменты для построения стен, перекрытий, крыш, которые могут использоваться для создания различных объектов независимо от их исходного назначения. Вы можете, Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
например, построить обеденный стол из стен и перекрытий. Ножками этого стола могут быть небольшие толстые перекрытия или короткие тонкие стены. Крышка стола может быть построена из перекрытия. Выделяющийся торец крышки стола может быть сделан из очень тонкой и низкой стены. Построенный объект можно просмотреть в 3D-окне и сохранить как библиотечный элемент. Созданные на плане этажа библиотечные элементы можно сохранять либо в формате редактируемых скриптов, либо в двоичном формате. Редактируемые скрипты можно изменять путем переписывания их скриптов. Вы можете производить такие важные изменения в библиотечном элементе, как, например, редактирование покрытий или выбор других перьев. Двоичные библиотечные элементы быстрее загружаются, но их нельзя редактировать и они не имеют других параметров, кроме изменения размеров - ширины, толщины и высоты. Если Вы хотите произвести другие изменения в библиотечном элементе, то следует вернуться к его оригиналу на плане этажа, произвести необходимые изменения, сохранить его в виде того же самого или другого двоичного библиотечного элемента. Если Вы сохраняете элементы плана этажа в виде скрипта GDL, то сложность создаваемого скрипта зависит от типа используемых элементов. Инструменты Перекрытие и Крыша приводят с созданию скрипта GDL, который относительно легко модифицировать. Инструмент Стена приводит к созданию скрипта, который намного сложнее модифицировать, а в некоторых случаях это вообще невозможно сделать, однако их легче построить. Широкие возможности предлагает инструмент 3D-сетка. Создаваемые с помощью этого инструмента поверхности могут преобразовываться в крыши и сохраняться как объекты. Иногда создаваемые с помощью инструментов ArchiCAD объекты легче строятся в горизонтальном положении, чем в вертикальном. Окна и двери строятся на плане этажа в "лежачем" положении, а ArchiCAD при необходимости преобразует их в вертикальное положение.
Введение в создание объектов
Иногда оказывается невозможным создать объект целиком за один раз. Например, Вы сначала создаете ножки и сохраняете их; затем Вы создаете более сложную конструкцию и также ее сохраняете; далее, создаются некоторые дополнительные детали, которые также сохраняются. В библиотеке ArchiCAD имеются такие примитивы, как цилиндры, конусы и купола, которыми Вы также можете воспользоваться в качестве составных частей Вашего объекта. Наконец, Вы собираете в единое целое все построенные элементы на плане этажа и сохраняете объединенную конструкцию в качестве окончательного библиотечного элемента. Далее в этой книге имеется упражнение, демонстрирующее такую процедуру. Имейте в виду, что этот результирующий объект можно будет использовать, если в загруженных библиотеках будут находиться все составляющие его объекты.
Это изогнутое деревянное кресло целиком построено из небольших стен. Более опытные пользователи могут сочетать возможности инструментов ArchiCAD с языком программирования GDL. На плане этажа ArchiCAD нельзя вращать объекты (кроме вращения вокруг оси Z). Однако, используя GDL, Вы можете вращать фигуры в любом направлении. Вы можете построить фигуру на плане этажа с использованием стен, крыш или перекрытий, сохранить ее в виде объекта GDL, затем загрузить ее на план этажа, включить в GDL-проект и приступить к усовершенствованию этой фигуры с помощью GDL: переместить в нужное место, повернуть, усовершенствовать или упростить.
13
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Не все объекты обязательно должны иметь объемное представление. Используя 2D-инструменты построения линий, текстов и штриховки, Вы рисуете стандартные 2D-символы и затем с помощью команды Файл > Объекты GDL > Сохранить выбранное как создаете библиотечный элемент. Если Вы хотите воспользоваться 3D-объектом для создания 2D-элемента, выберите его, декомпозируйте и сохраните полученные линии в виде нового библиотечного 2D-элемента. При этом исходный 3D-объект не изменяется. Все библиотечные элементы являются объектами, однако при сохранении библиотечного элемента Вы должны принять решение, будет ли он действительно объектом (например, объектом мебели или частью какой-нибудь строительной конструкции), или окном, или дверью. Если элемент должен быть источником света или специальным объектом мебели, разместите его на плане этажа, откройте его и выберите для него новый подтип.
Эта точная модель корабля береговой охраны США была построена путем копирования чертежей DWG в ArchiCAD с использованием 2D-штриховки, перемещением фигур штриховки в GDL и настройки 3D-подпрограмм. Не следует терять компоненты, построенные с помощью инструментов ArchiCAD. Может появиться необходимость отредактировать их или усовершенствовать и затем повторно
14
сохранить. Выберите Вашу компоненту и сохраните ее как модуль. Модуль сохраните на диске в папке возле Вашей библиотеки. Дайте файлу такое имя, чтобы по нему можно было вспомнить, из какого объекта он был создан. Если имеются модули, то может возникнуть вопрос, зачем сохранять объекты? Ответ следующий: если Вы хотите, чтобы создаваемые Вами фигуры обладали свойствами объектов (например, изменять размеры), и их можно было редактировать (например, приписывать покрытия), и они правильно использовались в различных каталогах, то их следует запоминать как библиотечные элементы.
Создание объектов с помощью скриптов GDL Даже незначительные знания GDL позволяют пойти намного дальше тех возможностей, которые были описаны выше. Если Вы в состоянии строго описать то, что хотите, в виде слов и чисел, то можете создавать объекты с помощью GDL. Именно поэтому этот язык называется языком геометрических определений. • В связи с тем, что GDL имеет много развитых команд построения плоских и объемных фигур, Вы можете строить такие объекты, которые невозможно создавать с помощью инструментов ArchiCAD. Эти объекты могут быть сложными и изощренными. • Так как Вы можете определять различные свойства объекта, например, диаметр, пространственное расположение, толщину, покрытия, перья и т.д., то Ваши объекты могут быть вариативными, то есть, они могут быть параметрическими. • Так как в GDL Вы определяете элементы заданием точных значений размеров, углов или других свойств, то создаваемые Вами объекты становятся такими, какими они нужны, то есть они является точными. • Так как Вы можете воспользоваться командами IF, то можете реализовывать правила поведения объектов, например, соответствующие требованиям производителя изделия, или реакцию на неправильное задание значений Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
параметров, или взаимозависимость между размерами составляющих компонент и т.д., то есть они могут быть "сообразительными". • Так как Вы можете написать такие процедуры, которые могут многократно выполнять одни те же действия по созданию конструктивных элементов, то Ваши объекты могут являться инструментами. • Так как Вы можете поворачивать, перемещать и изменять размеры компонент модели, то есть Ваши объекты могут изменять форму этих компонент, то Вы можете создавать объекты-механизмы. Вы также можете принимать решения относительно того, какие части модели GDL могут отбрасывать тени, какими перьями должны рисоваться те или иные составляющие объекта, сколько и какие многоугольники должны быть криволинейными. Вы можете создавать свои собственные покрытия - яркие матовые, прозрачные или светящиеся таким образом, что они могут использоваться в языковой версии ArchiCAD, отличающейся от Вашей. Объекты GDL могут быть зависимыми от установок размерных характеристик, так как они могут быть параметрическими; модели GDL могут иметь десятки различных конфигураций, выбираемых из всплывающих меню. GDL является идеальным инструментом для Интернет, позволяющим создавать такие изделия, как офисную мебель или мебель для кухни. Объекты GDL можно использовать на различных компьютерных платформах. Они экономичны по своим объемным характеристикам. Их можно просматривать в браузерах, с помощью параметров устанавливать их конфигурацию и закачивать через Интернет.
Как создается объект? Оглянитесь вокруг, проанализируйте окружающие Вас 3D-объекты. Посмотрите, нет ли в Вашем распоряжении примитивных фигур, из которых может состоять объект. Большинство объектов состоят из параллелепипедов, призм, цилиндров, конусов, труб или специальных поверхностей. Ваша кружка может оказаться пустотелым цилиндром с Введение в создание объектов
основанием. Ваш портативный компьютер может быть представлен с помощью двух плоских брусков, подвешенных на шарнирах. Ваша мышка - это фигура в виде вытянутого яйца с плоской нижней поверхностью. Спросите себя, какие детали реального объекта следует включить в создаваемую модель, а какие из них являются несущественными с точки зрения функциональных характеристик или создаваемого 3D-изображения. Подумайте, на каком расстоянии объект должен хорошо распознаваться. Используйте такой уровень детализации объекта, который Вы в состоянии промоделировать с помощью инструментов ArchiCAD или скриптов GDL. Некоторые эффекты объемного представления, например, шероховатость поверхностей намного легче достигаются с использованием текстуры, а не с помощью моделирования физических характеристик поверхностей. Если Вы предполагаете использовать инструменты ArchiCAD (а не GDL), проанализируйте будущий объект с точки зрения его соответствия возможностям этих инструментов (например, стен, перекрытий, крыш и т.д.). Не забудьте о примитивных фигурах, которые имеются в библиотеке, а также о фигурах, которые можно создать с помощью Профайлер или Trussmaker. Если же Вы предполагает использовать GDL, попытайтесь представить Ваш объект в виде параллелепипедов, сфер, цилиндров и конусов. По мере роста Вашей квалификации можно привлекать такие фигуры, как призмы, тела вращения, сложные поверхности.
Должен ли объект ВЫГЛЯДЕТЬ точным или БЫТЬ точным? Объект, который используется для отделки интерьера, может обладать способностью придавать интерьеру роскошный вид. Для него достаточно, чтобы он ВЫГЛЯДЕЛ точным. Он может быть построен с помощью инструментов ArchiCAD или GDL; его размеры могут быть выбраны ‘на глаз’. Вы используете сетку в качестве основы построения объекта и его размеры могут быть настолько точными, насколько Вы можете этого
15
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
достигнуть при ручном построении. Созданные с помощью инструментальной панели ArchiCAD объекты будут выглядеть согласно возможностям выбранного инструмента. Другие же объекты должны быть абсолютно точными, чтобы можно было получать их корректные изображения на плане этажа и в разрезах. Они должны быть настолько точными, чтобы помещаться в отведенное для них пространство, например, в размеры, определенные для кухни или ванной. В предельном случае может потребоваться, чтобы они согласовывались с требованиями систем САПР или систем быстрого прототипирования. В связи с этим такие объекты должны БЫТЬ точными. В этом случае следует воспользоваться возможностями GDL.
Идея ‘инвестиционного объекта’ Прежде, чем приступить к разработке объекта, задайте себе вопрос, будет ли этот объект использоваться многократно, будет ли полезным для других проектов. Может оказаться так, что Вы являетесь единственным человеком, который создает объекты для других. Поэтому следует создавать такие объекты, которые были бы полезными для многих. Если Вы создаете параметрически настраиваемые объекты, то это может занять намного больше времени, чем использование для их создания инструментов ArchiCAD. Однако, если объект является многоаспектным и может в дальнейшем использоваться во многих проектах, то затрачиваемые на разработку такого объекта усилия и время вполне себя оправдывают и пользователи будут благодарны Вам за это.
16
Инвестиционные объекты: Эта парапетная лестница требует много времени для ее построения в зданиях Orcutt Winslow (Аризона), причем каждая из них крайне медленно вычерчивается в 2D-разрезах с различной высотой для каждой лестницы. С другой стороны, автор этой книги потратил менее часа для написания объекта GDL этой лестницы, который конфигурируется в различных возможных направлениях и содержит 2D- и 3D-данные для покрытий, расположения и соединений. Более того, объекты, созданные с помощью инструментов ArchiCAD, становятся нередактируемыми, если был потерян файл плана, в котором они были созданы (и Вы также забыли сохранить их в виде модулей). Написанные на GDL программы можно усовершенствовать и делать более мощными по мере приобретения Вами новых знаний и навыков программирования в GDL или при появлении в новых версиях ArchiCAD новых возможностей этого языка. Написанный на GDL объект может быть использован в организации через много лет после того, как Вы уволились; им можно не просто воспользоваться, но и переписать, усовершенствовать, добавить новые возможности, Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
например, введением графических узловых точек или более совершенной текстуры. Идея инвестиционных объектов имеет еще один аспект созданные Вами объекты могут применяться в AutoCAD и ADT с использованием GDL Adaptor. Сколько человек могут наслаждаться хорошими параметрическими объектами и быть благодарными их разработчикам?
Сможете ли Вы изучить GDL? Для построения многих объектов нет необходимости прибегать к GDL. Для этого вполне можно обойтись инструментами ArchiCAD. Опытные пользователи ArchiCAD, которые боятся GDL, могут преобразовывать стены, перекрытия и крыши в сложные объекты. Но при этом они лишаются удовольствия создавать параметрические объекты. Если Вы решили обойтись без инструментов ArchiCAD и воспользоваться GDL, имейте в виду, что GDL является очень простым языком программирования по сравнению с другими, имеющимися в САПР-пакетах. GDL базируется на языке BASIC - самом простом языке программирования. Миллионы людей изучили BASIC на заре становления микрокомпьютеров. И GDL остается самым стойким последователем BASIC. Специалисты, которые утверждают, что BASIC является недостаточно мощным для написания коммерческих приложений, могут быть поставлены в тупик программами, написанными на GDL. Пользователи ArchiCAD, которые приступали к изучению GDL, удивлялись, насколько простым он является по сравнению с тем, что они ожидали. Они неожиданно для себя обнаруживали, что могут практически применить полученные в школе знания по математике. Начинающие пользователи по прошествии небольшого промежутка времени начинают удивляться быстрым ростом своих способностей. Они начинают создавать объекты, которые впечатляют их коллег. В свою очередь квалифицированные специалисты в GDL все время находят в этом языке неизвестные для них методы и приемы. Повышая свою квалификацию, программисты Введение в создание объектов
расширяют свои возможности по построению объектов. Даже если они почувствовали, что познали возможности GDL в совершенстве, появление новой версии ArchiCAD Graphisoft раскрывает перед ними новые возможности.
Опыт работы с ArchiCAD Можно ли создавать хорошие объекты в языке GDL без хорошего знания ArchiCAD? Ответ на этот вопрос не однозначен. Все дело в том, что ArchiCAD является тем рабочим инструментом, который реализует заложенные в GDL идеи, то есть инструментом, который создает 3D- и 2D-инструменты, поддерживает различные методы построения, например, волшебную палочку и бегущую рамку, реализует операции разделения, перемещения, изменения размеров, зеркального отражения, тиражирования и т.д. Если Вы опытный пользователь ArchiCAD, то сможете более точно сказать, что собой должны представлять те или иные объекты - есть ли смысл изменять их размеры, трудно ли будет их выбирать или позиционировать, должны ли они быть прозрачными или нет, будут ли они выглядеть "неповоротливыми" на плане этажа, сможет ли будущий пользователь понять описание их параметров? Критический взгляд опытного пользователя поможет Вам в создании пригодных и удобных для использования объектов.
Правописание и грамматика Примечание для педантов: В этой книге некоторые из слов выделены большими буквами или курсивом для привлечения к ним внимания или в связи с тем, что они являются заголовками, например, Инструмент Стена. В некоторых случаях Вы будете не согласны с правописанием, например, colour, metre. metre. В англоязычном издании этой книги используется английское, а не американское правописание. Для стран, в которых в качестве разделителя десятичных знаков используется запятая, помните: в GDL запятая используется как символ-разделитель языка, а точка - как разделитель десятичных знаков.
17
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Изучая, обращайтесь к объектам Попытайтесь получить объекты, которые иллюстрируются в этой книге, из компакт-диска или с веб-сайта, и используйте их по мере чтения книги.
Project Framework: Обсуждается, как можно с максимальной пользой использовать ArchiCAD в профессиональной деятельности. Также даются хорошие рекомендации по организации Ваших библиотек. Вы также можете вести заметки по мере приобретения опыта по созданию объектов. Фиксируя успехи, Вы создаете свой собственный банк знаний.
Дополнительная литература Помимо этой книги о создании объектов Вы можете прочитать в следующих руководствах и пособиях: Справочное руководство ArchiCAD - обратитесь к содержанию и предметному указателю. Обратите особенное внимание на раздел "Параметрические объекты" (глава, посвященная инструментам ArchiCAD). Этот раздел является важным дополнением к данной книге и его, наверное, стоило бы привести здесь, так как он содержит очень важную информацию, относящуюся к созданию объектов. Руководство по конвертированию DXF/DWG - Описывает способы использования объектов, созданных в других системах САПР. ArchiCAD Training Guide: Описывается создание библиотечных элементов (см. содержание этой книги). Справочное пособие по GDL: Описывается синтаксис команд GDL, а также дается подробная информация по различным аспектам программирования в GDL. Меню Справка в ArchiCAD: Приводится синтаксис команд GDL. Этот раздел обновляется с каждым появлением новой версии ArchiCAD, что не скажешь о справочном пособии, этой книге и других учебных материалах. Следующий материал не включается в пакет ArchiCAD, но его можно получить: GDL Cookbook: Книга, направленная на изучение GDL с позиций разработки проекта. В ней излагается как сам язык, так и техника программирования в нем. Предназначена для начинающих и квалифицированных пользователей.
18
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Глава 2. Создание объектов без GDL 1 Прежде, чем приступить к изучению GDL, следует стать опытным специалистом по созданию объектов с помощью инструментов ArchiCAD.
2.1. Создание объектов без GDL Многие пользователи ArchiCAD сначала приобретают опыт по созданию объектов с помощью обычных конструктивных элементов инструментальной панели ArchiCAD. В связи с этим для начинающих пользователей мы рекомендуем сначала познакомиться именно с таким подходом в построении объектов, и только затем приступить к GDL.
Три способа сохранения объектов из ArchiCAD Создайте объект из стен, перекрытий и выберите его курсором на плане этажа. Затем воспользуйтесь одни из следующих трех способов. 1 Если объект был создан в вертикальном положении или лежа на боку, перейдите 3D-окно, на план этажа или в разрез соответственно. Сохраните результирующий вид в качестве библиотечного элемента с помощью команды Файл > Объекты GDL > Сохранить 3D-модель как. Сохраните его как объект .GSM, окно или дверь. Сохраните его в одной из загруженных библиотек. 2 Если объект был создан в вертикальном положении в 3D или если он является 2D, воспользуйтесь командой Файл > Объекты GDL > Сохранить выбранное как для его сохранения в одной из загруженных библиотеках. 3 Если объект является 2D, воспользуйтесь командой Файл > Объекты GDL > Новый объект. После открытия диалогового окна GDL нажмите кнопку 2D-символ и нарисуйте в 2D-окне требуемый объект или скопируйте и вставьте то, что Вы нарисовали ранее на плане этажа. Установите значения А и В, чтобы указать размеры объекта на чертеже. Первые два способа называются "автоскриптированием" (автоматическое построение скриптов). ArchiCAD создает библиотечный элемент GDL с 3D-фигурой (если она есть) и с либо 2D-скриптами, либо 2D-смволом, а также с программой, которая обеспечивает возможность растяжения объекта. Введение в создание объектов
Каждый объект, 2D или 3D, имеет размер воображаемого куба, который его охватывает со значениями параметра А для ширины, В - для глубины и zzyzx - для высоты. В первых двух способах эти характеристики устанавливаются автоматически, а в третьем - вручную. После создания таким образом объекта откройте его по команда Файл > Объекты GDL > Открыть объект. В открывшемся диалоге Вы можете посмотреть скрипты объекта - очень полезный процесс с точки зрения изучения языка GDL. Создаваемые таким образом скрипты GDL можно назвать "промышленными". Они совершенно обескураживающие по своему внешнему виду и немного сложнее "созидательного GDL’", которым мы воспользуемся в этой книге.
Приступаем к созданию объектов Прежде, чем приступить к созданию первого объекта с помощью инструментальной панели (без использования GDL), убедитесь, что Вы хорошо знакомы со следующими возможностями ArchiCAD: • Использование волшебной палочки (для преобразования, например, заштрихованной области в перекрытие, перекрытия в крышу, линию в стену и т.д.). • Установка сеток, основной и вспомогательной, и установка метрических единиц измерения и единиц с десятичными дюймами. • Использование координатного табло для точного установления координат. • Использование диалоговых окон установки параметров инструментов, например, для задания покрытий и размеров. • Использование расширений, например, Profiler и Trussmaker. • Анализ готовых объектов GDL из библиотеки Конструкции специальные > Тела и фигуры геометрические.
19
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
• Использование бегущей рамки и команды С 3D-разрезами для создания сечений объектов. • Операции над объемными элементами (новая возможность, которая появилась в ArchiCAD 8). • Создание криволинейных сторон перекрытий и заштрихованных областей с помощью локальной панели. • Использование диалога Параметры 3D-проекции для правильного расположения камер и их углов обзора. • Создание окон разрезов/фасадов и выполнение операций копирования/вставки между ними и планом этажа. • Тиражирование, поворот и зеркальное отражение элементов. • Привязка текстуры - установка начала и направления.
Установка параметров Откройте новый файл ArchiCAD, загрузите Вашу стандартную библиотеку, создайте новую папку для ее использования в качестве рабочей библиотеки и сохраните в ней или в другом удобном месте Ваш новый файл. Установите основную сетку в 12” или 300 мм, а вспомогательную в 5 мм или 0.2”. Увеличьте изображение в области проектного начала координат таким образом, чтобы видимая на экране область была больше того объекта мебели, который мы собираемся построить. Постарайтесь работать недалеко от начала проектных координат, а не возле начала временных координат. Тонкие линии облегчают процесс построения 3D-объектов, а линии истинной толщины облегчают процесс построения 2D-объектов
2.2. Давайте что-то создадим в 2D Давайте создадим 2D-объект для ванной комнаты. В этом случае скрипты не пишутся и можно воспользоваться 2D-инструментами. Вы можете использовать такие элементы для создания символов электрооборудования, мебели для кухни или ванной комнаты, специальные символы деревьев и растений.
20
Имеются две возможности создания таких объектов: начертите объект на плане этажа с помощью линий, дуг, штриховки, узловых точек и текстов. Выберите построенный элемент, выполните команду Файл > Объекты GDL > Сохранить выбранное как и запомните объект в загруженной библиотеке (способ 2). Рекомендуем использовать непрозрачные заштрихованные области, чтобы он закрывал собой цветной фон. Побеспокойтесь, чтобы объект не был чувствительным к масштабу, чтобы его текстовые элементы, линии и векторная штриховка четко различались согласно масштабу окончательного чертежа. Теперь загрузите сохраненный объект на план этажа. Для этого выберите его в диалоге установки параметров инструмента Объект. Обычно самый последний сохраненный объект является текущим объектом, и именно он появляется при размещении объекта на плане этажа.
Если Вы теперь откроете объект (из подменю Файл > Объекты GDL), то обнаружите, что 2D-вид имеет скрипт, включая все узловые точки из исходного чертежа. Это объект может быть сохранен как ‘bthrm_whb.gsm’, а другие два объекта могут быть сохранены под именами ‘bthrm_wc.gsm’ и ‘bthrm_bidet.gsm’. Другая возможность создания 2D-объекта (3) заключается в создании нового объекта (по команде Файл > Объекты GDL > Новый объект). В открывшемся диалоге нажмите кнопку 2D-символ и в появившемся окне нарисуйте необходимый Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
символ (или скопируйте его из плана этажа). Проверьте реальный размер создаваемого объекта и установите значения параметров ширины (А) и глубины (В). В противном случае Ваш чертеж будет искажен при создании из него объекта. Преимущество этого метода заключается в том, что Вы всегда можете возвратиться к объекту, добавить к его чертежу новые детали в окне 2D-символа или оснастить узловыми точками в необходимых "ключевых" местах, например, по углам чертежа. Если Вы не определили ни одной узловой точки, Вы все же получите пять "стандартных" узловых точек.
Установите правильные значения для параметров А и В Вам не часто придется создавать 2D-объекты, так как библиотека ArchiCAD имеет много таких объектов и многие 3D-объекты библиотеки ArchiCAD имеют режим "только 2D", при котором опускается вся 3D-информация.
2.3. Получение файла из DXF/DWG Если Вы хотите получить 2D-объект из DXF/DWG, то сначала импортируйте его на план этажа. Затем Вы сможете его подправить, установить правильный масштаб и сохранить в качестве библиотечного 2D-элемента, как мы это делали в предыдущем разделе. Если Вы хотите получить 3D-объект из DXF/DWG, то импортируйте его как библиотечный элемент GDL. Для этого выполните команду Файл > Объекты GDL > Открыть объект. Выберите формат файла DXF или DWG. и найдите требуемый файл. Сделайте щелчок на нем. Вам будет предложен транслятор по умолчанию. Он представляет 3D DWG в виде скрипта GDL. Сохраните объект, затем разместите его на плане этажа и откройте его: проанализируйте его скрипты. Все 2D- и 3D-данные будут
Введение в создание объектов
импортированы, однако вы можете обнаружить, что скрипт имеет очень большие размеры. Вы можете разочароваться обнаруженным фактом. Все, что было импортировано из DXF/DWG, не является объемными телами. Текст скрипта состоит из большого количества неупорядоченных многоугольников и линий. Для редактирования такого текста надо большое терпение и удачу. Максимум, что реально можно отредактировать, так это 2D-символ, и вставить в тексты 3D-скриптов команды IF, чтобы показать или спрятать некоторые части, а также добавить покрытия и номера перьев. 3D-объект может быть импортирован с неправильными размерами, так как Вы можете не знать, в каких единицах измерения он был создан: в миллиметрах, дюймах, футах или метрах. Если размер такого объекта меньше булавочной головки или превышает размер всего города, Вы можете создать копию транслятора по умолчанию и настроить его параметры конвертирования масштаба. Он также может быть расположен за много километров от начала проектных координат. Объемные тела могут иметь отверстия изнутри-наружу. Вы можете обнаружить, что отсутствие какого-либо контроля над большим количеством многоугольников приводит к тому, что время визуализации такого объекта становится совершенно недопустимым. Многие объекты могут быть найдены с помощью Google. Прежде, чем инициировать закачку, проверьте формат файла. Выберите DXF/DWG, если такая возможность имеется. Не упускайте возможность поинтересоваться у разработчика имеющимися у него объектами GDL.
21
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
щелчок на обесцвеченном основном начале координат.
2.4. Давайте сделаем 3D-объект стола
Вы можете воспользоваться функцией локальной панели по изменению кривизны линейных сторон объекта. Помните, что с помощью диалога установки параметров перекрытия следует будет выбрать покрытия крышки стола и его ножек. Цилиндрический элемент ножки стола можно сделать путем превращения с помощью волшебной палочки окружности в перекрытие или воспользовавшись цилиндрическим элементом в библиотеке ArchiCAD. Возможно, в этом случае наилучшим вариантом является использование инструмента Колонна с установлением необходимых размеров и покрытий.
Следующим нашим объектом будет вертикально стоящий стол. Для этого наиболее подходящим инструментом является Перекрытие. Начнем построение с крышки стола, затем добавим ножки и каркас. Для построения каждой из этих частей воспользуемся диалоговым окном установки параметров размеров перекрытия. Помните, что высота перекрытия - это возвышение его верхней поверхности, а толщина измеряется от верхней поверхности вниз. Если бы Вы строили стол из стен, то в данном случае возвышение стены задается относительно ее основания, а высота измеряется вверх относительно основания. Это поможет Вам в будущем (если захотите воспользоваться GDL) для построения относительно основного начала координат. Если Вы создали временное начало координат в и основное начало стало недоступным (представлено в сером виде), выберите инструмент Начало координат и сделайте
Чтобы быть уверенным, что все ножки одинаковые, сначала постройте одну. Затем воспользуйтесь командой Редактор > Переместить копию для размещения других ножек. Если эта команда отсутствует, откройте диалоговое окно Параметры > Рабочая среда > Разное и активируете маркер Показывать
Эта модель Эйфелевой башни была импортирована из DXF-файла, взятого из веб-сайта Эйфелевой башни. К сожалению, она лежит на боку и имеет только 150 м. в высоту. После получения определенных навыков работы Вы сможете сделать некоторые исправления, например, сделать так, чтобы она стояла, сделать новый 2D-символ, изменить ее высоту и спланировать пространство вокруг.
22
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
команды копирования элементов в меню Редактор. При использовании сетки можно получить более точные размеры стола. Воспользуйтесь возможностями координатного табло для ввода координат X и Y. При этом Ваш стол будет иметь абсолютно точные размеры. Увеличить точность можно также благодаря включению позиционирования по сеткам. В этом случае воспользуйтесь небольшой по размеру сеткой, например, 10 мм или 3/8”. Сделайте высоту стола, равной 750 м (30”).
Теперь выберите построенный стол с помощью инструмента Объект и разместите его на плане этажа. Размещенный объект не будет отличаться от своего оригинала, однако это объект GDL можно многократно размещать на плане этажа, он будет появляться в сметах и его можно использовать в других моделях зданий. Этот стол можно растягивать, однако при этом произойдет деформирование размеров его секций. Поэтому постройте его с заданием требуемых размеров, чтобы избежать такого деформирования. Какой бы хороший стол Вы не построили, он не является параметрическим; нельзя будет оперативно изменять его высоту, расстояние между ножками, толщину крышки и т.д. без Вашего дополнительного вмешательства в автоматически созданные скрипты GDL. Вопросы редактирования ‘промышленного GDL’ будут рассмотрены далее в этой главе.
После построения стола выберите его и с помощью диалога Параметры 3D-прекции представьте стол в 3D-окне с удалением невидимых линий, вид сверху, камера расположена под углом 270°. Сохраните стол по команде Файл > Объекты GDL > Сохранить 3D-модель как.
2.5. Давайте сделаем 3D-окно с помощью перекрытия Окна создаются "лежащими" на полу и лучше всего их создавать с помощью инструмента Перекрытие. Лучше всего их создавать так, чтобы начало координат располагалось симметрично в центре подоконника окна. Внешняя сторона коробки должна располагаться на высоте проектного нуля, то Введение в создание объектов
23
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
есть лежать в плоскости земли. Обычно перекрытия имеют верхнюю поверхность на уровне плоскости земли, поэтому обратите внимание на то, чтобы коробка создаваемого окна располагалась на правильной высоте и возвышении. Сначала начертите прямоугольное перекрытие, определяющее общий размер оконного проема. Затем выберите его и с помощью инструмента Перекрытие начертите еще одно прямоугольное перекрытие внутри существующего. Тем самым задается отверстие в перекрытии, которое определяет полость коробки. Лучше было бы построить коробку из четырех отдельных частей. В этом случае Вы сможете, используя возможности Open GL, получить более естественную визуализацию текстуры, так как GDL создает текстуру для каждой из частей в отдельности. Установите покрытие для этого перекрытия, соответствующее покрытию коробки. Теперь начертите еще одно перекрытие в окне, установите его толщину 20 мм (3/4”) и выберите покрытие 'Стекло' для верхней, нижней и боковых поверхностей. Проверьте, чтобы стекло правильно располагалось по высоте коробки. Для достижения большей наглядности можно добавить несколько небольших секций коробки, чтобы они выглядели как оконные створки, и небольшое перекрытие под проектным нулем, которое будет выполнять функцию подоконника.
установлена связь между коробкой, створкой и остеклением. Воспользуйтесь видом разреза/фасада для получения другого изображения окна. Обратите внимание на правильность расположения остекления. В нашем случае проектный ноль расположен точно по центру подоконника. Это не является абсолютной необходимостью, так как ArchiCAD производит настройку окна при его сохранении так, что начало координат располагается в нужном месте. Тем не менее, рекомендуем с самого начала правильно расположить начало координат. После построения перекрытий выберите все их элементы и посмотрите на них в 3D-окне в виде сверху камерой, расположенной под углом в 270°, как это Вы делали со столом. Воспользуйтесь каркасным методом визуализации, чтобы увидеть коробку. Хотя Вы просматриваете окно в виде сверху, однако ArchiCAD развернет их при их встраивании в стены. Сохраните 3D-вид как объект и в последующем диалоге нажмите на пиктограмму Окно. Отметьте маркер, который свидетельствует о необходимости удаления ненужных линий. Обратите внимание, чтобы объект был сохранен в одной из установленных библиотек. Если таких библиотек нет, создайте свою собственную папку для окон и дверей. Когда Вы указываете, что сохраняете окно или дверь, ArchiCAD ассоциирует с такими объектами свойство вырезать проемы в стене. Проем будет соответствовать размерам окна/двери.
На рисунке выше показывается, как должно располагаться окно относительно проектного нуля. Проверьте, что правильно
24
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Вернитесь на план этажа, постройте стену и выберите окно для его размещения в стене. Выберите только что сохраненное окно. Разместите его в стене. Обратите внимание, чтобы щелчок курсором-глазом был произведен с внешней стороны стены (сторона, где имеется больше узловых точек). Сейчас Вы можете посмотреть на полученный результат и изменить параметры - только размер. Вы можете заменить, что текстура не выглядит корректно для всех сторон коробки. Чтобы текстура выглядела лучше, перед сохранением окна к каждой из частей коробки примените команду Редактор > Привязка 3D-текстуры.
Прежде, чем двигаться далее, обратите внимание, что 2D-символ (расположенный справа на рисунке выше) слишком ужасный для его использования на плане. Кривая в верхней части символа окна создает большое количество излишних линий. Вы должны открыть окно как объект GDL, нажать кнопку 2D-символ. Открывается чертежное окно 2D-символа, в котором Вы можете удалить ненужные линии и подобрать толщину пера (левая часть рисунка выше).
Окна необычной формы - идея ’wallhole’ Приведенный выше пример настолько простой, что Вы можете найти аналогичные окна в библиотеке ArchiCAD. Такие окна вырезают прямоугольные проемы в стене. Нам же необходимо окно более сложной формы. Суть такого построения заключается в том, чтобы наложить крышу или перекрытие на контуры окна и присвоить накладываемому объекту ID ‘wallhole’. Мы рассмотрим подробно этот прием позже в главе 10, посвященной окнам и дверям.
2.6. Давайте сделаем стул с помощью инструмента Стена Техника построения дверей аналогична построению окон. Однако Вам потребуется GDL, чтобы изменить стиль окна или двери, сделать дверь открытой или закрытой, добавить решетку, предложить различные варианты остекления или фурнитуры.
Введение в создание объектов
Многие объекты легче создавать лежащими на боку в связи с их конструктивной сложностью или сложностью их формы. Их можно намного легче построить в профиле, чем в виде совокупности располагающихся вертикально перекрытий и стен. Можно с большой пользой использовать инструмент Стена. Стены весьма полезны в связи с тем, можно устанавливать их толщину и высоту и их можно создавать с помощью волшебной палочки. Стены более "управляемы" с точки зрения поддержания криволинейных форм по сравнению с перекрытиями. Единственная проблема заключается в том, что они обладают свойством соединяться друг с другом с использованием эффекта скошенного соединения. В диалоге Вывод на экран Вы можете отключить чистое сопряжение стен для прямолинейных объектов. Чтобы криволинейные стены выполняли свои функции, мы должны сохранить чистое сопряжение стен.
25
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
небольших болтов, которые соединяют рейки, что можно сделать с помощью небольших, но очень высоких перекрытий. Воспользуйтесь параметрами сруба в диалоге установки параметров стены и установите высоту бревна в 30 мм (1.25”), для имитации бамбуковых подлокотников. Бревна могут быть только прямолинейными. Для достижения эффекта криволинейности следует воспользоваться GDL.
Поставим стул вертикально в 3D Приведенный на рисунке выше стул прекрасно иллюстрирует возможности инструмента Стена. Это же кресло можно создать с помощью инструмента Перекрытие, но сделать это будет намного сложнее.
Построение корпуса и сиденья Сначала с помощью инструментов построения 2D-линий начертим контуры корпуса стула, включая кривые линии подлокотников. Теперь в диалоге установки параметров стен выберем покрытие Дерево, установим толщину 30 мм (1.25”) и высоту 150 мм (6”). При выбранном инструменте Стена активируем волшебную палочку нажатием клавиши Пробел и сделаем щелчок на построенной кривой. Вдоль контура кривой будут построены небольшие стены. Убедитесь, что стены сгруппированы, и переместите копию сгруппированных стен в сторону. Теперь с помощью команды Сместить по вертикали поднимите группу стен на 600 мм (24”). Переместите группу стен назад таким образом, чтобы они располагались точно над исходной группой стен. Итак, мы построили корпус стула. Используя те же установки стены, постройте прямолинейные отрезки сиденья и спинки. Измените их высоту так, чтобы они имели возвышение 150 мм (6”) и высоту 600 мм (24”), как это показано на рисунке. Сделайте дубликаты стен сиденья и спинки, установите их толщину 90 мм (3.5”) и примените к ним тканевое покрытие. Вы можете воспользоваться инструментом Конец стены, который появился в ArchiCAD 8.1, чтобы скруглить торцы стены. То же самое можно сделать с помощью инструмента Перекрытие. Для завершения встроим в стул несколько
26
Теперь давайте поставим наш стул в нормальное вертикальное положение. В диалоге Параметры 3D-проекции выберите параллельную проекцию, вид сбоку, азимут камеры 90°. Сохраните 3D-вид в виде библиотечного элемента в одной из загруженных библиотек. На этот раз выберите пиктограмму объекта (не окна или двери), выберите альтернативную кнопку сохранения редактируемого GDL-скрипта и отметьте маркер удаления излишних линий.
Разместите построенный стул в проекте и насладитесь им! Полученное изображение стула приведет в восторг его создателя. Для его улучшения, возможно, следует отредактировать его 2D-символ (как мы это уже делали для окна), чтобы удалить излишние линии.
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
крышу сделайте так, чтобы стены оказались подрезанными под крышу. Вставьте в стены окно и дверь, если хотите. Сейчас с помощью инструмента Разрез/фасад начертите линию сечения, проходящую через здание, и посмотрите результат в окне разреза/фасада.
Создание рисунка образца Создадим для нашего объекта реалистическое изображение размером 128x128 пикселов для его предварительного просмотра. Выберите его и скопируйте. Откройте диалоговое окно GDL этого объекта, нажмите кнопку Рисунок образца и вставьте рисунок из буфера обмена. Этот рисунок будет использоваться для представления объекта в файловой системе Windows/Finder. С помощью рисунка объект можно будет легче найти при просмотре объектов в диалоге установки параметров объектов. В окно Рисунок образца Вы можете вставить изображение любого размера. При этом GDL изменит его масштаб соответствующим образом. При этом помните, изображение размером 128x128 пикселов вставляется без каких-либо искажений. Не обязательно использовать изображения, получаемые в ArchiCAD. Можно воспользоваться, например, любой фотографией или логотипом компании.
Для этого внутреннего вида (визуализированного в ArchiCAD) необходимо добавить деревянные фермы.
2.7. Давайте создадим ферму крыши из штриховки В этом упражнении устанавливается связь между окнами плана этажа и разреза/фасада. Постройте небольшое здание на одну комнату и разместите над ним скатную крышу. Сделайте так, чтобы стены были выше крыши и затем с помощью команды Подрезать под Введение в создание объектов
Нанесение заштрихованных областей в разрезе Перейдите в окно разреза/фасада. Вы можете воспользоваться инструментом Линия для нанесения направляющих линий,
27
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
чтобы быть уверенными, что Ваши балки располагаются с нужными углами наклона и имеют необходимую глубину. При открытом окне разреза/фасада можно воспользоваться только 2D-инструментами. Воспользуйтесь инструментом Штриховка, чтобы нанести контур небольшой фермы. Это гарантирует, что будущая ферма будет хорошо подогнана под крышу. Выберите инструмент Штриховка и продолжите построение заштрихованной области. Если нужны отверстия, то их можно вырезать в штриховке. Таким образом, Вы формируете контуры всей фермы. В нашем случае воспользуйтесь различными заштрихованными областями для построения стальных растяжек, балок и болтов. Теперь выберите всю построенную штриховку, скопируйте ее, перейдите на план этажа и вставьте содержимое буфера обмена. Переместите штриховку в свободное место. Хорошо, если одна из угловых конечных точек фермы будет располагаться вначале координат - возможно, это будет точка опоры фермы. В этом Вам помогут узловые точки. Теперь с помощью волшебной палочки преобразуем построенную штриховку в перекрытие с возможным использованием отверстий (в нашем случае их нет).
Создание 3D с помощью волшебной палочки и перекрытий Прежде, чем использовать Инструмент Перекрытие убедитесь, что оно расположено по центру в плоскости земли. Установите для балки толщину 100 мм, верхняя часть перекрытия - 50 мм и покрытие - Дерево. Таким образом, ферма располагается по центру (в вертикальном направлении) относительно проектного нуля. Вы можете сделать аналогичные установки для стальных растяжек и болтов. У Вас могут появиться небольшие проблемы с волшебной палочкой. Сначала сделайте пробел-щелчок на контуре штриховки для получения контуров фермы. Если в ферме имеются отверстия, выберите новое перекрытие, выберите опять инструмент Перекрытие (убедитесь, что в информационном табло указывается инструмент перекрытия, а не штриховки) и затем сделайте пробел-щелчок на
28
штриховке отверстия. При этом в перекрытии будет вырезано отверстие. Постройте небольшую ферму вроде той, которая приведена на рисунке. Если Вы сделали ошибку, удалите ненужные перекрытия и повторите описанные выше действия. Если есть желание, то можете попытаться построить более сложную ферму, с большим количеством составляющих элементов, или с более разнообразными размерными характеристиками, с дополнительными металлическими пластинами для придания большей реалистичности.
Сделайте так, чтобы две стороны фермы были отдельными путем разделения перекрытия в вершине. Примените команду Привязка 3D-текстуры к каждой из сторон фермы. Это улучшит внешний вид результирующего объекта. Выберите ферму, перейдите в 3D-окно, выберите вид сбоку параллельной проекции, установите азимут камеры в 90°. Сохраните 3D-вид как библиотечный элемент, выберите пиктограмму объекта и вы получите объект фермы с выровненной текстурой.
Привидение в порядок 2D-символа - добавление узловых точек Разместите созданную ферму на плане этажа. Откройте ее как объект GDL и отредактируйте 2D-смивол. Разместите 2D-узловые точки в вершине и в точках, где ферма опирается на стену. Это облегчит процесс размещения фермы в модели. Разместите ферму на здании и посмотрите в разрезе/фасаде, что получилось. Используйте это окно, чтобы правильно Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
разместить ферму по высоте и относительно стен. Убедитесь, что ферма точно совпадает с ранее нанесенной штриховкой. Объекты с автоматически построенными скриптами могут изменять свои размеры, поэтому будьте внимательными при манипулировании ими. Вы не должны изменять их размеры случайным образом. Воспользуйтесь командами Редактор > Переместить копию или Редактор > Тиражировать > С распространением для их перемещения и дублирования. Также воспользуйтесь координатным табло для точной установки их расположения в пространстве. Этот же метод может использоваться для построения сложных конструкций. Единственное существенное ограничение - они не будут параметрическими и все они будут прямолинейными в разрезе. Trussmaker является хорошим инструментом для построения ферм, состоящих из одного материала. Этот же метод можно использовать для построения ферм, содержащих, например, в своей конструкции металл и дерево. Помните, построенные из одного перекрытия объекты будут иметь текстуру с одной ориентацией и не будут выглядеть подлинными. Для этого следует использовать несколько перекрытий, как это мы сделали с нашей фермой.
Итоги этой главы по созданию объектов • Вы можете создавать сложные объекты без GDL с помощью 3D-инструментов или существующих библиотечных объектов. Их можно растягивать, но они все же не будут изящными. Они не являются параметрическими за исключением возможности изменения размеров. • Можно создавать 2D- и 3D-объекты. Их можно сохранять с плана этажа или из 3D-окна. • Окна и двери можно создавать, не прибегая к программированию в GDL. • Инструмент Стена является мощным средством для построения объектов без GDL. • С помощью волшебной палочки можно превращать 2D-элементы ArchiCAD в объекты.
Теперь жильцы имеют прекрасную деревянную крышу со стальными распорками!
Введение в создание объектов
29
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Глава 3. Создание объектов без GDL 2 Существуют методы создания объектов без программирования в GDL и использования стандартных инструментов ArchiCAD.
3.1. Использование основных фигур библиотеки Вы можете создавать сложные объекты с помощью библиотечных элементов, которые имеются в Ваших библиотеках. Стандартная библиотека ArchiCAD содержит каталог специальных конструкций, таких как конусы, криволинейные трубы, своды. Прежде, чем начать использовать эти элементы, посмотрите, какие библиотеки загружены в вашем ArchiCAD (меню Файл > Менеджер библиотек) и при необходимости загрузите библиотеку ArchiCAD. Если у Вас имеются такие расширения, как Trussmaker, ArchiForma или GDL Toolbox, посмотрите, можно ли с их помощью построить требуемые Вам объекты.
нулевом уровне проекта) и задайте необходимую длину. Используйте 2D-линии в качестве направляющих. Разместите несколько цилиндров небольшого диаметра (см. ниже) для создания крепежных труб.
На следующем шаге легко повернуть ферму на 90°, чтобы сохранить ее в виде вертикально стоящей фермы.
Построение ‘банановой’ фермы или объекта вертикального импоста ‘Банановая’ ферма будет построена с помощью объектов ‘колено’ и ‘цилиндр’ из существующей библиотеки ArchiCAD. Смысл нашей работы будет заключаться в том, чтобы разместить и отконфигурировать эти объекты с учетом дальнейшего расположения камеры. В процессе нашей работы мы будем создавать ферму по частям, сохранять их, размещать их на плане для последующего группирования и затем повторно их сохранять. Некоторые из этих компонент приводят в замешательство при манипулировании ими. Все дело в том, что после первого сохранения Вы теряете управление по отношению к параметрическим изменениям, так как каждые последующие объекты будут использовать ранее созданные и сохраненные. В связи с этим размещайте объекты правильно на каждом этапе работы. Построение нашего объекта мы начнем с ‘колена трубы’. Положите его на землю (центр трубы должен располагаться на
30
Здесь размещены колено трубы и цилиндры. Сохраните все это, выбрав вид сбоку и установив азимут камеры в 90°. Загрузите сохраненный объект дважды на план этажа. Он должен располагаться вертикально стоящим, как это показано на следующем рисунке. Соедините две половинки фермы под определенным углом, затем посмотрите, что получилось, и
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
сохраните результат. Добавьте колонну для создания длинной прямолинейной трубы.
Сохраните полученный результат еще раз в виде сбоку и с использованием камеры с тем же азимутом. Следует соблюдать высокую точность при размещении их относительно друг друга. Загрузите полученный объект. На этот раз положите его на землю. Настало время добавить связывающие поперечные трубы. Вам необходимо получить вид в разрезе, чтобы точно расположить и определить высоту каждой из поперечных труб. На плане этажа убедитесь, что концы цилиндров "входят" внутрь основной криволинейной трубы. Посмотрите результат в 3D под углом 270° и сохраните полученный объект в виде горизонтальной 3D-фермы.
Введение в создание объектов
Вы могли бы представить полученный объект в 3D-окне, в виде сбоку, с камерой под 90°, и сохранить вертикально стоящий вариант фермы для использования в качестве вертикальных импостов с аэродинамическим сопротивлением - именно это я предполагал сделать с самого начала. Помните, всякий раз, когда Вы хотите посмотреть на окончательный объект, все его составляющие части должны находиться в загруженной библиотеке. Если Вы измените одну из компонент, то это может привести к ошибочной ситуации при попытке посмотреть на окончательный объект. При этом Вам будет выводиться диалоговое окно Отсутствующие объекты. Такие сообщения полезны в том смысле, что напоминают Вам о необходимости выполнения определенных действий. Если такой составной объект удовлетворяет Вас и он больше не будет редактироваться, загрузите его в 3D-окно под необходимым углом зрения и сохраните его как двоичный объект. Это означает, что все составляющие объекты будут включены в результирующий объект и теперь не будет необходимости в отслеживании наличия всех требуемых компонент.
31
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Установите камеру в 90°, посмотрите на полученный объект в 3D в виде сбоку и сохраните его как объект свода. Назовите его, например, ‘vault_part1.GSM’. Загрузите объект на план этажа. Вы можете изменить его размеры. Вы можете изменить его длину, ширину и высоту. Возможно, Вы построили его круглым, но при желании его можно сейчас сделать эллиптическим. Переместите копию Вашего объекта свода. При этом будьте внимательными и не измените его ширину - измените только длину. Сейчас мы произведем срез свода под углом 45°, чтобы его можно было использовать как крестовый свод.
Сечение с помощью бегущей рамки
В качестве последнего шага можно открыть результирующий элемент как объект GDL и оснастить его 2D-символ узловыми точками, чтобы удалить ограничивающий прямоугольник и облегчить процесс выбора и позиционирования фермы относительно поверхностей стен.
Сейчас Вы убедитесь, что одна из функций бегущей рамки "высекать" то, что должно быть видно в 3D-окне. Все, что расположено внутри бегущей рамки, показывается в 3D-окне, а то, что за ее пределами - нет. Это прекрасная возможность получать 3D-разрезы. Между прочим, с помощью команды Визуализация > Элементы для визуализации можно добиться обратного эффекта, а именно, представлять в 3D-окне только то, что находится за пределами бегущей рамки.
3.2. Давайте создадим объект путем сечений Банановая ферма является примером создания вложенных объектов (вложение одних объектов в другие). Рассматривая еще один пример использования вложенных объектов, мы создадим скругленный свод и затем на его основе создадим крестовый свод. Это не так-то легко сделать с помощью инструмента Перекрытие и даже инструмента Крыша. Для этого мы попытаемся использовать более мощный инструмент Стена, так как им намного легче оперировать. Мы воспользуемся геометрическим вариантом построения стены в виде окружности. Если у Вас есть желание, то, выполняя этот пример, Вы можете построить готический свод, а не дугообразный, используя две криволинейные стены, которые сходятся в одной точке.
32
На плане показывается основная криволинейная стена, на основании которой создается дугообразный свод; выше ее располагается результирующий библиотечный элемент, растянутый в трех измерениях. Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Обычно используется прямоугольная бегущая рамка, однако имеется возможность создавать бегущую рамку многоугольной формы, как штриховку. Сначала нарисуем 2D-линию, исходящую из центральной линии свода. Для этого воспользуемся отметками середины элемента. Когда Вы расположите курсор на одном из концов свода, на элементе появится небольшая отметка, указывающая его середину. Начертите две 2D-линии из этой средней точки под углом в 45°, чтобы указать линию, вдоль которой следует провести сечение. С помощью клавиши Shift Вы можете провести эти линии точно под 45°
Пиктограммы бегущей рамки с геометрическими вариантами прямоугольной и многоугольной рамки. Диалог 'Элементы для визуализации' позволяет выбрать способ использования бегущей рамки. Воспользуемся многоугольной бегущей рамкой. При выбранном инструменте Бегущая рамка воспользуемся волшебной палочкой, чтобы преобразовать 2D-линии в такую Введение в создание объектов
многоугольную рамку, которая содержала бы необходимую часть свода.
На плане представлена бегущая рамка над объектом свода. Тонкие 2D-линии гарантируют, что вырезание будут происходить точно под заданным углом. Воспользуйтесь координатным табло, если хотите задать угол вручную. В 3D-окне представлена часть крестового свода. Посмотрите на полученное изображение в 3D-окне в аксонометрической проекции. Вы увидите, что крестовый свод срезан под углом 45°. Если эта подрезка не видна, закройте 3D-окно, выполните команду Изображение > Построить заново и откройте 3D-окно еще раз. Если сечение произведено правильно, воспользуйтесь диалогом Параметры 3D-проекции, установите расположение камеры под углом 270° и выберите тип изображения Параллельная проекция/Вид сверху. Сохраните полученный результат как библиотечный элемент, и назовите его ‘vault_part2.GSM’. Вернитесь на план этажа и разместите на нем вновь созданную часть свода. Сейчас этот объект имеет узловые точки вокруг ограничивающего прямоугольника. Чтобы облегчить себе жизнь, откройте 2D-символ в диалоге GDL-объекта и нанесите необходимые Вам узловые точки. Расположите узловые точки по углам и посередине. Увеличьте изображение и разместите еще одну узловую точку в остроконечной вершине крестового свода.
33
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Нанесение личных узловых точек приводит к удалению ограничивающего прямоугольника. Узловая точка, расположенная в остроконечном углу, может теперь использоваться в качестве точки, относительно которой выполняется команда Редактор > Тиражировать > Поворот.
Разместите результат возле части прямого свода и сгруппируйте их. Теперь выполните команду Редактор > Тиражировать для поворота еще трех частей и Вы получите завершенный крестовый свод!
Все это можно сделать без GDL, но когда Ваши друзья и коллеги посмотрят на это, они будут уверенны, что Вы стали квалифицированным специалистом в GDL.
Рисунок окончательного проекта с крестовым сводом, колоннами, сделанными из Профайлер и с окном, сделанным из небольших стен.
3.3. Городское моделирование Городское моделирование - здания в виде объектов Четыре свода в 3D-окне. Теперь Вы можете добавить дополнительные неусеченные сводчатые объекты вдоль возле созданных, растяните их соответствующим образом и Вы получите крышу церкви. Используя технику работы с многоугольной бегущей рамкой, Вы можете построить дополнительные небольшие своды. Постарайтесь создать дорическую колонну с помощью Профайлер, добавьте квадратные опоры вверху и внизу. Теперь соберите все вместе.
34
Библиотечными элементами могут быть здания целиком. ArchiCAD является мощным средством для моделирования зданий. Законченное здание представляет собой тщательно продуманную и разработанную совокупность слоев, этажей, библиотечных элементов и конструктивных объектов. Такое здание не так-то легко "транспортировать" в другую модель. В городе каждое здание имеет свою собственную высоту этажей и различные названия слоев. Модель города должна состоять из кварталов, улиц со своим оборудованием, ландшафта и зданий. Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
При создании модели города многие здания будут иметь одну и ту же форму. Если же Вы предполагаете использовать специальные здания с высокой детализацией их формы, то следует построить их на отдельном плане и сохранить в виде библиотечных элементов для последующего использования. Если Вы хотите включить здания из других проектов, откройте файл здания, постарайтесь сделать окна "ледяными", то есть из менее прозрачного покрытия, спрячьте все слои, имеющие отношение к внутренней меблировке и небольшим деталям (если Вы не хотите, чтобы они были видны через окна), а также спрячьте элементы окружающей местности. Затем выберите все здание с помощью бегущей рамки, начерченной толстой линией, и посмотрите, что получается в 3D. В Вашем случае будут показаны все этажи. Если Вы хотите убрать, например, цокольный этаж, воспользуйтесь диалогом команды Визуализация > Элементы для визуализации, где Вы можете выбрать этажи для показа. Сохраните полученное здание как объект. Если Вы сохраните как редактируемый объект, имеется опасность потерять вспомогательные библиотечные элементы (например, окна), которые входят в здание. В этом случае также могут появляться ошибки при создании объемных изображений, например, в связи с отсутствием тех или иных деталей или ошибочных многоугольных поверхностей. В связи с этим сохраните объект как двоичный и после этого его можно будет вставить в Вашу модель городской застройки. Разместите здание в нужном месте и на любой высоте. Вам следует создать копию оригинала, если Вы хотите вернуться назад и модифицировать любую часть здания, так как единственное редактирование, которое можно выполнить над двоичным объектом - это его растяжение. В связи с этим сохраните комбинацию слоев. Если Вы не хотите, чтобы двоичный объект здания обладал возможностью растягиваться (с помощью его выбора), откройте окно 2D-символа объекта GDL и разместите узловые 2D-точки там, где считаете необходимым: в углах, у входа, в точках изгиба и т.д. и сохраните измененный объект здания. При этом будут отключены узловые точки, располагающиеся вокруг ограничивающего прямоугольника. Введение в создание объектов
43-этажное здание в центре Лондона, предложенное архитектором Робертом Лака. Вы можете увидеть Тауэрский мост. Вся остальная центральная часть Лондона представлена в виде многоугольных объектов. Если Вам нужны только фасады зданий, Вы можете построить их прямо на земле с помощью перекрытий, стен и крыш. Затем сохраните их 3D-виды при выборе вида сбоку параллельной проекции и азимуте камеры 90°. Затем загрузите их на план этажа и соберите здание из библиотечных элементов фасадов. Опять же мы рекомендуем сохранять результирующие библиотечные элементы в виде двоичных нередактируемых объектов, чтобы избегать потери вспомогательных элементов и снизить риск получения сообщений об ошибках при визуализации. Недостатком такого сохранения является то, что Вы не сможете воспользоваться обычными библиотечными элементами окон и дверей, однако этот пробел можно восполнить ненесущими стенами. Если объект является двоичным, Вы можете изменить его покрытия в диалоге установки параметров объектов. Для этого отметьте маркер Использовать покрытия объекта. Попробуйте изменить их все на Лед, чтобы получить эффект ’наброска’!
35
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Городское моделирование - вся местность может состоять из одного объекта Эта идея может использоваться и в более общих случаях. Ваше здание может иметь множество деталей. Модель окружающей местности может быть намного больше по размеру, но может иметь намного меньше многоугольников, чем само здание. Создайте модель местности отдельно, сохраните ее в виде самостоятельного объекта и затем разместите на плане на уровне самого нижнего этажа. В этом случае Вы сможете показать или спрятать всю местность одновременно путем использования ее слоя или изменить ее покрытие и вместо реалистического покрытия выбрать, например, Лед или Побелка или Сосна полированная. Вы можете обновить местность. Для этого вернитесь к исходной модели местности, произведите необходимые изменения, посмотрите результата в 3D-окне и сохраните повторно. При этом лучше всего не изменяйте ширину и глубину. Если Вы это сделаете, программа автоматического построения скриптов изменит расположение нижнего левого угла объекта, что приведет к изменению расположения объекта в Вашей модели. Размещение 2D-прямоугольника больших размеров вокруг увеличенной модели и применение волшебной палочки для превращения прямоугольника в бегущую рамку приведет к поддержанию согласованности размеров границ объекта.
Городское моделирование - камера самое мощное оружие!
36
Вы можете с большим успехом использовать текстуру для создания реалистического внешнего вида модели города. Open GL существенно изменил существующую ситуацию - он намного быстрее и проще строит пространственные модели городской среды и при этом позволяет применять текстуру. Если Вы не можете сфотографировать все здание, Вы можете восстановить его фасад из нескольких фотографий центрального входа, распределения оконных проемов на фасаде здания, контуров крыши и затем скопировать-вставить все это как единое целое. Этот прием является настолько важным, что мы посвятим ему всю главу 9 ‘Объекты афиш’.
Фасады с текстурой выглядят намного реалистичнее, чем при использовании 3D-инструментов (как, например, на переднем плане).
3.4. Создание объектов с помощью расширений и операций над объемными элементами Мы получили некоторый опыт создания объектов с использованием стандартных инструментов ArchiCAD. Сейчас мы попытаемся воспользоваться для этих целей существующими в ArchiCAD расширениями. В этом нам могут помочь Профайлер, Создание крыши из 3D-сетки, Операции над объемными элементами и Trussmaker. Имеются также расширения, созданные не в стенах Graphisoft. Можно упомянуть, например, ArchiForma, GDL Toolbox и Zoom. Однако книгу эту никогда не удалось бы закончить,
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
если бы мы попытались охватить все существующие расширения. Тем не менее, написанные на GDL объекты являются более мощными, так как они могут быть параметрическими и настраиваемыми с помощью пользовательского интерфейса и возможностей средств 3D-визуализации. Однако следует отметить, что некоторые из криволинейных фигур, которые можно легко создать с помощью ArchiForma или Zoom, в GDL создаются только на основании многолетнего опыта изучения и использования этого языка.
Профайлер - создание тел вращения и перемещения Профайлер является очень популярным и важным инструментом, хотя он не включен в состав официальных составных частей ArchiCAD - он располагается в папке Дополнительные расширения. Если Профайлер отсутствует в меню Сервис, разместите папку Дополнительные расширения в папке Расширения ArchiCAD и перезапустите ArchiCAD. Один из вариантов использования Профайлера - это создание тел "вытягиванием" плоских фигур вдоль задаваемой траектории. Начертите контур с помощью инструмента Штриховка, выберите штриховку, вызовите Профайлер из меню Сервис, сделайте щелчок в начальной точке профиля и, наконец, сделайте еще один щелчок для указания второго конца профиля. Тем самым Вы получите объект в результате перемещения заштрихованной области вдоль указанного вектора. Если Вы сделали ошибку, повторите "вытягивание" поверхности еще раз. API, имеющийся в Профайлере, получит шаблон объекта GDL, запишет его координаты X, Y и путь в основном скрипте, а также в 2D- и 3D-скриптах и сохранит новый объект в Вашей библиотеке. Он не зависит от макросов и или каких-либо "суперобъектов". Полученный объект можно переслать по электронной почте или переместить на другой компьютер и на новом месте с ним можно работать без каких-либо ограничений.
Введение в создание объектов
Профайлер предлагает два варианта построения профилей: перемещением и вращением.
Использование Профайлера для создания тел перемещением.
37
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
сохранением полученного результата. Профайлер позволяет производить тела вращением на 360° или Вы можете создать два тела вращением на 180° каждое и затем сгруппировать их. Образующая профиля вращается вокруг оси Y. Вызовите Профайлер из меню Сервис. Укажите точку привязки с помощью соответствующего маркера.
Использование Профайлера для создания тел вращением. Второй вариант использования Профайлера - это создание тел вращения. Последовательность выполняемых действий в этом случае немного сложнее, чем при создании объектов перемещением, но после 2-3 попыток Вы всегда сможете построить то, что Вам нужно. Мы построим объект с помощью процедуры вращения. При этом мы также воспользуемся операциями над объемными элементами (ООЭ).
3.5. Создание маховика с помощью Профайлера! Располагающийся горизонтально маховик хорошо знаком любителям зимних видов спорта - он вращается в обоих концах фуникулера, направляет кабель лифта и может быть в диаметре 2 и более метров. Мы воспользуемся профайлером для создания общей формы маховика, а затем используем ООТ для вырезания отверстий, снижающих общий вес. Это делается соответствующим расположением цилиндров с последующим их вычитанием из исходной фигуры и
38
В процессе построения обратите внимание на подсказки, появляющиеся в нижней левой части окна ArchiCAD. Используйте горизонтальную 2D-линию для позиционирования при выполнении всех последующих щелчков. Щелкните еще раз в той же точке для начала построения отверстия; третий щелчок указывает, насколько большим должно быть отверстие посередине. Нельзя создать внутри отверстие нулевого размера. Следующие щелчки указывают угол поворота образующей. Может оказаться так, что при достижении угла поворота 360° фигура вращения исчезнет. Если это действительно так, оставьте зазор в 5 градусов. В противном случае постройте Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
тело вращения в 360°. Сохраните полученный объект в библиотеке. При этом Профайлер сам разместит созданный объект на плане этажа. Сделайте зеркальное отражение копии, расположите копию так, чтобы образовалось полное колесо (в случае наличия зазора), сгруппируйте их и Вы получите необходимое колесо.
Отважитесь ли Вы настроить объект Профайлера? Для опытных программистов GDL достаточно будет 30 секунд для изменения кода программы объекта Профайлера таким образом, чтобы угол поворота стал 360° или любым другим. Если Вы решитесь на это, откройте объект Профайлера в GDL, откройте окно его 3D-скрипта, замените параметр ‘angle’ в команде REVOLVE на 360 и сохраните объект. Дополнительную информацию о Профайлере можно найти в файле html, расположенном вместе с расширением в папке Дополнительные расширения.
использована при построении банановой фермы. Разместите один цилиндр, имеющий вертикальное расположение, так, чтобы он проходил через колесо. Растиражируйте этот цилиндр путем его вращения. Создайте 6 цилиндров под углом в 60° Сгруппируйте между собой цилиндры, но НЕ с колесом. Убедитесь, что группы временно не разгруппированы. Выберите команду Редактор > Операции над объемными элементами (если необходимо, предварительно познакомьтесь с разделом "Операции над объемными элементами" в главе "Методы построения и редактирования" Справочного руководства ArchiCAD 9). Выберите колесо в качестве цели, а сгруппированные цилиндры в качестве оператора. Нажмите кнопку Выполнить. Может показаться, что ничего не произошло, так как цилиндры остались на своем месте. Теперь выберите само колесо, откройте его 3D-вид под углом в 270° и сохраните этот вид как редактируемый объект. Разместите полученный объект на плане этажа. Вы получите колесо с отверстиями, но при этом для создания отверстий в GDL будут вызываться цилиндры из библиотеки ArchiCAD. Если же Вы сохраните полученное колесо как двоичный объект, то он становится совершенно независимым библиотечным объектом.
Сейчас воспользуемся операциями над объемными элементами! Когда Вы узнаете, какими возможностями обладают ООЭ, то будете благодарны тем, кто познакомил Вас с ними, так как они существенно облегчают процедуру создания необходимых объектов. Сейчас мы воспользуемся той же цилиндрической фигурой из библиотеки Тела и фигуры геометрические, которая была Введение в создание объектов
39
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
ребер, вершин на ребре или внутренних вершин. Для них имеются установки, позволяющие сглаживать представление ребер или показывать их отчетливо. Вы можете вырезать в них отверстия, добавлять или удалять части. Пользователи часто разочаровываются, что при использовании 3D-сетки в виде оболочки она имеет только одну поверхность нулевой толщины и только одно покрытие. Ответ на это следующий - 3D-сетка может иметь толщину.
Если Вы посмотрите на редактируемый скрипт объекта, полученного в результате выполнения операций над объемными элементами, то сможете ознакомиться с синтаксисом команд GDL, выполняющих эти операции! Они все в основном одинаковые.
3.6. Преобразование 3D-сеток в крыши Вы можете убедиться, что инструмент 3D-сетка является довольно мощным средством для создания различных фигур. Они могут редактироваться на плане и в 3D-окне, они могут иметь криволинейные ребра, для них автоматически производится операция интерполяции при добавлении новых
40
Попытайтесь создать такую гиперболическую седлообразную фигуру. Хитрость заключается в том, чтобы сначала построить плоскую сетку, затем создать криволинейные ребра и, наконец, изменить высоту вершин. При этом происходит интерполяция вершин треугольников, которые создаются вдоль сторон. Можно очень легко размещать внутренние ребра. При этом Вы обнаружите, что их новые точки также интерполируются. Выберите 3D-сетку, выполните команда Сервис > Создать крыши из 3D-сетки. При этом 3D-сетка преобразуется в Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
поверхность, имеющую толщину и с различными покрытиями вверху и внизу. Более того, Вы можете временно разгруппировать крышу, отредактировать совокупность соединяющихся скатов крыш, выбирать их индивидуально для удаления, построения отверстий или изменения покрытий.
результат. Trussmaker позволяет создавать круглые и прямоугольные трубы и имеет полезные параметрические свойства, например, задание угла наклона и описание свойств 2D-представления.
Таким образом, Вы можете построить крышу сложной формы, визуально проверяя ее форму на каждом этапе построения 3D-сетки. Когда сетка готова, преобразуйте ее в крышу. Полученная конструкция имеет аккуратные соединения. Полученную крышу можно сохранить как модуль или объект на Ваше усмотрение.
Другие расширения в ArchiCAD Вы получите несомненную пользу, поэкспериментировав с некоторыми другими расширениями. Стена с уклоном Наклонная стена, Roofmaker и Аксессуары крыш также предоставляют возможности по созданию объектов. Trussmaker - довольно удобный инструмент, предоставляющий немыслимое разнообразие. Вы можете создавать небольшие конструкции с помощью 2D-линий, причем наиболее полезными оказываются цепочки непрерывных линий. В нашем следующем примере мы обойдемся без Trussmaker. С помощью волшебной палочки Вы можете преобразовать начерченные 2D-линии в небольшие стены, которые будут выполнять роль прямоугольных труб. Перейдите в 3D-окно, выберите вид сбоку в параллельной проекции, установите азимут камеры в 90° и сохраните Введение в создание объектов
Вы можете использовать Trussmaker для создания трубчатых каркасов. После создания сохраните их, загрузите на план этажа, поверните немного, соедините друг с другом, посмотрите на результат в 3D-окне и сохраните как двоичный объект. Затем опять загрузите на план этажа, опять соедините их и так далее до тех пор, пока не получится сложная конструкция из труб. Приводимая далее модель радиотелескопа Ловелла Джодреллбэнкской радиоастрономической обсерватории, созданная Джоном Крисом, целиком построена с помощью Профайлера и Trussmaker путем последовательного
41
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
выполнения операций размещения, группирования, просмотра, сохранений, размещения и т.д. Сначала был построен и сохранен объект фиксированной вышки, затем был построен и сохранен объект рефлектора телескопа и, наконец, отдельный объект каркаса. Окончательная сборка всего радиотелескопа может быть выполнена с использованием простой команды GDL ROTx angleparameter.
Преимущества этой идеи заключаются в том, что даже если Вы перемещаете крышу в сторону, эффект подрезки остается. Более того, подрезка может быть отменена по команде Отменить подрезку под крышу. Тем не менее, если Вы попытаетесь использовать эту возможность, то можете получить весьма непредсказуемые результаты. Подрезка крышей происходит надежно только в том случае, если ее скаты располагаются вдоль линии привязки стены. Если они пересекают стену под произвольным углом, то линия сечения продлевается на произвольную величину за пределы ребра стены. Даже если линия ската располагается вдоль линии стены, возможны побочные эффекты подрезки, которые уменьшают точность выполнения сечений. Стена, располагающаяся под гиперболической седлообразной фигурой (даже если выбраны только некоторые элементы крыши), подрезается неправильно, так как линии скатов направлены во многие стороны.
Неужели это можно построить без GDL!
3.7. Подрезка стен под крыши Эта возможность может быть весьма важной составной частью процесса построения объектов. Уже на протяжении довольно большого времени имеется возможность подрезать стены под крышу. Суть этого процесса заключается в том, что Вы создаете части стен произвольной высоты, затем располагаете над ними плоскости крыш на требуемой высоте и, наконец, создайте необходимые фигуры, отсекая лишние части стен.
42
Если Вы хотите расположить стену под краевой балкой, можно создать временную, предназначенную только для этих целей, крышу и произвести подрезку. Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
стены, распространяют свои плоскости сечений за пределы ребра, хотя боковое сечение является правильным.
Операции над объемными элементами (ООЭ) решают все проблемы!
На рисунке выше показывается использование криволинейной крыши для подрезки стены. Если Вы выполните требования к линии стены и линиям ската, то получите прекрасный результат (задняя стена). Если Вы повернете стену и увеличите ее толщину (как для стены на переднем плане, толщиной в 7,5 м.), то подрезка будет неправильной. На следующем примере показываются различные варианты подрезки куска камня. Нечто подобное было необходимо сделать автору этой книги для своего клиента в процессе написания этой главы. Таким образом, то, что Вы видите, является результатом моего анализа возможностей подрезки с помощью крыш!
Не беспокойтесь в связи со странными поведениями операции подрезки - полное решение этой проблемы лежит в ООЭ. На следующем рисунке приведен тот же блок с правильными подрезками и сечениями. Элементы крыши располагаются с требуемой точностью (используется окно разреза/фасада). Откройте из меню Редактор диалоговое окно Редактирование целей и операторов и воспользуйтесь командой Вычитание с выталкиванием вверх. Приятным моментом является то, что вырезание является динамическим. Это означает, что Вы можете в любой момент настроить расположение крыши или стены и немедленно увидеть результат. Вы не должны беспокоиться относительно того, чтобы располагать элементы крыши на спрятанном слое. Если необходимо создать объект, выберите элемент стены, который подрезан (но не крыши), перейдите в 3D-окно и сохраните результат как объект GDL.
Приведенный здесь камень - это стена ArchiCAD, подрезанная в различных направлениях. Крыша, которая является осевой по отношению к линии стены, производит правильную подрезку, однако боковая секущая плоскость простирается слишком далеко. Крыши, располагающиеся под углом линии
Введение в создание объектов
43
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
ООЭ дают точную подрезку стены под гиперболическую седлообразную крышу.
Примечания относительно именования объектов
Каменный блок имеет на этом рисунке покрытие ‘Стекло’, поэтому Вы видите контуры сечения на противоположной стороне блока. Если Вам в будущем необходимо будет изменять форму сечений блока, выберите стену и крыши и сохраните все это как модуль, чтобы его можно было воспользоваться ими со временем. Теперь можно удалить исходную стену и крыши.
44
Имена всех сохраняемых объектов имеют расширение .GSM. Это соглашение сохраняется и в Макинтошах. Не изменяйте это расширение при сохранении или позже. Не изменяете имена объектов в библиотеке, так как в этом случае при последующей загрузке файла проекта такие элементы не будут найдены. Можно воспользоваться выбором объекта по подтипу, если объект является окном, дверью, источником света, столом или объектом другого типа. При этом убедитесь, что Вы выбираете подтип правильно. Лучше всего подбирать хорошие имена в момент сохранения. Старайтесь не использовать родовые имена. Имя ‘Стол.GSM’ выглядит красиво для объекта стола, однако при следующем открытии своего проекта Вы увидите совершенно другой стол, так под таким именем уже имеется стол в другой папке. Имя ‘Стол_японский.GSM’, скорее всего, будет уникальным в библиотеке ArchiCAD. Именно так подходите к выбору имен и менеджер библиотек всегда найдет Вам требуемый элемент. ArchiCAD 9’s object browser permits you to find objects by name – e.g. you can search on a word like ‘round’ and all objects with ‘round’ in the name will appear: round_table.gsm, round_canopy.gsm, merrygoround.gsm etc. You can also search on wild cards (*), e.g. ‘Smith_*.gsm’.
Введение в создание объектов
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
Зачем надо создавать объекты? Теперь ваша уверенность в стандартных инструментах ArchiCAD повысилась настолько, что Вы можете спросить: "Не могу ли я просто группировать стены, перекрытия и крыши в объекты и при необходимости производить их дублирование". Давайте обратим внимание на два ключевых аргумента относительно создания объектов. • Если Вы не разработали некоторую систематическую процедуру сохранения, то можете терять создаваемые Вами объекты. В этом случае они не будут систематизированы и упорядочены так, как это сделано в библиотеке объектов ArchiCAD. Сохранение, например, совокупности перекрытий, или других конструктивных элементов в виде модулей с поддержанием четкой системы именования является единственной возможностью поддержания порядка в том случае, когда не используется подход по созданию объектов. Однако это снижает подлинную ценность Вашей работы. Поэтому мой совет - создавайте объекты. • Если Вы не будете использовать объекты, то создаваемые Вами каталоги и сметы будут выглядеть слишком запутанными. Комната с множеством мебели, сделанной из сгруппированных перекрытий, стен и крыш, будет содержать в смете именно эти стены, перекрытия и крыши, а не столы, стулья, шкафы и т.д.
Прежде, чем погрузиться в GDL, Вы, может быть, хотите узнать, в чем разница между профессиональной и студенческой версиями. Файлы типов PNE, BPE и PAE аналогичны файлам типа PLN, BPN и PLA. Отличие между ними заключается в том, что файлы студенческой версии закрыты для профессиональной версии, хотя студенческая версия может открывать файлы профессиональной версии. Нельзя даже производить копирование-вставку между этими версиями. Если Вы попытаетесь это сделать, то будут вставлены только 2D-данные. Однако разработка в среде GDL поддерживается на различных платформах и в различных версиях. Студенческая версия является идеальной средой для разработки объектов в GDL. ней имеются все средства для создания объектов и их тестирования в среде ArchiCAD. Единственными недостатками являются следующие: • Вы не можете воспользоваться файлом архива .PAE для отсылки объектов куда-либо. Вы также не сможете послать модуль. В этом случае Вы можете разместить объекты в архиве .ZIP и переслать его куда требуется. • Возможна ситуация, когда рисунки предварительно просмотра объектов заменяются логотипом 'образовательной' версии. В этом случае рисунок предварительно просмотра может быть заменен в профессиональной версии.
Используете ли Вы студенческую версию?
Итоги этой главы по созданию объектов
Многие из тех, кто будут читать эту книгу, могут быть студентами, архитекторами и проектировщиками, которые не хотят создавать описанными выше способами объекты, а желают сразу же приступить к использованию GDL. Мой опыт свидетельствует, что студенты больше стремятся познать GDL, чем архитекторы, так как они более нацелены на исследовательскую работу, не возражают против работы вечером и не оценивают свое время в часах. Кроме того, они не так давно окончили школу и еще не забыли тригонометрию и алгебру. Введение в создание объектов
• Просмотрите существующую библиотеку и посмотрите, что полезного можно сделать из геометрических тел и фигур. • С помощью бегущей рамки Вы можете отсекать части библиотечных объектов. • Если имеется необходимость разместить здание в большой модели местности, Вы можете сохранить его как объект. При этом убедитесь, что спрятаны слои, содержащие сложные объекты интерьера. • Вы можете воспользоваться объектами, созданными для других целей. Например, имея множество зданий и
45
ЧАСТЬ I. СОЗДАНИЕ ОБЪЕКТОВ БЕЗ GDL
• •
• •
•
ландшафтов, представленных в виде объектов, их можно объединить в основной модели местности. Текстура, накладываемая на фасады зданий, имеющих довольно примитивную форму, дает лучшие результаты, чем тщательная проработка 3D-модели фасада здания. Обратите внимание на расширения и специальные функции моделирования, имеющиеся в ArchiCAD, особенно на Профайлер, Tussmaker, Операции над объемными элементами, Преобразование 3D-сетки в крышу. Крыши подрезают стены, но не старайтесь использовать эту возможность для вырезания стен. Операции над объемными элементами делают это лучше. Обратите внимание на процедуру именования библиотечных элементов. Старайтесь избегать использования родовых имен. Старайтесь, чтобы имена были описательными. Сохраняйте совокупности перекрытий, стен и т.д. в виде модулей, если Вы хотите в дальнейшем преобразовывать их в объекты с автоматическим построением скриптов.
46
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ Глава 4. Начало работы с GDL Итак, наступило время набраться смелости и начать работу с GDL. Это не так тяжело, как Вы предполагаете! "Овладение GDL - это творческий и дисциплинирующий интеллектуальный акт". -- Давид Сатерленд, Фендер Катсилидис, архитекторы Башни Эврика, Мельбурн, 2004.
4.1. Начало работы с GDL В главе 1 обсуждались причины, по которым может появиться необходимость в построении объектов с помощью GDL. В главе 2 мы пытались Вас успокоить в том, что во многих случаях можно обойтись без GDL. Сейчас как раз наступило время решать, стоит ли читать эту книгу дальше? Не беспокойтесь. Вы поймете, что ничего в этом нет сложного, если все будете делать по порядку. Открытие окна создания объектов: диалоговое окно GDL Воспользуйтесь в ArchiCAD командой Файл > Объекты GDL > Открыть объект для выбора объекта. При этом открывается диалоговое окно GDL для создания и редактирования объектов. В верхней и левой частях окна располагаются кнопки. В левой части широкие кнопки приводят к вызову соответствующего скрипта в большом правом окне. При нажатии не небольшие белые кнопки, расположенные рядом, скрипты открываются в отдельных текстовых окнах.
Скрипты и кнопки в таблице параметров Прежде, чем начать простые упражнения, давайте посмотрим, какие скрипты и окна предоставляются в этом диалоге. Не все из них будут нужны для начинающих.
Введение в создание объектов
Диалоговое окно GDL: список параметров и их описание, типы и значения - все это является таблицей параметров’. Кнопка Параметры. Показывается список параметров и их заголовков, которые могут использоваться при использовании соответствующего объекта. Нажатие кнопки Новый приводит к созданию нового параметра, который можно заполнить необходимыми значениями. С помощью кнопки Выбрать подтип можно указать принадлежность кнопки типу в
47
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
специальной классификации. Не делайте этого до приобретения достаточного опыта. Основной скрипт. Используется для выполнения таких задач, как проверка ошибок пользователей и определение покрытий. Он читается другими скриптами. Если Вы введете такие значения, как радиус трубы или ширину сиденья стула, то они становятся доступными для всех других скриптов - сохраняя тем самым Ваше время на многократное определение этих значений в других скриптах. В нем также располагаются процедуры корректировки вводимых пользователем значений, например, нулевого радиуса. 2D-символ. Открывается чертежное окно, в котором Вы можете вставить 2D-изображение или начертить свое собственное изображение с помощью 2D-инструментов. Этот изображение используется только в том случае, когда отсутствует 2D-скрипт. При хорошем знании GDL лучше иметь 2D-скрипт. 2D-скрипт. В этом окне можно написать скрипт 2D-символа. Его можно создать несколькими путями. • 2D-символ можно построить с помощью линий, 2D-фигур, многоугольников и текстов. • Можно указать, чтобы GDL построил символ из всего того, что можно использовать в 3D-скрпте (PROJECT2). • Можно указать, чтобы символ строился из частей 2D-символа (FRAGMENT2). Для написания параметрического скрипта следует воспользоваться вариантами1) и 2) или даже всеми тремя. Определяя узловые точки в 2D-скрипте, можно достигнуть того, что можно будет изменять размеры объекта и более легко его выбирать. Если 2D-скрипт отсутствует, то будет использоваться содержимое 2D-окна. Если и он не определено, объект не будет представляться в проекте. Полный 2D-вид. Показывается то, что создается 2D-скриптом. Обычно здесь не показывается то, что определено в окне 2D-символа. 3D-скрипт. Его основная задача - построить параметрический 3D-объект. Если объект простой, то вся работа может быть
48
выполнена в 3D-скрипте. Это центральное место большинства библиотечных элементов. 3D-вид. Создается 3D-скриптом - не путайте это изображение с 3D-окном основного проекта. Скрипт спецификаций. Позволяет описать компоненты и дескрипторы объекта для их использования в каталогах и сметах. Скрипт параметров. Это как раз то место, где определяются значения всплывающих меню и отсылаются обновленные значения параметров назад в таблицу параметров. Комментарии. Это небольшое текстовое окно, в котором можно записать инструкции пользователям по правилам использования объекта. Вы можете указать URL Вашего веб-сайта с помощью символа "#". При этом пользователям будет представлена пиктограмма веб-доступа, которую можно щелкнуть. Рисунок образца. Это окно содержит небольшое растровое изображение объекта. По нему можно определить, что собой представляет объект. Этот рисунок можно получить из Artlantis Render или с помощью создания реалистического фотоизображения в ArchiCAD. Он становится пиктограммой объекта в диалоговом окне установки его параметров. Скрипт интерфейса. Позволяет строить специальные панели со специальными параметрами в виде текстов, изображений окошек редактирования. Можно строить многостраничные панели специальных параметров, если их много. Здесь можно не только разместить дополнительные параметры, но дать объяснения по их использованию. Успокойтесь! На начальной стадии изучения GDL необходимы только 2D- и 3D-скрипты, а также основной скрипт.
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Первые шаги в 3D GDL
Цель таблицы параметров - установить для параметров их тип, имена и значения по умолчанию. Здесь же Вы можете определить некоторые характеристики внешнего вида списка параметров объекта в диалоге установки его параметров. Наиболее важные параметры ‘A’, ‘B’ и ‘zzyzx’ размещаются не в списке параметров, а в виде отдельных окошек редактирования.
3D-сущности Эта книга не предназначена для исчерпывающего изложения синтаксиса всех команд GDL. Держите, пожалуйста, под рукой руководство по GDL, чтобы можно было обращаться к нему по этому поводу. Простейшими 3D-элементами являются Block, Cylinder, Sphere и Cone. Их синтаксис довольно простой. • BLOCK x,y,z x - ширина, y - глубина и z - высота. • CYLIND h,r h - высота, r - радиус. • SPHERE r r - радиус. • CONE h,r1,r2,90,90 h - высота, r1 - радиус в основании, r2 - радиус вверху. 0, 90 - углы относительно оси конуса, под которыми производится сечение основания и верхней части. Вы может изменять эти значения.
Введение в создание объектов
При выборе команды Файл > Объекты GDL > Новый объект открывается основное диалоговое окно GDL. Здесь можно открыть окно 3D-скрипта. Напишите в этом окне BLOCK 1,2,3. Посмотрите результат в 3D-виде - получился прямоугольный параллелепипед. Теперь напишите CYLIND 1,1. Возле нижнего левого угла параллелепипеда расположился низкий и широкий цилиндр. Теперь запишите SPHERE 1. В том же углу в нижней части цилиндра разместилась сфера. Теперь запишите CONE 4, 0.5, 0.1, 90, 90. Поэкспериментируйте с углами сечения основания и верхней части конуса. Все эти объекты строятся в одном месте, называемом глобальным началом координат. Даже на этом начальном этапе Вы можете улучшить внешний вид построенного объекта. Сейчас все элементы имеют один цвет, определяемый значением по умолчанию для команды PEN. Итак, перед командой Block запишите PEN 1 и MATERIAL 'Surface, Whitewash' (или укажите имя покрытия, имеющегося в Вашей библиотеке покрытий, или запишите MATERIAL 18 индекс по умолчанию для белого цвета.). PEN 1 MATERIAL 'Surface, Whitewash' BLOCK 1, 2, 3 CYLIND 1, 1 SPHERE 1 CONE 4, 0.5, 0.1, 90, 90
Размеры - использование десятичной системы Записываемые Вами размеры указываются в метрах. Единицей измерения в GDL является метр не зависимо от того, что установлено в основном проекте. В основном проекте можно работать, в футах и дюймах с долями, сантиметрах, миллиметрах. Однако в GDL зафиксирована одна единица измерения. Если Вы хотите использовать в скриптах футы и/или дюймы, то это можно сделать, но их следует будет записывать со знаками пунктуации, например, BLOCK 1”,2”,3’-0”. В таком случае удается избегать путаницы (для человека) при использовании различной нотации. Если размер меньше одного метра или дюйма, используйте символ нуля
49
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
целых, например, 0.55. Если Вы должны работать в неметрической системе измерения, используйте десятичные дюймы. Известно, что 54.25” - это 4’-6 1/4”, однако первое число намного легче записывается и воспринимается. Когда мы продвинемся дальше, то все значения будут указываться в параметрах.
3D-пространство и 3D-курсор При построении объекта следует перемещаться в пространстве для размещения различных его элементов, например, ножек стула или крышки стола. Перемещение в пространстве модели производится по команде ADD. Перемещение базируется на принципе представления пространства в виде трех осей, называемых X, Y и Z. Вы должны быть знакомы с таким представлением пространства из самого ArchiCAD. Координатное табло позволяет вводить значения координат X и Y (Вы также можете указывать радиальные и угловые размеры). GDL используются X и Y; Z определяет вертикальное смещение.
3D-вид Нажмите кнопку 3D-вид (библиотечного элемента, а не проекта) и Вы увидите то, что приведено выше. Эти объекты все расположены в одном пространстве и накладываются друг на друга. Нам нужно найти способ их разделения. В каркасном изображении видны контуры всех объектов, а в изображении с раскраской и тенями видно, как объекты включаются друг в друга.
Проверка скрипта Если после выбора 3D-вида изображение не показывается в связи с наличием ошибки, возвратитесь в окно скрипта и нажмите кнопку Проверить скрипт. При этом появится сообщение, указывающее, в какой строке имеется ошибка. Обычно незначительные ошибки встречаются в связи с пропуском запятых или чисто синтаксических ошибок. При написании скриптов GDL старайтесь как можно чаще проверять свои скрипты.
50
Объект с тремя небольшими осями, который показывается в окне 3D-вида GDL, указывает Вам направление этих осей. Он как бы выполняет функцию 3D-курсора. При работе в текстовом процессоре используется идея курсора ввода текста. После размещения такого курсора в том или ином месте, последующий ввод символов происходит именно там, где располагается курсор. В GDL имеются два таких курсора, один располагается в начале координат, а другой - там, куда Вы перемещаетесь. Тот, который помечен как ‘G’, представляет начало глобальной системы координат. Отметка ‘L’ указывает на локальную систему координат и для краткости называется в этой книге 3D-курсором. Это как раз то место, относительно которого выполняется 3D-команда. С помощью команды ADD производится перемещение 3D-курсора в пространстве по Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
всем трем направлениям. Команды ADDX, ADDY и ADDZ приводят к перемещению курсора в направлении одной из координат.
Важность команды DEL Мы рекомендуем возвращать курсор в его начало как можно чаще. GDL помнит все перемещения курсора. Команда DEL отменяет или "удаляет" эти перемещения, позволяя курсору возвратиться в начало координат, оставляя 3D-элементы на их прежнем месте.
ADD 1.0,1.0,1.5 ROTy 90 CYLIND 1.0,1.0 !Expand dimensions ADDz 2.0 MULz 0.5 SPHERE 1.0 ADDz -2.0 CONE 5, 0.5, 0.1, 90,90 DEL 5
Перемещение 2D-курсора При написании в GDL 2D-скрипта используются те же понятия осей координат X и Y для двумерного пространства. В этом случае отсутствует понятие высоты (координаты Z). С помощью команд ADD2, ROT2 и DEL перемещаетесь в 2D-пространстве, указывая значения координат X и Y. К сожалению, в этом случае нет визуальной обратной связи для представления курсора.
Вы можете поворачивать, сжимать или растягивать Реальный мир настолько сложный, что его невозможно определить только в абсолютных координатах X, Y и Z. В связи с этим в GDL предоставляется возможность поворачивать 3D-курсор (с помощью команды ROT), перемещать его в радиальном направлении и работать под произвольными углами по отношению к горизонтали и вертикали. Вы также можете сжимать или растягивать курсор (с помощью команды MUL). Таким образом, можно легко деформировать или зеркально отражать создаваемые элементы. Несколько простых примеров иллюстрируют эти возможности. Воспользуйтесь предыдущим скриптом и поэкспериментируйте с ним. Запишите и проверьте следующий скрипт. !Перемещение курсора PEN 1 MATERIAL 'Surface, Whitewash' BLOCK 1.0, 2.0, 3.0 Введение в создание объектов
Параллелепипед строится, как и в предыдущем примере. Затем курсор перемещается по оси Х с помощью команды ADDX. Она записывается с помощью ключевого слова ADDX, за которым указывается величина перемещения. Затем используется команда ROTY для поворота курсора вокруг оси Y. После этого рисуется цилиндр. Хотя цилиндр всегда направлен вверх, однако в данном случае вертикальная ось имеет горизонтальное направление, поэтому цилиндр строится в "лежачем" положении. Затем команда ADDZ перемещает курсор вертикально с учетом новой ориентации осей координат. Для построения сферы мы ее наполовину сжимаем по высоте, чтобы получилась эллиптическая фигура. Команда MULZ 0.5 как раз это делает: высота уменьшается в два раза, а ширина и глубина остаются без изменения. Вы обычно указываете количество отменяемых перемещений курсора, например DEL 5, однако Вы можете воспользоваться вариантом DEL TOP для перемещения курсора в начало глобальных координат. Запись DEL 5 лучше в том смысле, что она требует подсчета количества выполненных перемещений
51
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
курсора. Это означает, что процесс написания скрипта находится полностью под Вашим управлением.
Используйте комментарии В приведенном выше примере мы прибегнули к возможности использования комментариев. После восклицательного знака можно писать все, что хотите. Компьютер не будет воспринимать такие строки в качестве текста скрипта. Наличие комментариев полезно для восприятия текста скрипта. Является хорошей практикой использование в начале скрипта комментариев с именем создаваемого объекта и датой создания. Также является хорошим соглашением об обозначениях писать команды GDL прописными буквами, а имена параметров и комментарии - строчными. Избегайте длинной цепочки перемещений 3D-курсора - чаще используйте DEL Вы может быть знакомы с различием между абсолютным (расстояние относительно глобальной системы координат) и относительным (расстояние относительно текущей системы координат) расстояниями в GDL. Вы перемещаетесь в 3D-модели с помощью относительных "прыжков". Так как к перемещениям относятся также поворот и изменение масштаба координат, имеется опасность, что после нескольких перемещений Вы потеряете ориентацию. После каждой логически законченной последовательности перемещений вернитесь в начало с помощью DEL. Например, при построении стула, после создания ножек желательно вернуться в начало координат, чтобы затем приступить к построению сиденья.
Не забывайте о 2D-скрипте После создания и сохранения модели GDL Вы можете загрузить созданный объект на план этажа. При этом Вы можете обнаружить, что он никак не представляется на плане, он не имеет своего двумерного изображения и в лучшем случае можно будет увидеть его узловую точку. Если это действительно так, откройте объект в GDL, откройте окно 2D-скрипта и запишите там следующее:
52
PROJECT2 3,270,2
Эта команда проецирует 3D-объект на плоскость не зависимо от ее сложности. Позже, когда мы займемся написанием 2D-скриптов, команда PROJECT2 будет рассмотрена детально вместе с другими 2D-командами GDL.
Итоги по GDL к этому моменту • Начните с простых 3D-команд. • Используйте комментарии (!) для описания скриптов. • Записывайте команды GDL ПРОПИСНЫМИ буквами, а все остальное (параметры, комментарии и т.д.) - строчными. • Воспользуйтесь командами Material и Pen. • Используйте кнопку Проверить скрипт для проверки, имеются ли в скрипте ошибки. • Будьте внимательными при использовании запятых и других знаков препинания в GDL. • Почаще переходите в окно 3D-вида, чтобы отслеживать результаты построения. • Сделайте одну логически завершенную часть работы, возвратите курсор с помощью DEL, затем выполните другую часть и так далее. Избегайте использования DEL TOP. • Не забывайте записывать короткий 2D-скрипт PROJECT2.
4.2. Давайте построим 3D-объект - стул В ArchiCAD выберите команды Файл > Объекты GDL > Новый объект. Мы собираемся построить простой стул. Помните, эта книга о том, как использовать GDL, а не о том, как строить стулья. Поэтому не обращайте внимание на то, что мы построим простой стул. На этой стадии изучения GDL он именно такой нам нужен.
Ножки Начнем построение 3D-скрипта с команды CONE для одной ножки стула, которая сужается с 60 мм до 30 мм (с 2.4” до 1.2”). Позже мы введем дополнительные аспекты, касающиеся формы и размера. Начнем с левого переднего угла, Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
воспользуемся командами ADD для построения всех ножек в необходимом месте. Предположим, что сиденье расположено на высоте 500 мм (20”). !Пример простого стула, 3D-скрипт PEN 1 RESOL 12 !---Все ножки----------MATERIAL "Wood-Pine, shiny" CONE 0.5, 0.015,0.03, 90,90 ADDx 0.45 CONE 0.5, 0.015,0.03, 90,90 ADDy 0.55 CONE 0.5, 0.015,0.03, 90,90 ADDx -0.45 CONE 0.5, 0.015,0.03, 90,90 DEL 3
Отметим, что даже в этом довольно простом скрипте используются комментарии и устанавливаются покрытие и цвет пера. Мы используем предложение RESOL для указания разрешающей способности при построении окружности ножки. Она устанавливается равной 12. Возможно, Вы не имеете покрытие, имя которого приведено скрипте. Замените это имя на то, которое имеется в Вашей библиотеке покрытий. Обратите внимание, что текстура является горизонтальной. Вы можете захотеть расположить текстуру сосны вертикально, чтобы она выглядела правильно относительно ножек стула. Для построения всех ножек потребовались три команды ADD, поэтому мы использовали DEL 3, чтобы вернуть курсор в начало координат. Давайте немного отдохнем.
В процессе построения почаще анализируйте результаты в окне 3D-вида.
Сиденье и спинка Сиденье должно иметь другое покрытие, поэтом начните построение с комментария и напишите новое предложение покрытия для обивочного материала сиденья. При использовании кавычек не важно, одинарные они или двойные. Главное, пара кавычек должна быть одинаковой. Поднимите курсор и начертите прямоугольный параллелепипед (BLOCK). Обратим внимание, что параллелепипед сидения проходит через центральные точки ножек. Это не так-то легко сделать столяру, но совершенно легко в GDL! Обивочный материал представляет собой небольшой параллелепипед, располагающийся над параллелепипедом большего размера самого сидения !---Сиденье и обивочный материал--ADDz 0.45 BLOCK 0.45,0.55,0.045 MATERIAL "Surface-Fabric"
Введение в создание объектов
53
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
ADD 0.025,0.025,0.045 BLOCK 0.40,0.50,0.005 DEL 2
Теперь займемся спинкой стула. Отметим, для построения стула мы воспользовались командами CONE и BLOCK. По мере приобретения опыта Вы расширите круг используемых команд. Обычно для построения одной и той же фигуры можно использовать различные команды. Мы можем воспользоваться тонким параллелепипедом обивочного материала, как мы это сделали для сиденья. !---Задние ножки, спинка и обивочный материал--MATERIAL "Wood-Pine, shiny" ADD 0,0.55,0.5 CONE 0.6,0.03,0.02, 90,90 ADDx 0.45 CONE 0.6,0.03,0.02, 90,90 DEL 2 ADD 0,0.54,0.70 BLOCK 0.45,0.025,0.35 MATERIAL "Surface-Fabric" ADD 0.05,-0.01,0.02 BLOCK 0.35,0.01,0.30 DEL 2
2D-скрипт Для завершения построения стула следует создать его изображение на плане этажа. Для этого следует записать небольшой 2D-скрипт. Откройте окно 2D-скрипта и запишите в нем всего одну строку PROJECT2 3,270,2. Сохраните созданный объект, закройте его и возвратитесь на план этажа. Выберите инструмент Объект в инструментальной панели и сделайте щелчок на плане этажа. В указанном месте появится символ нашего стула с узловыми точками, созданными самим ArchiCAD. Размеры стула изменять нельзя, так как мы этого не предусмотрели в скрипте. Построенный Вами стул скорее всего не получит никаких международных наград, но это Ваш первый построенный с помощью GDL объект. Поэтом наградите сами себя и продолжите изучение GDL.
54
4.3. Давайте сделаем стул параметрическим Если Вы попытаетесь растянуть объект с автоматически созданными скриптами, он изменится пропорционально, но эти изменения не будут реалистическими. Квадратные ножки стола станут прямоугольными, цилиндрические ножки станут эллиптическими. Если же Вы измените размеры правильно написанного параметрического объекта, то он сохранит все свои важные свойства, такие как диаметры и толщина растяжение будет происходить с учетом поддержания пропорций изображения. Одна из основных целей использования GDL - это создание параметрических объектов. В связи с этим мы обновим наш стул.
Сначала добавим несколько параметров Щелкните на нашем объекте стула и откройте его для редактирования. В таблице параметров нажмите кнопку Новый 8-9 раз для создания новых параметров. Им присваиваются имена переменных по умолчанию и они принимают по умолчанию значение 0. Сделайте щелчок в поле имени переменной (поле Переменная) первого параметра и измените имя так, чтобы оно указывало на параметр толщины ножки. Назовите переменную ‘lsec’4-буквенное сокращение от ‘leg section’. Запишите в поле Имя что-то вроде "Диаметр ножки в сечении". Именно это текст прочтет пользователь в диалоге установки параметров этого объекта. Поэтому задавайте имя максимально понятным. Затем введите начальное значение, например, 0.06 м. Если Ваша система настроена на другую единицу измерения, напишите 60 мм или 2.25”. Добавьте имена другим переменным. Например, укажите ‘sthit’ для высоты сидения, ‘framat’ - для покрытия корпуса и т.д. Поступите таким же образом для других параметров, значения которых могут впоследствии изменять пользователи. В таблице параметров имеется кнопка Тип, с помощью которой Вы можете указать тип значения параметра. См. пример ниже. Убедитесь, что правильно выбран тип Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
параметра. Это широко распространенная ошибка при работе в GDL.
Если имена параметров длинные, например, ‘leg_cross_section’, то часто допускаются ошибки при их вводе. В связи с этим рекомендуем использовать не слишком длинные имена. Имена не должны содержать пробелов, но Вы можете соединять слова знаками подчеркивания, например, ‘leg_mat’. Имена параметров не чувствительны к регистру, однако, для поддержания единой дисциплины использования GDL пишите имена параметров строчными буквами, а имена команд - прописными. Вы не должны использовать в качестве имен параметров слова, принадлежащие командам GDL (существующим командам или устаревшим командам). Имена типа ‘block’, ‘strlen’, ‘open’ ‘tri’, ‘tetra’ или ‘nod’ использовать нельзя. См список команд языка GDL в руководстве.
Всплывающая палитра типов параметров имеет 12 типов параметров. Выберите необходимый тип.
Упорядочение таблицы параметров
Правила именования параметров A, B и ‘zzyzx’ в верхней части Таблицы параметров являются обязательными параметрами, которые определяют ширину, глубину и высоту объектов. Вам не следует использовать их имена. Вы можете использовать ‘wid’ и ‘dep’ вместе с другими параметрами. Давайте воспользуемся A, B и ‘zzyzx’, так как они делают объект растягивающимся. Дайте им допустимые размеры стула, как это сделано на рисунке выше. Правила именования параметров довольно простые. Используйте более одной или двух букв так, чтобы Вы помнили, что параметр означает. Параметры с короткими именами, как правило, используются в качестве "счетчиков" или "признаков", как это будет видно из нашего последующего изучения GDL. Скрипты надо писать так, чтобы при возврате к ним через недели и месяцы при их беглом просмотре становилось понятным, что они делают. Запись ‘framat’ является боле выразительной, чем ‘fm’. Для этого имени необходимо ввести больше символов, однако это вполне оправдывается более легким пониманием смыла скрипта.
Введение в создание объектов
Вы можете перемещать параметры вверх и вниз по списку с помощью небольших стрелок слева. Вы также можете выбрать в типе параметров пиктограмму, которая указывает на Разделитель или Заголовок. С помощью параметра-заголовка можно упорядочить параметры по группам. В этом случае, нажав небольшую кнопку отступа, Вы можете связать параметр типа ‘framat’, например, с группой Перья и покрытия.
Теперь преобразуем 3D-скрипт Следующим нашим шагом будет преобразование скрипта таким образом, чтобы он воспринимал значения параметров. После того, как Вы напишете несколько GDL-скриптов, Вы начнете воспринимать структуру объектов в терминах параметров и сразу же писать параметрические скрипты. У вас появится свой собственный набор слов типа ‘rad’, ‘diam’, ‘matl’ для обозначения имен параметров, который Вы будете использовать при создании любых объектов. Начните с замены
55
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
используемых ранее констант на ‘lsec’, затем постепенно замените все другие константы на параметры. Все в скрипте стула должно быть заменено параметрами, даже перья. Попытайтесь сделать это самостоятельно. Возьмите за основу предыдущий скрипт, в котором использовались конкретные значения, и преобразуйте его строка за строкой. !Простой стул, Параметрический 3D-скрипт PEN cont_pen RESOL 12 !--Все ножки----------MATERIAL framat CONE sthit, lsec/3,lsec/2, 90,90 ADDx A CONE sthit, lsec/3,lsec/2, 90,90 ADDy B CONE sthit, lsec/3,lsec/2, 90,90 ADDx -A CONE sthit, lsec/3,lsec/2, 90,90 DEL 3 !--Сиденье и обивочный материал----ADDz sthit-frsec BLOCK A,B,frsec-0.002 MATERIAL seatmat ADD lsec/2,lsec/2,frsec BLOCK A-lsec,B-lsec,0.005 DEL 2 !--Задние ножки, спинка и обивочный материал MATERIAL framat ADD 0,B,sthit CONE bhit,lsec/2,lsec/3, 90,90 ADDx A CONE bhit,lsec/2,lsec/3, 90,90 DEL 2 ADD 0,B-0.01,sthit+bhit*0.3 BLOCK A,lsec/2,bhit*0.6 !Back panel
56
MATERIAL seatmat ADD lsec/2,-0.01,lsec/2 BLOCK A-lsec,0.01,bhit*0.6-lsec DEL 2
При выполнении умножения или деления обратите внимание, что символ звездочки (*) используется как знак умножения, а косая черта (/) обозначает деление.
Идея ‘бизнес-правил‘ - системный подход Спинку стула построить тяжелее, чем сидение. Сейчас мы проведем небольшое системное исследование относительно стула и применим к нему некоторые правила проектирования. Вы можете "загрузить" пользователя параметрами для указания значений всех возможных составляющих стула, либо Вы можете разработать некоторые простые системные правила, которые определяют конструкцию стула в целом. Например, в нашем случае могут действовать следующие правила: зазор между задней панелью и сидением составляет 0.3 общей высоты спинки. Задняя панель составляет 0,6 общей высоты, а небольшой выступ вверху - 0,1 общей высоты. Все это можно назвать 'бизнес-правилами'. Мы должны использовать системный подход при написании всех параметрических скриптов 3D-объектов.
Проверка ошибок В процессе написания 3D-скрипта все время обращайтесь к окну 3D-вида объекта GDL, чтобы проверять правильность Ваших логических и арифметических вычислений. Если изображение в 3D-виде не соответствует тому, что Вы предполагали, проверьте правильность использования синтаксиса языка, правильность расстановки запятых и наличие орфографических ошибок. Неправильно написанное имя параметра может привести к тому, что его значение устанавливается в 0, либо будет выдано сообщение об ошибке. Нажмите кнопку Проверить скрипт, проанализируйте обнаруженную ошибку и устраните ее. Убедитесь, что линейные размеры задаются согласно линейным величинам, а не угловым, и наоборот. Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
3D-скрипт становится намного мощнее, если он параметрический Вы могли убедиться, что можно писать 3D-скрипты, которые на 100% являются параметрическими, то есть в них совсем нет констант, указывающих реальные размеры и характеристики. Это является основой создания мощных и развитых объектов. После того, как пользователи ArchiCAD поработают с такими объектами, они убедятся, насколько полезной оказалась алгебра, которую они изучали в школе. Позже, изучая GDL, Вы придете к выводу, что школьная тригонометрия также Вам пригодилась. Сохраните объект стула, загрузите его на план этажа, посмотрите его параметры в диалоге установки его параметров, поэкспериментируйте с различными значениями. Измените покрытия, высоту и толщину ножек. Если Вы все сделали правильно, то изображение стула должно изменяться согласно изменению параметров.
4.4. Первый шаги в написании 2D-скриптов Использование скрипта для создания более эффективного 2D-символа При создании стула мы воспользовались единственной командой PROJECT2 3,270,2, которая построила нам весь 2D-символ. В этом случае для создания 2D-символа сначала строится 3D-тело объекта, затем строится его изображение с удалением невидимых линий, выбирается необходимая проекция и полученная проекция используется в качестве 2D-символа. Если в проекте имеется много таких объектов, то процесс загрузки и регенерации изображения плана этажа будет происходить довольно долго. В связи с этим мы рекомендуем иметь специальный 2D-скрипт, если объект не изменяется довольно часто или не является особенно сложным. Давайте попытаемся написать простой 2D-скрипт для нашего стула.
Введение в создание объектов
Команда RECT2 - это 2D-команда, эквивалентная BLOCK, а CIRCLE2 эквивалентна CYLIND и CONE. 2D-команды более гибкие, так как Вы можете указать значения X, Y их параметров, например, RECT2 x1,y1,x2,y2 и CIRCLE2 x,y,rad. Имена всех 2D-команд завершаются цифрой "2". Имеется два способа создать 2D-символ стула. Мы можем следовать той же общей последовательности команд, что и при написании 3D-скрипта, но использовать команду ADD2 для перемещения в плоскости и команды построения прямоугольников и окружностей для создания символа. Другой подход заключается в том, чтобы все время оставаться в начале координат и выполнять команды LINE2 и CIRCLE2 без какого-либо перемещения. При построении мы все время должны смотреть, как выглядит символ. Когда мы размещали углы параллелепипеда сидения в криволинейных ножках, в трехмерном изображении углы сидения как бы вырезались. При построении 2D-изображения наложение RECT2 на окружности четырех ножек будет выглядеть неправильно, так как окружности являются прозрачными. Поэтому для представления прямоугольника сидения мы воспользуемся командой LINE2. !Простой стул, Параметрический 2D-скрипт HOTSPOT2 0,0 !corner spots HOTSPOT2 A,0 HOTSPOT2 A,B HOTSPOT2 0,B HOTSPOT2 A/2,B/2 !pickup spot !PROJECT2 3,270,2 !now disabled s4=lsec/4 !Quarter of diameter s2=lsec/2 !Half of diameter PEN cont_pen CIRCLE2 0,0,s2 CIRCLE2 A,0,s2 CIRCLE2 A,B,s2 CIRCLE2 0,B,s2 LINE2 s2,B-s4, A-s2,B-s4 !back LINE2 s2,B+s4, A-s2,B+s4 !back LINE2 0, s2, 0,B-s2 !side LINE2 A, s2, A,B-s2 !side LINE2 s2,0, A-s2,0 !front
57
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Мы можем оставить в скрипте команду PROJECT2, но деактивировать ее, заключив в комментарий. Не снимайте с нее признак комментария, если Вы уверенны, что предложения CIRCLE2 и LINE2 располагаются в необходимых местах. Имейте в виду, ‘s2’ и ‘s4’ являются временными переменными, которые введены, чтобы избежать ошибок повторного ввода и сохранить время ввода. Сохраните объект и разместите его на плане этажа. Вы обнаружите, что символ создается на плане мгновенно. Предыдущий непараметрический стул с командой PROJECT2 имел много лишних линий. Стул с параметрическим 2D-скриптом лучше выглядит на плане этажа.
Хотя Вы, возможно, предпочитаете работать с тонкими линиями, однако, чтобы посмотреть результаты своей работы, следует воспользоваться линиями истинной толщины.
Нанесение собственных узловых точек Построенные с помощью скрипта узловые точки позволяют изменять размеры, так как они располагаются в центре ножек, а не на ограничивающей рамке. Это намного лучше!
58
Если Вы хотите, чтобы узловые точки располагались там, где им нужно, а объект можно было растягивать, воспользуйтесь следующим небольшим скриптом! Разместите предложения HOTSPOT2 перед теми, которые описывают 2D-чертеж. Для 2D-узловых точек указываются координаты X и Y. Первая узловая точка будет выполнять роль точки размещения объекта на плане этажа. HOTSPOT2 HOTSPOT2 HOTSPOT2 HOTSPOT2 HOTSPOT2
0,0 !4 Corner stretch spots A,0 A,B 0,B A/2,B/2 !Pick up Centre spot
Если у Вас имеется опыт использования ArchiCAD, то должны знать, что узловые точки выполняют следующие три функции: с помощью их выбираются объекты; они используются для изменения размеров объектов; с их помощью производится позиционирование (притяжение) объектов (то есть они помогают точно позиционировать их относительно поверхностей стен или других объектов). Примите решение, где именно необходимы Вам узловые точки - по углам, в центре, в точках пересечения и т.д. Чтобы узловые точки обладали свойством растягивания объекта, расстояние между ними должно равняться А и В. Теперь предположим, что начало координат находится в центре стула, а не возле левого угла. Тогда необходимо следующим образом определить узловые точки, использующие половины значений А и В. HOTSPOT2 A/2, B/2!4 Corner stretch spots HOTSPOT2 -A/2, B/2 HOTSPOT2 -A/2,-B/2 HOTSPOT2 A/2,-B/2 HOTSPOT2 0,0 !Pick up Centre spot
Еще об узловых точках Можно также определить пространственные узловые точки. Они помогают просматривать объекты в 3D-окне, выбирать их, изменять размеры и перемещать. Можно также написать графически редактирующие узловые точки! Что это такое? Представьте себе шкаф, которым Вы Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
можете манипулировать в 3D-окне и на плане этажа: Вы можете открывать и закрывать его двери, выдвигать и задвигать ящики, настраивать расстояние между полками и многое другое. С помощью графически редактирующих узловых точек Вы можете строить объекты GDL в виде сложных сочлененных механизмов. Занимательно, не правда ли!
3D-вид может быть более соблазнительным Наверное, у Вас уже появилось желание пойти дальше прямолинейных фигур, описываемых с помощью команд BLOCK и RECT2. Довольно легко использовать команды CYLIND, CONE и ELBOW, которые создают криволинейные поверхности. С помощью этих трех команд можно строить интересные трубчатые конструкции, например, стальные каркасы или колосниковые решетки. Можно создавать различные сложные фигуры в пространстве и на плоскости с помощью PRISM и POLY2. Причем они допускают определение криволинейных ребер. Нам бы хотелось построить объекты, которые предоставляли больше возможностей пользователям. И одним из подходов решения этой задачи является использование всплывающих меню. Мы также хотели бы узнать, как пишутся те "магические" узловые точки, о которых шла речь выше! На эти вопросы мы постараемся ответить в следующей главе. Теперь, когда Вы узнали о существовании таких возможностей, Вы, возможно, захотели бы познакомиться с ними детальнее. В этом случае рекомендуем Вам окунуться в пособие по GDL или перейти к изучению следующей главы.
Выбор объектов Обычно объекты выбираются щелчком на узловой точке 2D-символа на плане этажа. Если Ваши узловые точки располагаются в нелогичных местах или на ограничивающем прямоугольнике, то для нахождения таких узловых точек необходимо нарисовать рамку выбора вокруг объекта. В ArchiCAD 9 эта проблема решается проще. В начерченном 2D-символе следует нанести штриховку в области, Введение в создание объектов
занимаемой объектом. В 2D-скрипте следует заштриховать область, определяемую по команде POLY2. Если это сделано, то щелчок в области штриховки приводит к выбору объекта. Еще одно новшество ArchiCAD 9 - некоторые специальные линии становятся чувствительными к мышке. В 2D-скрипте Вы можете продублировать команды LINE2 и ARC2 командами HOTLINE2 и HOTARC2 (используя такой же синтаксис). После этого мышка обнаружит объект в любом месте линии. Даже если в объекте Вы использовали PROJECT2 в качестве основного чертежного символа, Вы все же можете дополнительно определить новые команды HOTLINE2 для облегчения выбора объекта.
Подтипы - можно приписать объекту категорию Вы можете классифицировать полученный объект как Место для сидения. Это легко сделать. Нажмите кнопку Выбрать подтип и затем выберите Элемент модели > Меблировка > Место для сидения. В этом случае объекту будут приписаны дополнительные параметры. Многие из них берутся из ArchiFM. Их можно также получить из GDL. После получения дополнительного опыта работы с GDL выберите Элемент модели, посмотрите, какие еще подтипы существуют, и поэкспериментируйте с ними.
Итоги этой главы по изучению GDL • Вы можете написать скрипт GDL, полностью использующий в своем тексте все размерные характеристики создаваемого объекта. Если Вам придется использовать неметрическую систему измерения, постарайтесь воспользоваться дюймами с десятичными долями. • Лучше всего писать параметрические скрипты. Старайтесь писать полностью параметрические скрипты. • Старайтесь давать логически осмысленные имена параметрам, например, ‘seatmat’.
59
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
• Не забудьте указать тип параметра с помощью всплывающего меню. • Старайтесь объединять параметры в группы под общими заголовками. • Четко описывайте назначение параметров. • Почаще просматривайте результаты в 3D-виде и не забывайте о кнопке Проверить скрипт. • После выполнения логически завершенной последовательности действий воспользуйтесь командой DEL для возврата в начало координат. • Можно довольно легко написать 2D-скрипт, который сохранит Ваше время. • Одно из назначений 2D-узловых точек, изменение размеров объекта. • Постарайтесь воспользоваться командами CYLIND, CONE и ELBOW для достижения большей точности и достоверности. • Управляйте аппроксимацией кривизны цилиндров и других фигур с криволинейными поверхностями с помощью команд RESOL или TOLER. • Даже для простых объектов в некоторых случаях имеет смысл приписать ему правильный подтип. • Наконец, в Вашем распоряжении имеется средство, с помощью которого Вы можете применить полученные в школе знания по алгебре.
Постройте самостоятельно объект GDL Есть старая пословица: "Если Вы услышали, то забудете, если Вы увидели, то запомните, если Вы сделали, то поймете". Я очень верю в "совместное программирование". Если Вас в чем-то устрашает GDL, сядьте вместе с кем-либо еще, кто интересуется GDL, и постарайтесь поработать вместе. Я убедился, что этот метод дает хорошие результаты при изучении GDL.
Проверка объекта После завершения построения этого объекта стула Вы можете захотеть построить более сложный. Но при этом Вы не хотите писать самостоятельно все его скрипты. Проверьте наличие такого или похожего объекта на веб-сайте или на компакт-диске. Если Вы нашли похожий объект, скопируйте его части в свой объект. Чтобы приобрести опыт, постройте объект, идентичный имеющемуся, но с другими именами параметров. Тем самым Вы пройдете через все структурные компоненты скрипта и, при необходимости, можете обратиться за поддержкой к этой книге.
60
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Глава 5. Предоставление в GDL вариантов выбора Возможно, Вы уже присмотрелись к GDL. Вам, наверное, понравилась идея интеллектуальных объектов. Давайте рассмотрим конкретные практические примеры этой мощи. пользователем ширины или высоты или изменение масштаба "Проект Геном объекта - это проект классификации и создания чертежа, объекты могут "адаптироваться" к таким изменениям интеллектуальных строительных конструкций, которые соответствующим образом. Они могут изменять высоту полок, используются при разработке проектов. Геном объекта используется для описания таких больших архитектурных принимать решение относительно того, следует ли показывать компонент, как кварталы городов, здания или блоки зданий. ручки, болты и другие детали своего внешнего вида. Объекты могут предоставлять пользователям простые возможности их Интеллектуальные объекты развиваются во времени, они настройки с помощью маркеров или всплывающих меню. приобретают новые свойства и правила, к ним предъявляются Объекты могут обнаруживать ошибки, например, ввод новые требования. Наша окружающая среда и здания не отрицательного или неправильного значения, извещать об статичны. этом, исправлять ошибки и правильно представлять Точно так же, как геном человека может описать человечество, соответствующие параметры. До известной степени они могут геном объекта описывает среду конструирования. Здания удовлетворять потребности пользователей относительно являются сложными по своей природе и проект геномы простоты общения с ними и, с другой стороны, являются объекта направлен на создание методологического подхода к достаточно сильными, чтобы выдержать грубое обращение. анализу, документированию и созданию инструментов, которые бы позволили управлять этой сложной задачей". -Кимон Омуна, Webscape, Pasadena, CA and Tokyo.
Интеллектуальность - обеспечьте ее в основном скрипте
5.1. Предоставление в GDL вариантов выбора
Мы можем обеспечить разумное поведение объекта несколькими путями: • Предложение IF позволяет принимать простые решения в процессе построения объекта. • Списки значений (всплывающие меню) позволяют пользователю производить выбор и могут регулировать допустимый предел изменения объекта. • Параметр типа Boolean - позволяет производить выбор из двух возможных значений, например, Включить/Выключить, Да/Нет. • Команда PARAMETERS отсылает данные назад в таблицу параметров. Мы хотим сохранить принцип, согласно которому 3D-скрипт используется для описания пространственных характеристик объекта, а 2D-скрпит - для представления объекта на плане этажа. Поэтому мы будем использовать основной скрипт для
Созданный нами простой стул был полезен тем, что позволил пробить брешь в GDL; он параметрический, но его нельзя назвать интеллектуальным. Первым признаком интеллектуальности является способность принимать решения. Неинтеллектуальные организмы все же обладают целенаправленными свойствами, например, регулировка пищеварения, температуры, роста. Однако все это автономные функции. Признаком высокой интеллектуальности является способность взаимодействовать с окружающей средой и реагировать согласно этому взаимодействию. В нашем очень скромном варианте авторы GDL позволили применить эти принципы к нашим небольшим объектам. Объекты могут содержать данные. В зависимости от определенных условий, таких, например, как изменение Введение в создание объектов
61
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
принятия решений и для обеспечения всех оставшихся скриптов значениями параметров.
Предложение IF, записываемое в одну строку, имеет следующий вид:
5.2. Логические параметры - простейший вариант выбора
IF bakon=0 THEN arms=0
Использование предложения IF. Мы введем два варианта для распорок ножек стула и предоставим пользователю возможность выбора того или иного варианта. Мы также расширим эту идею и преобразуем стул в "мультиобъект", то есть такой объект, который предоставляет множество возможных вариантов выбора.
Стул с задней спинкой или без нее Мы воспользуемся логическим параметром, чтобы позволить пользователю представлять стул с задней спинкой или без нее. Определите новый параметр под именем ‘bakon’ и с помощью всплывающего меню сделайте его логическим типом. Создайте новый параметр, имеющий тип заголовка и назовите его "3D Options". Расположите параметр ‘bakon’ под этим заголовком так, чтобы он вошел в состав этой новой группы параметров.
Мы можем воспользоваться предложением IF для принятия решения, следует ли показывать спинку стула. Предложения IF могут записываться в одну строку или, как в нашем случае, в виде нескольких строк. Первая строка заканчивается словом THEN, за которым следует несколько строк, указывающих, что должно быть сделано при положительном ответе на IF. Предложение IF завершается предложением ENDIF.
62
Однако в нашем случае в результате проверки условия IF нам надо будет записать более чем одно предложение. Поэтому мы используем синтаксис IF... ENDIF. Значение параметра ‘bakon’ передается в 3D-скрипт в виде 1 или 0. Если условие ложно (‘bakon’ равно 0), интерпретатор переходит к команде ENDIF и продолжает выполнять остальные команды скрипта. Мы могли бы написать IF bakon=1 THEN, однако, так как ‘bakon’ может принимать только значения 0 и 1, то для GDL вполне достаточно указать в условии только само имя параметра, чтобы интерпретатор понял, что следует проверить истинность или ложность его значения. !--Задние ножки, спинка и обивочный материал IF bakon THEN MATERIAL framat ADD 0,B,sthit CONE bhit,lsec/2,lsec/3, 90,90 ADDx A CONE bhit,lsec/2,lsec/3, 90,90 DEL 2 ADD 0,B-0.01,sthit+bhit*0.3 BLOCK A,lsec/2,bhit*0.6 !Back MATERIAL seatmat ADD lsec/2,-0.01,lsec/2 BLOCK A-lsec,0.01,bhit*0.6-lsec DEL 2 ENDIF
Стул с задней спинкой и без нее
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Таким же образом можно добавить часть скрипта для проверки распорок ножек и добавить параметр логического типа в группу 3D-параметров для управления наличием распорок. Распорки будут представлены в виде двойного конуса. Мы могли бы воспользоваться цилиндрами, однако они не выглядели бы настоящими - концы должны быть меньше для того, чтобы подходили для ножек. Проанализируйте скрипт, приведенный ниже. Обратите внимание, как просто можно перемещать и поворачивать 3D-курсор, устанавливая его в нужном месте и с требуемой ориентацией. CONE может строиться только вертикально, поэтому курсор должен быть направлен горизонтально. Мы возвращаем курсор в исходное положение с помощью команды DEL после создания каждой распорки.
!Распорки IF brace THEN MATERIAL framat ADDz sthit/3 ROTx -90 CONE B/2,lsec/4,lsec/3,90,90 ADDz B/2 CONE B/2,lsec/3,lsec/4,90,90 DEL 3 ADD A,0,sthit/3 ROTx -90 CONE B/2,lsec/4,lsec/3,90,90 ADDz B/2 CONE B/2,lsec/3,lsec/4,90,90 DEL 3 ADD 0,B/2,sthit/3 ROTz -90 ROTx -90 CONE A/2,lsec/4,lsec/3,90,90 Введение в создание объектов
ADDz A/2 CONE A/2,lsec/3,lsec/4,90,90 DEL 4 ENDIF
В нашем случае распорки имеют Н-образное расположение. А что если нам необходимо создать распорки, имеющие О-образное расположение. В данном случае появляется три варианта: Нет, Н-образные, О-образные. Логический параметр предоставляет возможность выбора из двух альтернатив. В связи с этим нам следует воспользоваться возможностями всплывающих меню или, так называемыми, списками значений (ValueList), что мы и сделаем в следующем примере.
5.3. Всплывающее меню - возможность выбора значений Всплывающие меню предоставляют пользователям большие преимущества. Всплывающее меню предлагает пользователям возможность выбора из многих значений и при этом гарантирует, что пользователь не сделает орфографической ошибки при указании того или иного варианта. Пользователи используют всплывающие меню при работе с библиотечными элементами ArchiCAD, поэтому их определение в создаваемом Вами объекте будет выглядеть естественно. Всплывающие меню делают процесс принятия решений пользователями более информативным. Варианты выбора могут иметь подходящие семантические имена или представлять собой числа. Если Ваше всплывающее меню предлагает три варианта для указания возможной формы объекта, то пользователь не сможет указать неправильное значение. Всплывающие меню предоставляют пользователю дружественный интерфейс, а для разработчиков нет необходимости писать программы проверки правильности выбранного пользователем значение. Если варианты выбора представляются числами, то список значений может контролироваться максимально и минимально допустимыми значениями. Такой контроль не позволит, например, чтобы штатив лампы проходил сквозь ее колпак.
63
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Написание скрипта всплывающего меню создание списка значений
более удобным с точки написания скрипта, чем обычный метод без переменных.
Всплывающие меню называют также ’списком значений’ (ValueList ). Создать список значение очень просто. Следует определить этот список в скрипте и предложить его пользователям. Сначала создадим новый параметр строкового или числового типа. Затем введем список значений для меню в скрипте параметров или в основном скрипте. Команда VALUES используется для задания значений. Она также формирует всплывающее меню. Это меню появляется в диалоге установки параметров в таком же виде, как и меню выбора покрытий, перьев, типов линий и т.д. Типичным списком значений для задания параметра, который имеет имя ‘font’, является следующий:
!Добавление к основному скрипту !-------Всплывающее меню----------bv0="No leg braces" bv1="O brace" bv2="H brace" VALUES "bracetyp" bv0, bv1, bv2 IF bracetyp=bv0 THEN brace=0 ELSE brace=1 ENDIF
VALUES ‘font’ ‘Times New Western’, ‘Arial’, ‘Verdana’, ‘Courier’
Обратите внимание, что после имени параметра (заключенного в кавычки) нет запятой; список значений также указывается в кавычках и приводится через запятую. Список значений такого вида лучше всего расположить в скрипте параметров.
Простой список значений лучше всего располагать в скрипте параметров. Однако, если его построение требует принятия определенных решений, то лучше всего располагать его в основном скрипте, GDL допускает это. Причем, в этом случае достигается эффект ‘слитного осмысливания’. Вы строите меню и затем пишете предложения IF, которые обрабатывают выбранное значение. Список значений может содержать переменные. В этом случае говорят, что используется "метод переменных". Во многих случаях такой подход оказывается
64
В приведенном выше примере мы строим список значений из определенных слов и фраз, однако проверяем вариант выбора не указанием соответствующей строки списка, а с помощью переменной, например, ‘bv0’. Строка с командой VALUES формирует всплывающее меню. При использовании переменных мы принимаем решение не на основании выбранной строки, а на основании значения переменной типа ‘bv0’. Используя этот подход, можно легко преобразовать значения всплывающего меню из одного языка в другой, например, с английского на русский без существенного вмешательства в текст скрипта, и при этом снимаем проблемы, связанные с орфографией перевода и использования прописных или строчных букв. Метод использования переменных в списках значений можно применять только в основном скрипте. Так как список значений является основным местом принятия решений, мы может нажать на кнопку Спрятать параметр в таблице параметров для параметра ‘bakon’. Его значение сейчас находится под управлением основного скрипта, а не под управлением пользователя. Ниже приводится переписанный исходный скрипт для задания распорок с использованием предложений IF. !--------Распорки по бокам---------IF brace THEN MATERIAL framat ADDz sthit/3 ROTx -90 Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
CONE B/2,lsec/4,lsec/3,90,90 ADDz B/2 CONE B/2,lsec/3,lsec/4,90,90 DEL 3 ADD A,0,sthit/3 ROTx -90 CONE B/2,lsec/4,lsec/3,90,90 ADDz B/2 CONE B/2,lsec/3,lsec/4,90,90 DEL 3 IF bracetyp=bv1 THEN !---H-распорки---ADD 0,B/2,sthit/3 ROTz -90 ROTx -90 CONE A/2,lsec/4,lsec/3,90,90 ADDz A/2 CONE A/2,lsec/3,lsec/4,90,90 DEL 4 ENDIF !brace=bv1 IF bracetyp=bv2 THEN !---O-распорки----ADD 0,0,sthit/3 ROTz -90 ROTx -90 CONE A/2,lsec/4,lsec/3,90,90 ADDz A/2 CONE A/2,lsec/3,lsec/4,90,90 DEL 4 ADD 0,B,sthit/3 ROTz -90 ROTx -90 CONE A/2,lsec/4,lsec/3,90,90 ADDz A/2 CONE A/2,lsec/3,lsec/4,90,90 DEL 4 ENDIF !brace=bv2 ENDIF !If brace
Добавление подлокотников - все очень просто! Мы уже продвинулись достаточно далеко в изучении книги, поэтому можем дальше двигаться намного быстрее, так как Вы приобрели опыт в использовании GDL в процессе построения нашего небольшого стула. Сейчас мы добавим подлокотники к нашему стулу и после этого он будет способен принимать множество различных конфигураций. Добавим параметр ‘arms’ типа Boolean в таблицу параметров. !Добавьте это в конец 3D-скрипта !Подлокотники IF arms THEN MATERIAL framat ADD 0,0,sthit !Left CONE 0.2 ,lsec/2,lsec/3,90,90 ADD 0,-lsec, 0.2 ROTx -90 MULy 0.5 !Squash the arm cone to an ellipse CONE B+lsec, lsec*0.7,lsec*0.45, 90,90 DEL 4 ADD A,0,sthit !Right CONE 0.2 ,lsec/2,lsec/3,90,90 ADD 0,-lsec, 0.2 ROTx -90 MULy 0.5 CONE B+lsec, lsec*0.7, lsec*0.45, 90,90 DEL 4 ENDIF
В этом скрипте демонстрируется использование команды MUL для изменения формы основных фигур. Конический подлокотник стал эллиптическим. Так как мы не хотим, чтобы подлокотники повисали в воздухе при отсутствии спинки, следует написать следующую строку в основном скрипте.
Введение в создание объектов
65
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
!Добавление к основному скрипту IF bakon=0 THEN arms=0
Обратите внимание, что части скрипта, относящиеся к написанию подлокотников и распорок, используют многократно команду CONE и имеют общую схему. То есть одна и та же конструкция повторяется многократно. Скоро мы научимся решать эту проблему с использованием понятия подпрограммы.
конфигурации объект поддерживает соответствующие ей правила. Один хороший объект GDL кухонного шкафа может иметь миллион вариантов - это и есть 'геном объекта'. CNC-машины сейчас производят специальную обработку даже при небольшом серийном производстве. Все мы признательны Кимоно Онума, президенту GDLA, за введение понятия ‘геном объекта‘.
Преобразование стула в мультиобъект волшебство основного скрипта!
5.4. Концепция мультиобъекта
Если пользователь решил получить специальный стул, то он обратится к столяру со специальным заказом. В других случаях человек будет удовлетворен использованием стандартного стула, с возможным подбором материала или дерева. В нашем случае стул может быть преобразован в мультиобъект. Это удивительно просто - Вам вообще не надо изменять 3D-скрипт. Вся работа будет проведена в основном объекте. Создадим новый текстовый параметр. Назовем его 'chairtyp'. Определим всплывающее меню в основном скрипте.
Можно сделать так, чтобы один библиотечный элемент GSM содержал в себе программный код для многих объектов. По сути, он стает суперобъектом. Такой подход является более экономичным, чем иметь библиотеку многих похожих объектов. Это объясняется тем, небольшое количество корректно написанных объектов легче усовершенствовать и сопровождать.
PARAMETERS, LOCK и HIDEPARAMETER
Количество вариантов растет.
Промышленный GDL Понятие мультиобъекта является очень важным для "промышленного GDL". GDL является более развитым по сравнению с "примитивным" объектом DXF. В GDL имеется одно важное свойство, которое делает его действительно мощным средством, а именно, выполнять функции "конфигуратора". Объект GDL может содержать в себе многие конфигурации проектируемого объекта и пользователь может выбирать ту, которая ему нужна. И после выбора той или иной
66
Эти три команды позволяют модифицировать таблицу параметров. Команда PARAMETERS позволяет присвоить новое значение существующему параметру. Команда LOCK делает недоступным соответствующий параметр для пользователя в том смысле, что он не сможет изменить его значение. Команда HIDEPARAMETER прячет от пользователя весь параметр. Например, если стул может иметь круглые или квадратные ножки, то при выборе круглых ножек можно спрятать параметр диаметра, а параметр размера стороны Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
квадратной ножки, наоборот, показать. Эти команды можно использовать только в скрипте параметров и основном скрипте. Если стул должен быть стандартным, мы должны сделать недоступными (LOCK) все настраиваемые пользователем параметры, например, высоту сидения и спинки. Если же они будут доступными, то это может сбить с толку пользователя. Однако все можно показать пользователю новое значение для визуального восприятия. Это напоминает разницу между дроссельной заслонкой и спидометром в Вашем автомобиле. Вы не можете заставить автомобиль двигаться быстрее, поворачивая стрелку спидометра! Мы хотим преобразовать этот объект в мультиобъект. Для этого мы можем воспользоваться основным скриптом для определения новых значений параметров для каждого из стандартных вариантов стула: для высоты сидения, для толщины ножки и т.д., отвергая возможность выбора в таблице параметров. Можно воспользоваться символом двоеточия, чтобы расположить на одной строке несколько коротких предложений. Это позволяет компактно располагать код скрипта, но затрудняет его визуальный анализ. Воспользуемся 'методом переменных' для построения меню. Приводимый далее пример наглядно показывает, насколько прост и хорош этот метод. !Стул: Основной скрипт !------Меню для стула------cv0='Customised chair' cv1='Foot stool' cv2='Nursery chair' cv3='Piano stool' cv4='Dining chair' cv5='Dining armchair' cv6='Kitchen stool' cv7='Bar stool' VALUES 'chairtyp' cv0,cv1, cv2,cv3, cv4,cv5, cv6,cv7
Введение в создание объектов
IF chairtyp<>cv0 THEN !Grey out custom parameters LOCK 'A','B','sthit' LOCK 'lsec','frsec' LOCK 'bakon','bracetyp', 'bhit','arms' ENDIF IF chairtyp A=0.35: lsec=0.04: bakon=0: ENDIF IF chairtyp A=0.30: lsec=0.04: bakon=1: ENDIF IF chairtyp A=0.45: lsec=0.05: bakon=0: ENDIF IF chairtyp A=0.45: lsec=0.05: bakon=1: ENDIF IF chairtyp A=0.50: lsec=0.05: bakon=1: ENDIF IF chairtyp A=0.35: lsec=0.05: bakon=0: ENDIF IF chairtyp A=0.35: lsec=0.05: bakon=1: ENDIF
=cv1 THEN !Footstool B=0.30: sthit=0.28: frsec=0.04: arms=0 bracetyp=bv0 =cv2 THEN !Nursery chair B=0.35: sthit=0.32: frsec=0.04: arms=0 bracetyp=bv0: bhit=0.5 =cv3 THEN !Piano stool B=0.40: sthit=0.45: frsec=0.1: arms=0 bracetyp=bv0 =cv4 THEN !Dining chair B=0.40: sthit=0.45: frsec=0.05: arms=0 bracetyp=bv1: bhit=0.55 =cv5 THEN !Dining armchair B=0.45: sthit=0.45: frsec=0.05: arms=1 bracetyp=bv1: bhit=0.65 =cv6 THEN !Kitchen stool B=0.40: sthit=0.60: frsec=0.05: arms=0 bracetyp=bv2 =cv7 THEN !Bar stool B=0.40: sthit=0.65: frsec=0.05: arms=0 bracetyp=bv2: bhit=0.3
67
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
!Проверка дополнительных параметров IF bracetyp=bv0 THEN brace=0 ELSE brace=1 IF bakon=0 THEN arms=0 !Обратная связь с пользователем PARAMETERS A=A, B=B, sthit=sthit, arms=arms, lsec=lsec, cpn=cpn
Возможные варианты легко выбираются с помощью всплывающего меню. В конце скрипта мы использовали команду PARAMETERS для показа в таблице параметров всех или некоторых значений.
Приведение в порядок объекта профессиональный подход Для приведения объекта в порядок проверьте, правильно ли расположены, сгруппированы и поименованы Ваши параметры в таблице параметров. Представьте ваш стул в красивом интерьере. Постройте реалистическое изображение размером 128 х 128 пикселов. Скопируйте полученное изображение и вставьте его в окно Рисунка образца диалога GDL. Теперь Ваш объект будет представлен красивой пиктограммой при просмотре объектов. Можно воспользоваться всплывающим меню для представления кратких инструкций или вспомогательной информации. Вы также можете написать небольшой текст в окне комментариев, включая Ваш адрес в Интернете. Разместите перед адресом в Интернете символ '#'. Оставшаяся часть текста может быть инструкцией по использованию или указанием авторских прав.
68
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
• Объект может иметь рисунок образца и URL. • Сложный объект можно оснастить комментариями и предоставить ему графический интерфейс пользователя.
Рисунки стилей в интерфейсе пользователя. Можно построить графический интерфейс пользователя, в котором список значений может быть представлен в виде совокупности рисунков. Прекрасная идея! К сожалению, описание этой возможности выходит за рамки нашей книги. Обратитесь по этому поводу к книге GDL Cookbook.
Итоги этой главы по изучению GDL • Мы можем создавать более развитые объекты, предоставляя больше вариантов выбора. • Логический параметр предлагает возможность указать два альтернативных вариант, типа включить/выключить. • Список значений предлагает большое количество вариантов. • Можно создавать списки значений, состоящие из переменных. В этом случае становится легче обрабатывать результат выбора. • Предложение IF может быть коротким и длинным и позволяет принимать решения. • Основной скрипт предлагает необыкновенно развитые возможности. • Команды PARAMETERS, LOCK и HIDEPARAMETER управляют параметрами пользователя. Введение в создание объектов
69
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Глава 6. Мощь команды PRISM PRISM - это команда, которая дает GDL реальную силу пространственного построения.
6.1. Мощь команды PRISM PRISM является самым гибким 3D-элементом GDL Вы уже убедились, что с помощью команды BLOCK можно создавать простейшие фигуры, однако сейчас нам уже ясно, что BLOCK довольно примитивная команда для выполнения серьезной работы. BLOCK создает строгую фигуру, для ее построения необходимо переместить курсор в ее место расположения, построение ведется от нижнего левого угла. У Вас нет возможности управлять перьями и поверхностями. Многие объекты имеют специфическую форму. Для их построения необходимо четко вырисовывать контуры фигуры. Для этого предназначена команда PRISM, которая имеет несколько вариантов. Призмы могут быть многоцветными, выгнутыми, округленными, срезанными, просверленными, скошенными, пустотелыми - большое многообразие вариантов. Вы определяете контуры призмы, перечисляя координаты ее вершин. Ваш курсор может оставаться в начале координат, можно спокойно рисовать призму, которая находится на сотни метров в стороне от текущего положения, так как она определяется координатами своих вершин. Добавляя знак подчеркивания в конце или соответствующую букву в начале слова ‘PRISM’, мы получаем целое семейство призм с соответствующим синтаксисом: PRISM, PRISM_, CPRISM_, BPRISM_, FPRISM_, HPRISM_ и SPRISM_. Мы проанализируем некоторые из этих команд.
Создание призмы - использование перекрытия! Начертите на плане этажа в любом месте фигуру с помощью инструмента Перекрытие. Выберите ее, выполните команду Файл > Объекты GDL > Сохранить выбранное как и
70
сохраните этот элемент как объект. Теперь разместите новый объект на плане этажа. Он будет выглядеть как оригинал, даже будет иметь то же перо контура. Откройте его как объект GDL и посмотрите на 3D-скрипт. Все объекты с автоскриптами, созданные таким образом, имеют множество подготовительных строк в начале. Однако сердцем нашего скрипта является команда CPRISM_, которая содержит описание контура объекта.
Если Вы построили перекрытие в случайном месте, то обнаружите, что числа, представляющие координаты вершин, очень большие или отрицательные. Это зависит от того, где Вы сделали щелчок. В последующей главе мы познакомимся с "подготовительной" частью скрипта, а сейчас обсудим еще одну идею.
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
‘Мгновенный GDL’ Коды для многих призм можно позаимствовать из ArchiCAD. Сейчас начертите перекрытие приблизительно такой же формы. Как правило, старайтесь рисовать перекрытия против часовой стрелки, так как GDL лучше работает в этом случае. С математической точки зрения направление против часовой стрелки считается положительным. Начертите перекрытие таким образом, чтобы одна из вершин находилась в глобальном начале координат. GDL помнит порядок, в котором Вы делаете щелчки для указания вершин.
Сейчас выполните команду Файл > Объекты GDL > Новый объект и откройте окно 3D-скрипта (для этого нажмите небольшую белую кнопку). Запомните, что эта кнопка открывает самостоятельное текстовое окно. Расположите план этажа и это окно так, как показано на рисунке выше. Захватите ребро перекрытия и перетащите его в окно 3D-скрипта - как можно быстрее. Если Вы будете перетаскивать медленно, ничего не получится. Поэтому сделайте это быстро! Все, что строится в ArchiCAD - это GDL. Вы можете щелкнуть в любом месте плана этажа ArchiCAD - на стене, крыше, Введение в создание объектов
перекрытии, 3D-сетке и даже на обычном объекте и посмотреть, что собой представляет его GDL-код, перетащив этот элемент в окно GDL скрипта. 3D-объекты следует перетаскивать в окно 3D-скрипта, а 2D-объекты - в окно 2D-скрипта. Вы можете получить код что-то вроде следующего: BODY -1 MODEL SOLID RESOL 36 !!Slab-018 PEN 1 ADDZ 4.1 BODY -1 cPRISM_ "Whitewash", "Whitewash", "Whitewash", 13, 0.1, 0.0, 0.0, 15, 4.28548, 0.0, 15, 4.28548, 0.949196, 15, 5.279549, 0.949196, 15, 5.279549, 2.155116, 15, 3.405484, 2.155116, 15, 3.405484, 3.067704, 15, -0.000425, 3.067704, 15, -0.000425, 2.00845, 15, -2.444858, 2.00845, 15, -2.444858, 0.949196, 15, 0.0, 0.949196, 15, 0.0, 0.0, -1 BODY -1 DEL 1
Все перекрытия преобразуются в CPRISM_ - это призма, в которой верхняя, нижняя и боковые поверхности специфицируются по имени или числу. Следующая строка задает количество вершин и толщину, а затем следует список координат вершин. Каждая такая строка завершается числом 15, а весь код - числом -1. 15 - это ‘код маскирования’, указывающий, что перекрытие должно быть нарисовано как объемное тело и что должны быть начерчены все линии ребер. Значение -1 указывает, что это конец перекрытия (и что конечная точка построения совпадает с начальной точкой). Это коды устанавливаются по умолчанию.
71
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Отметим, что перекрытие на приведенной иллюстрации было построено на расстоянии 24 метров от основного начала координат проекта - Ваши числа будут неправильными. Переместите объект так, чтобы одна из вершин совпала с основным началом координат. Перетащите опять перекрытие в окно 3D-скрипта и Вы увидите, что первая перечисленная вершина имеет координаты 0,0, как в приведенном выше скрипте. Отметим, координаты вершин вычисляются в ArchiCAD с точностью до миллионных долей метра. Это довольно большая работа для программы GDL синтаксического анализа. Если же Вы сами будете писать скрипт, то, скорее всего, будете пользоваться меньшей точностью. Если Вы установите сетку небольшого размера, например, 1 мм или 0.1”, построите еще одно перекрытие и перетащите его в окно 3D-скрипта, то числа будут иметь меньшую размерность. ‘Мгновенный GDL’ в 2D-окне Начертите многоугольную область с помощью инструмента Штриховка. Перетащите ее в окно 2D-скрипта. Это еще один пример ‘мгновенного GDL’! Если заштрихованная область будет иметь криволинейные стороны, то появится дополнительный код, описывающий криволинейные линии. При использовании GDL Вы чаще будете использовать 2D-перетаскивание, чем 3D-перетаскивание. Штриховка дает синтаксическое определение контуров для таких команд, как EXTRUDE, REVOLVE, SWEEP, TUBE и других более экзотических 3D-команд GDL.
Написание призмы с самого начала В большинстве случаев мы пишем призмы в самом GDL с заданием параметров, а не перетаскиваем их с плана этажа ArchiCAD.
Простые прямоугольные призмы. Слева начало координат находится в нижнем левом угле. А справа - в центре. Для иллюстрации работы призмы вершины пронумерованы в порядке их построения. В этом примере имеется пять вершин, если Вы включаете первую точку. Суть заключается в том, что для полного замыкания многоугольника призмы Вы возвращаетесь в начальную вершину. При перетаскивании призмы с плана ArchiCAD в GDL такое замыкание, также формирование значений параметров производятся автоматически. При написании призмы в GDL Вам приходится самостоятельно задавать значения параметров. Лучше всего, если Вы предварительно нарисуете многоугольник призмы на бумаге, пронумеруете вершины и, если это возможно, зададите координаты вершин. Давайте рассмотрим синтаксис этих команд.
О синтаксисе команд призм Имеется несколько команд призм, из которых три являются основными. MATERIAL slabmat PRISM number of nodes, thickness, X1,Y1,...... Xn,Yn
72
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
В простой призме не включаются параметры покрытий и Вам даже не надо замыкать многоугольник основания. По умолчанию предполагается, что определяется объемная фигура с замкнутым основанием. Добавляя символ подчеркивания в названии команды и число 15 в конце каждой строки Вы получаете такую же призму, но с дополнительными возможностями. MATERIAL slabmat PRISM_ number of nodes, thickness, X1,Y1,mask,...... Xn,Yn,mask, X1,Y1,-1
Обычно значение маски равно 15. Суть маскирования в этой команде заключается в том, что Вы можете опускать вертикальные плоскости и линии призмы, а также можете скруглять углы и ребра, делать отверстия в призме. Скругление углов производится точно так же, как и в ломаных линиях. Еще слишком рано детально знакомить Вас со всеми этими возможностями, однако Вы должны знать, что они существуют. CPRISM_ topmat,botmat,sidemat, number of nodes, thickness, X1,Y1,mask,...... Xn,Yn,mask, X1,Y1,-1
Именно CPRISM_ используется при построении перекрытий и именно эта команда появлялась в окне 3D-скпипта, когда Вы перетаскивали в него перекрытие с плана этажа. Она обладает всеми возможностями PRISM_, плюс позволяет изменять цвет нижней, верхней и боковых поверхностей. Команда имеет параметры для задания покрытий этих поверхностей. Также имеются призмы следующих типов, с которыми желательно познакомиться. Синтаксис этих призм можно найти в справке ArchiCAD. • BPRISM_ является расширением CPRISM_, позволяя сгибать призму. Добавляется параметр радиуса изгиба. Скругление производится вниз, однако если команде предшествует команда зеркального отражения (MULZ -1), то скругление будет производиться вверх. BPRISM_ topmat,botmat,sidemat, number of nodes, thickness, radius, X1,Y1,mask,...... Xn,Yn,mask, X1,Y1,-1 Введение в создание объектов
• FPRISM_ и HPRISM_ являются расширениями команды CPRISM_, дополнительно позволяя производить скругление или скашивание верхних частей ребер (вершина призмы). При этом указывается высота, угол наклона и покрытие вершины. С их помощью можно моделировать, например, наличие обивки в верхней части объекта. При этом помните, что эти команды создают довольно много многоугольных поверхностей в 3D-изображении. Команда FPRISM_ совершенно устарела, так как HPRISM_ делает то же, но намного лучше. HPRISM_ topmat,botmat,sidemat,hillmat, number of nodes, thickness, hillangle,hillheight,hillstatus, X1,Y1,mask,...... Xn,Yn,mask, X1,Y1,-1 На приведенной ниже иллюстрации вершина призмы видна. Если угол вершины равен 0, вершина будет скругленной. В команде указываются высота вершины и ее покрытие. Состояние вершины равно 0 или 1 (ребра видимы или невидимы).
BPRISM_ и FPRISM_/HPRISM_ • SPRISM_ является расширением CPRISM_, дополнительно позволяя определять плоскость сечения, проходящую через призму. Так как имеется возможность использовать специальную команду CUTPLANE, которая намного легче в обращении, данный вариант призмы почти что никогда не используется.
73
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
заменить текстового редактора GDL для удаления излишних пробелов или для более компактного представления кода скрипта. Итак, Вы можете получить следующую более простую команду PRISM_: MATERIAL slabmat PRISM_ 13, 0.1, 0.0, 0.0, 15, 4.28548, 0.0,15, 4.28548, 0.949196, 15,
PRISM_ и CPRISM_
Приведение в порядок призмы Возвратимся к нашей CPRISM_, которую мы перетащили с плана этажа. Если Вам нужна чистая призма, удалите предложения до и после команды призмы. Если Вы обнаружите команду ADDZ, как в примере с нашей призмой, то это "пережиток" инструмента Перекрытие, поэтому эту команду можно удалить вместе с соответствующей ей командой DEL. В окне остается одна команда CPRISM_. Сделаем значения покрытий параметрическими: CPRISM_ slabmat, slabmat, slabmat, 13, 0.1, 0.0, 0.0, 15, 4.28548, 0.0, 15, 4.28548, 0.949196, 15, 5.279549, 0.949196, 15, 5.279549, 2.155116, 15, 3.405484, 2.155116, 15, 3.405484, 3.067704, 15, -0.000425, 3.067704, 15, -0.000425, 2.00845, 15, -2.444858, 2.00845, 15, -2.444858, 0.949196, 15, 0.0, 0.949196, 15, 0.0, 0.0, -1
Если Вы хотите получить очень простую объемную одноцветную призму, удалите 'С' из названия призмы и параметры определения покрытий. Во многих случаях вполне достаточно определить призму с одним покрытием для всех поверхностей. Можно воспользоваться функцией Найти и
74
и т.д., и т.д., и т.д. При использовании GDL Вы должны решить, как должна быть записана Ваша модель. • Будете ли Вы иметь одну фигуру непараметрической призмы? Если это так, то воспользуйтесь методом перетаскивания. При этом постарайтесь, чтобы одна из вершин основания располагалась в начале координат проекта. • Если фигура должна быть параметрической, например, коробка окна или двери, то следует предварительно сделать набросок призмы на бумаге и пронумеровать вершины против часовой стрелки. Затем начните писать команду призмы с использованием параметров или непосредственных значений. • Помните, призма может располагаться в любом месте плоскости XY, однако должна подниматься вертикально относительно локальной нулевой плоскости. Обычно до построения призмы используется команда ADDZ. Обратитесь к Справочному пособию по GDL (надеемся, что Вам сейчас будет уже намного легче просматривать это пособие) и познакомьтесь с разделом, описывающим призмы, для детального изучения синтаксиса и семантики этих команд.
Проблемы с запятой? В некоторых странах десятичная точка обозначается запятой, например, 1, 25. других странах запятая используется для разделения трех подряд идущих цифр, например, миллион записывается так: 1,000,000. Если Вы работаете с локализованной версией ArchiCAD, числа появляются и задаются в диалоговых окнах согласно правилам Вашей страны. Однако в GDL действует только одна нотация. Для Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
разделения десятичных цифр используется точка, а для разделения чисел используется запятая. На начальной стадии написания скриптов часто путается использование точек и запятых. Обратите особое внимание на это. При написании скриптов используйте равноширинный шрифт. При этом Вы можете добиться, чтобы все точки и запятые были выровнены по вертикали.
6.2. Применение призм к коробке сидения Мы обратились к призмам в связи с необходимостью преодолеть ограничения параллелепипедов и цилиндров. Давайте сделаем коробку сидения более реалистичной. Мы можем сделать коробку сиденья из призмы с вырезанным отверстием. Мы используем параметры А и В для ширины и глубины с началом координат в нижнем левом углу. !Альтернативный код для коробки сиденья.... !BLOCK A,B,frsec-0.002 !Простая призма PRISM 5,frsec-0.002, 0,0, A,0, A,B, 0,B, 0,0
Переход от простого параллелепипеда к коробке, которая выглядит более реалистичной. Коробка может располагаться по центру ножек. Нам необходимо вырезать отверстие в призме. Для этого мы воспользуемся вариантом PRISM_ с кодами масок. Пока что все коды масок сделаем равными 15. !Эта же призма с кодами масок PRISM_ 5, frsec-0.002, 0,0, 15, A,0, 15, A,B, 15, 0,B, 15, 0,0, -1
Вырезание отверстия Для вырезания отверстия следует написать предложение Prism со значением маски 15. Когда при определении вершин Вы повторите первую точку в качестве последней, то об этом следует указать с помощью маскирующего кода -1. Далее продолжите определение вершин отверстия в плоскости XY с использование маскирующего кода 15. Опять же с помощью кода -1 Вы указываете завершение построения внутреннего отверстия. Убедитесь, что Вы правильно записали количество вершин. Если у нас "правильное" отверстие, то для пятиугольника должно быть определено 10 вершин. Пусть у нас имеется параметр ‘ft’, который указывает толщину коробки сидения. Присвоим этому параметру значение 30 мм или 1.25”. Пусть это будет параметром производителя стула, поэтому не будем размещать его в таблице параметров. !Призма с отверстием коробки сиденья ft=0.03 !Frame thickness PRISM_ 5+5, frsec-0.002, 0,0, 15, !start of outline A,0, 15, A,B, 15, 0,B, 15, 0,0, -1, !end of outline ft, ft, 15, !start of inline A-ft,ft, 15, A-ft,B-ft, 15,
Введение в создание объектов
75
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
ft, ft,
B-ft, 15, ft, -1 !end of inline
С помощью этого кода получается стул, приведенный в центре на рисунке выше. Подушку сидения мы добавим позже.
Расположим планки коробки по центру для придания большего реализма! Так как мы решили улучшить внешний вид стула, расположим планки коробки по центру ножек. Мы не сделали этого до сих пор, чтобы обеспечить простоту построения. Расположение планок по центру делает более реалистичными соединения планок с ножками. Для этого, используя половину толщины коробки (f2), мы попарно смещаем внешние и внутренние линии призмы на величину f2 для всех сторон прямоугольника 0, 0, A, B. !Призма с отверстием коробки !Усовершенствование команды с использованием f2 ft=0.03 f2=ft/2 PRISM_ 5+5, frsec-0.002, -f2, -f2, 15, !Outline A+f2, -f2, 15, A+f2, B+f2, 15, -f2, B+f2, 15, -f2, -f2, -1, f2, f2, 15, !Hole inline A-f2, f2, 15, A-f2, B-f2, 15, f2, B-f2, 15, f2, f2, -1
внутри коробки и с обивкой вверху и с нижней поверхностью, имеющей то же покрытие, что и коробка.
Создание подушки сиденья Сейчас мы построим призму для заполнения пространства внутри коробки и с обивкой вверху и с нижней поверхностью, имеющей то же покрытие, что и коробка. Сразу же после команды, создающей коробку, но перед DEL, которая возвращает курсор в начало координат, построим подушку. Сделаем угол наклона 30° и высоту вершины 10 мм или 3/8”. Мы сделаем контур подушки таким же, как и контур отверстия в коробке. ! Скошенная призма HPRISM_ HPRISM_ seatmat,framat, seatmat,seatmat, 5,frsec+0.010, 30, 0.01, 1, f2, f2, 15, !Outline A-f2, f2, 15, A-f2,B-f2, 15, f2,B-f2, 15, f2, f2, -1
Посмотрите на правый стул на рисунке выше. Он немного изменился в лучшую сторону с точки зрения его подлинности. Другая возможность добиться того же эффекта - построить 4 призмы для каждой из сторон коробки. Преимущество такого подхода заключается в том, что появляется возможность управлять нанесением текстуры древесины на каждую из планок. Мы это сделаем позже. Как видно из рисунка, у нас имеется стул с коробкой для сидения, но без самого сидения - довольно непрактично! Сейчас мы построим призму для заполнения пространства
76
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Вы можете увидеть, как подушка сидения скошена для придания ей более реалистичного внешнего вида. Давайте сейчас попытаемся изогнуть спинку стула.
6.3. Познакомимся с геометрией круга и сделаем стул более удобным Так как эта глава посвящена призмам, сейчас мы воспользуемся командой BPRISM_ для построения спинки с изгибом. Мы хотели бы сделать спинку криволинейной, чтобы она стала более удобной и естественной. Так как ширина стула равна А, нам необходим параметр выпуклости спинки, ‘bbulg’, и разработать формулу, которая на основании А вычисляет кривизну спинки стула. Вот как это делается.
Создадим новый параметр ‘bbulg’ (размер). Сначала в основном скрипте следует произвести необходимые вычисления. !--------Добавление в основной !Формула вычисления выпуклости IF bbulg<=0.01 THEN bbulg=0.01 IF bbulg>=0.08 THEN bbulg=0.08 bangl=(90-ATN((A/2)/bbulg))*2 brad=(A/2)/SIN(bangl) bcirc=2*PI*rad*bangl*360 PARAMETERS bbulg=bbulg
Спинка стула - это хорда, то есть часть дуги окружности. Если на основании выпуклости мы сможем определить угол дуги, то тогда можно получить радиус. На основании этих значений можно вычислить длину дуги спинки стула. Именно это нам и нужно. Формула приведена на рисунке ниже.
Введение в создание объектов
скрипт--------спинки !Half angle !Radius of curve !Half chord length
В этом скрипте имеются две контрольные строки, которые проверяют, чтобы введенные пользователем данные не выходили за пределы допустимых значений. Если введенное значение выходит за такие пределы, то команда PARAMETERS корректирует их и возвращает в таблицу параметров. Мы должны вычислить угол амплитуды. Легче всего вычислить половину угла ’bangl’ между концом хорды и центром. После этого мы вычисляем радиус кривой (brad). Наконец, так как BPRISM_ является плоской изогнутой поверхностью, нам следует найти длину хорды. Так как BPRISM_ должна располагаться относительно центра стула, чтобы скруглить ее симметрично, то нам необходима длина половины хорды. Итак, посмотрите, как выглядел 3D-скрипт раньше, и сделайте необходимые изменения, приведенные ниже.
77
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
!Модифицированный 3D-скрипт !Задние ножки, спинка и обивочный материал IF bakon THEN MATERIAL framat ADD 0,B,sthit CONE bhit,lsec/2,lsec/3, 90,90 ADDx A CONE bhit,lsec/2,lsec/3, 90,90 DEL 2 !Back panel ADD A/2,B-lsec/3+bbulg,sthit+bhit*0.9 ROTx -90 BPRISM_ framat,framat,framat, 5,lsec/3,brad, -bcirc,0,15, bcirc,0,15, bcirc,bhit*0.6,15, -bcirc,bhit*0.6,15, -bcirc,0,-1 !Cushion, not chamfered ADDz -lsec/6 BPRISM_ seatmat,framat,seatmat, 5,lsec/6,brad, -bcirc +ft,ft,15, bcirc -ft,ft,15, bcirc -ft,bhit*0.6-ft,15, -bcirc +ft,bhit*0.6-ft,15, -bcirc +ft,ft,-1 DEL 3 !BLOCK A,lsec/2,bhit*0.6 !original Back panel ENDIF !if bakon
В этом 3D-скрипте мы построили ножки сзади как и раньше, однако при построении задней панели мы сделали некоторые изменения. Мы добавили ADD, что "расположиться" в центе стула. Так как BPRISM_ поворачивается вниз, мы используем ROTx, чтобы ось Z была направлена назад (от стула). Поэкспериментируйте с этим скриптом, изменяя ROTx в интервала -90 - 90. Высота призмы будет вычисляться
78
относительно самой верхней части стула - ‘sthit+bhit*0.9’. Попробуйте изменить эти значения, чтобы посмотреть, будет ли перемещаться спинка. Мы сделали так, что половина ширины призмы имела форму полуокружности, поэтому каким бы ни было значение bulge, стул всегда будет выглядеть прекрасно. Построение задней подушки. Изменяя высоту Z, мы смещаемся на небольшую величину и строим еще одну BPRISM_ для обивки из ткани. Команда DEL 3 приводит к возврату курсора в начало координат. Вы можете удивиться, почему мы не срезали края обивки спинки, как мы сделали это для сидения. Мы не можем иметь обе кривые. Все дело в том, что нам необходимо было выбрать между BPRISM_ и HPRISM_. В данном случае для нас важнее было построить выгнутую спинку.
Последнее усовершенствование - обновление 2D-скрипта В предыдущем случае мы обновили 2D-скрипт. Давайте сделаем это и сейчас. В принципе, если бы мы захотели воспользоваться простейшим вариантом, то использовали бы команду PROJECT2. Так как мы потратили определенные усилия на то, чтобы сделать спинку вогнутой, то сделаем это и для 2D-вида. Преобразуйте в комментарий две команды LINE2 и воспользуйтесь ARC2 для представления спинки стула и еще одной линией для коробки. Напомним: ARC2 x, y, r, alpha, beta: Приводит к вычерчиванию дуги с центром в x,y, радиусом r, с начальным углом alpha и конечным углом beta в направлении против часовой стрелки. HOTARC2 x, y, r, alpha, beta: то же, что и ARC2, однако эта новая команда ArchiCAD 9 позволяет строить дугообразную узловую линию. Щелчок на ней на плане этажа приводит к выбору элемента. Итак, измените 2D-скрипт так, чтобы он принял следующий вид.
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
!Разместите эти строки для представления выгнутой спинки !LINE2 s2,B-s4, A-s2,B-s4 !back !LINE2 s2,B+s4, A-s2,B+s4 !back ARC2A/2,B-brad+bbulg,brad,90-bangl+2,90+bangl-2 !Для AC9 добавьте следующие строки !HOTARC2 A/2,B-brad+bbulg,brad, ! 90-bangl+2,90+bangl-2 LINE2 s2,B, A-s2,B !back for AC7,8 !HOTLINE2 s2,B, A-s2,B !add for AC9
В данном случае нам не надо было использовать команды ADD2. Мы располагаем дугу с помощью координаты XY и располагаем ее по центру спинки, как и для призмы. Угол разворота дуги равен ‘bangl’ в обе стороны. Мы уменьшили этот угол на 2° с обеих сторон, чтобы улучшить стыковку этой дуги с ножками.
• Вы можете сократить время построения призм, используя ‘мгновенный GDL’ посредством перетаскивания объектов с плана этажа в окно 3D-скрипта. • ‘Мгновенный GDL’ лучше всего строить из перекрытий, расположенных так, что одна из его вершин проходит через начало координат. Используйте эту возможность, если фигура призмы не будет после этого сильно изменяться. В противном случае определите призму с параметрами. • Наиболее общая ошибка на начальном этапе использования GDL связана с употреблением символа "запятая". • Для построения отверстия внутри призмы определите его вершины сразу же после определения вершин самой призмы. • С помощью HPRISM можно осуществить срезание или скругление граней. • С помощью BPRISM можно построить криволинейные объемные тела. В этом случае, чтобы определить правильные размеры и расположение, необходимо произвести некоторые вычисления. • Если построенный объект слишком сложный, воспользуйтесь PROJECT2 для создания его 2D-символа. Если же Вы в состоянии создать его самостоятельно, напишите 2D-скрипт.
Постепенно улучшая наш GDL-скрипт, мы получили более точный продукт.
Итоги этой главы по изучению GDL • Призма является наиболее полезной командой в GDL. Ее можно выгнуть, скруглить, срезать, сделать отверстия, представить скошенной или пустотелой. • Для построения призмы нет необходимости перемещать курсор, так как явно задаются координаты ее вершин. Единственное, может появиться необходимость поднять или опустить их. Введение в создание объектов
79
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Глава 7. Анализ автоматически построенных скриптов Имеет смысл провести анализ скриптов объектов, сгенерированных без GDL, и затем модифицировать их таким образом, чтобы они стали параметрическими.
7.1. Анализ автоматически построенных скриптов Промежуточный подход создания объектов На начальном этапе мы пытались создавать объекты без GDL. Теперь мы делаем это с помощью GDL. Вам может показаться, что в этой книге утверждается о необходимости построения объектов с использованием GDL. Это не так! Вы можете создавать прекрасные объекты без GDL, однако при этом лишаетесь возможности делать их параметрическими. С другой стороны, если Вы создаете объекты с помощью GDL, то, в конце концов, можете стать восторженными поклонниками GDL и будете стремиться всю работу делать самостоятельно. Вы будете много часов проводить над написанием скриптов и будете страдать, если получаемые Вами результаты не настолько хороши, как ожидалось. Однако имеется промежуточный подход в решении поставленной задачи. Вы можете воспользоваться возможностями ArchiCAD, чтобы он сделал большую часть Вашей работы, а затем Вы сами преобразуете полученный объект таким образом, чтобы он стал параметрическим в необходимой степени. Вы также можете создать отдельные составляющие своего объекта на плане этажа, перетащить их в окно 3D-скрипта и затем с помощью команд ADD и ROT расположить их соответствующим образом. Сначала давайте посмотрим на объект, полностью построенный с помощью инструментов ArchiCAD и сохраненный как объект.
Создание объектов в среде ArchiCAD Любой, кто пытался открыть 3D-скрипт объекта, полностью созданного в среде ArchiCAD, мог прийти в замешательство. Автоматически построенный скрипт такого объекта имеет
80
сложный "промышленный" код большого размера, который является неструктурированным и его тяжело анализировать. Такой текст вполне приемлем для интерпретатора GDL, но абсолютно не понятен человеку. С другой стороны, написанный программистом текст скрипта хорошо структурирован и его легко воспринимать визуально. К тому же, если он написан параметрическим, то его можно преобразовывать в более сложные конструкции. Если Вы более детально познакомитесь с внешним видом и организацией кода скрипта, построенного автоматически, и постараетесь "разложить его по полочкам", то он не покажется Вам настолько устрашающим. Вспомните, как мы создавали объекты с помощью инструментов ArchiCAD в начале главы 2. При анализе автоматически построенного скрипта следует понять, из каких "кусочков" он состоит. Каждый инструмент в инструментальной панели ArchiCAD имеет эквивалентное представление в GDL. Вы можете посмотреть, какие именно команды GDL соответствуют тем или иным инструментам. Для этого постройте на плане этажа элементы соответствующими инструментами и перетащите эти элементы в окно скрипта GDL. И вы обнаружите следующее. • Стены преобразуются в XWALL_{2} • Крыши преобразуются в CSLAB_ • Перекрытия преобразуются в CPRISM_ • Балки преобразуются в BEAM • Колонны преобразуются в CPRISM_ • 3D-сетки преобразуются в MASS • Штриховка и ломаные линии преобразуются в POLY2_B{2} • Линии преобразуются в LINE2 • Сплайн-кривые преобразуются в SPLINE2A • Тексты преобразуются в TEXT2 • Окружности преобразуются в CIRCLE2 Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
• Узловые точки преобразуются в HOTSPOT2 • Объекты, источники света, объекты Профайлера, лестницы и т.д. представляются в виде макросов и появляются в скрипте в виде предложения CALL. В скрипте каждая деталь имеет ее оригинальный ID и Вы можете сравнить его с ID в модели.
Анализ автопостроенного 3D-скрипта стола Откройте стол, который мы использовали в главе 2 или сделайте сами простой стол. Мы начнем с объяснения того, что содержится в этом скрипте, и затем обсудим, как его сжать и изменить. Главное правило в автоматическом построении скриптов объектов - переместите объект ArchiCAD в сторону основного начала координат. В нашем случае переместите стул так, чтобы в начале координат располагался центр левой ножки. Еще раз сохраните этот объект, используя метод 1 (из 3D-вида). Не забудьте сделать сохраняемый объект редактируемым. Разместите сохраненный объект на плане этажа еще раз, откройте его окно GDL и посмотрите на скрипты.
Первое, что Вы можете сделать, откройте стол в 3D-окне и вставьте небольшой квадратный рисунок в окно рисунка образца. 3D-скрипт начинается с информационных строк. Обычно такие скрипты содержат в начале информацию о дате
Введение в создание объектов
создания, имени объекта, имени автора. Поступайте таким же образом при создании собственных скриптов. ! Document name: ! ! Name : table_2_iomwac.gsm ! Date : April 2004 ! Version : 8.10 ! Written by ArchiCAD ! MULXA/2.25753262639 MULYB/1.001325786114 MULZZZYZX/ 0.75 ADDX 0.4849148094654 ADDY 0.5064862370491 BODY -1 MODEL SOLID RESOL 36
Команда MUL осуществляет сжатие/растяжение объекта. При первом построении стол создавался на плане этажа "на глаз". Поэтому он имел приблизительно размеры 2.25 х1.0 метров и высоту 0.75 метров. В GDL через ZZYZX обозначается высота. Такое необычное имя возникло в версии ArchiCAD 6.0, когда появилась необходимость указывать размер вдоль оси Z. Однако этому параметру нельзя было дать имя Z, так как во многих старых объектах из ArchiCAD 5.0 (и более ранних версий) имя Z использовалось для других целей. Коллектив разработчиков GDL выбрал имя ‘zzyzx’ в честь небольшого городка, расположенного около высохшего соленого озера в Калифорнии недалеко от Лас-Вегаса - последнего в каталоге населенных пунктов Америки. Так как числа в автоматически построенных скриптах представляются с точностью до миллиона миллионных долей метра, то они имеют длинный список цифр после запятой. Чтобы уменьшить количество цифр после запятой, можно строить объекты с использованием сетки. Теперь давайте посмотрим, как действует растяжение/сжатие на автоматически создаваемые скрипты. Если Вы сожмете стол так, что его параметр А примет значение 1.8 метра, то команда MULX умножит все, что измеряется в направлении Х,
81
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
на число A/2.25753262639 (то есть, 1.8/2.25753262639). При этом стол в целом становится короче. Если Вы "растяните" высоту таким образом, что она станет равной 1.2 метра, то с помощью MULZ вертикальные составляющие размеров будут умножены на 1.2/0.75. Команда MULY действует таким же образом. Оставьте ее (если хотите, чтобы стол можно было растягивать). Если Вы не хотите растягивать стол, удалите три команды MUL и в окне 2D-скрипта запишите PROJECT2 3,270,2. Вы получите узловые точки, располагающиеся вдоль контура ограничивающего прямоугольника.
Легче всего изменять параметры покрытия и пера Команда ADD производит смещение. Она используется в том случае, когда объект строится на расстоянии от начала координат на плане этажа. Некоторые пользователи строят свои объекты на расстоянии сотен, а то и тысяч метров от начала координат проекта. Если Вы строите объект очень близко от начала проекта (это должно быть основное начало координат, а не временное), то такое смещение будет небольшим. Обратите внимание, что собственное начало координат объекта располагается в нижнем левом углу. Оставьте эту команду. Команда BODY -1 всегда присутствует в автоматически построенном скрипте. Эта команда интерпретатору GDL, чтобы он гарантировал поддержку целостности каждого объекта. Если Вы сами пишете скрипт, то особой
82
необходимости в этой команде нет, если Вы не используете сложные команды, типа TUBE. Удалите команду BODY. MODEL SOLID указывает, что объект является объемным телом. Это условие подразумевается по умолчанию. Если Вы не используете эту команду, то будет строиться именно тело. Команда RESOL 36 указывает, что в криволинейных поверхностях окружности аппроксимируются 36-угольниками. Значение 36 принимается по умолчанию в данном случае, поэтому нет необходимости в этой команде. Удалите команду MODEL SOLID. GLOB_SCRIPT_TYPE = 3 GLOB_CONTEXT = 3 GLOB_SCALE = 50 GLOB_NORTH_DIR = 90 GLOB_DRAWING_BGD_PEN = 91 GLOB_FRAME_NR = -1 GLOB_EYEPOS_X = -35.85101578994 GLOB_EYEPOS_Y = -7.730174812729 GLOB_EYEPOS_Z = 1.557576862359 GLOB_TARGPOS_X = -30.44915475591 GLOB_TARGPOS_Y = -5.030201323002 GLOB_TARGPOS_Z = 1.5 GLOB_SUN_AZIMUTH = 239.847 GLOB_SUN_ALTITUDE = 11.2981 BODY -1 BODY -1 GLOB_HSTORY_HEIGHT = 0.65
Конструкции, начинающиеся на GLOB, называются глобальными параметрами. Они ничего не делают в данном случае, за исключением фиксации условий, которые доминируют при создании объекта. В момент построения стола указатель на север имел 90°, не было ни какой анимации (номер кадра установлен в -1), были зафиксированы направление взгляда камеры и расположение цели, масштаб чертежа был 1:50. Это не команды, это фиксация значений. О глобальных переменных Вы можете прочесть в Приложении А Справочного пособия по GDL. Далее следуют еще несколько команд BODY. Вы можете удалить ВСЕ команды GLOB! ...во всем скрипте. !!Slab-062 Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
PEN 7 GLOB_LAYER = "Floors" GLOB_ID = "Slab-062" GLOB_INTID = 667 BODY -1 ADDZ 0.6 cPRISM_ "Surface-Whitewash", "Surface-Whitewash", "Surface-Whitewash", 5, 0.1, 0.04300407447266, 0.01376101330492, 15, 1.259910825444, 0.01376101330492, 15, 1.259910825444, -0.02340206237996, 15, 0.04300407447266, -0.02340206237996, 15, 0.04300407447266, 0.01376101330492, -1 DEL 1 BODY -1
Это первый настоящий 3D-элемент скрипта. Это очевидно планка под крышкой стола, так как она всего 100 мм в глубину и 0.57 метров над уровнем этажа. Эта планка и крышка стола строятся с помощью инструмента Перекрытие и все перекрытия преобразуются в CPRISM_. Синтаксис команды CPRISM_ рассмотрен в главе 5. Призма была приподнята на 0.6 и после этого построена. Затем команда DEL возвращает в начало координат. !!Slab-059 GLOB_ID = "Slab-059" GLOB_INTID = 651 BODY -1 ADDZ 0.7 cPRISM_ "Surface-Whitewash", "Surface-Whitewash", "Surface-Whitewash", 49, 0.05, -0.004326136003042, 0.4919763397133, 15, -0.03992947334826, 0.490650560281, 79, -0.1100340105909, 0.4778922240699, 79, -0.1776092841723, 0.4552868334455, 79, -0.2412796563933, 0.4232945689723, 79, -0.2997489820857, 0.382566700897, 79, -0.35182699439, 0.3339323311641, 79, -0.3964535351562, 0.2783815152915, 79, -0.4327201367068, 0.2170451076949, 79, и.т.д., и.т.д., и.т.д. ... Введение в создание объектов
После этого следует довольно длинный список. Это крышка стола. Это действительно крышка стола, так как призма приподнята на 0.7 метров, толщина призмы 0.05 м. и в ее основании много (49) вершин в связи с криволинейной формой. Если мы не уверены в том, что это крышка, то можно обнаружить, что GLOB_ID этого элемента соответствует ID перекрытия, которое было присвоено ему в диалоге установки параметров. Значения всех масок имеют в своем составе 15, однако к этим значениям добавлено 64, поэтому их окончательное значение 79 (15+64). Это свидетельствует, что точки входят в состав кривой, которая должна сглаживаться механизмом визуализации ArchiCAD или Open GL. !!Slab-061 GLOB_ID = "Slab-061" GLOB_INTID = 655 BODY -1 ADDZ 0.05 cPRISM_ "Surface-Whitewash", "Surface-Whitewash", "Surface-Whitewash", 15, 0.05, -0.02400049266183, 0.3960784971471, 15, -0.036711189204, 0.31606425849, 79, -0.05203414774601, 0.154755338342, 79,
-0.05719819902872, -0.007197412027317, 79, -0.05218296290095, -0.03700823220845, -0.02400049266183, 0.04732645894257,
-0.1691548391012, -0.3304777709065, -0.4128433470601, -0.4128433470601,
79, 79, 15, 15,
и т.д., и т.д., и т.д.... Этот очевидно подножки стола, судя по размерам высоты и глубины.
А как насчет 2D-скрипта? Посмотрите на 2D-скрипт. Если Вы использовали команду Сохранить выбранное как (метод 2), то он будет выглядеть довольно сложным, в основном состоящим из команд LINE2 и POLY2. Если Вы существенно изменяете форму или размер 3D-объекта, то, возможно, Вам следует удалить весь
83
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
2D-скрипт и заменить его командой PROJECT2с дополнительными узловыми точками в углах. То же самое следует применить при сохранении 3D-вида (метод 1).
Стол можно сделать параметрическим Если у Вас открыт объект, сохраните его копию под другим именем, например, ‘Table_02.GSM’. Так как Вы построили объект, нажмите кнопку Выбрать подтип и укажите GDL, что это стол.
нажмите на кнопку Спрятать, расположенную рядом с заголовком ArchiFM и все эти параметры будут спрятаны от пользователя. Все вновь создаваемые Вами параметры будут помещаться внизу. Переместите их вверх при необходимости. Выбор правильного подтипа - это больше, чем сохранение времени на ввод данных. В этом случае объект станет вести себя в соответствии с некоторыми внутренними для ArchiCAD правилами (например, стена позволяет создавать проемы для окон, а крыша - для световых люков). Более того, большинство таких объектов будут правильно представляться в интерактивном каталоге. Наличие общих параметров становится основой для их правильного группового редактирования и группового представления в отчетах. Например, если Вы используете имена ‘gs_top_mat’ и ‘gs_leg_mat’ для покрытий крышки стола и его ножек, то Вы сможете выбрать все различные столы (принадлежащие подтипу 'Стол') и обновить покрытия одновременно всех столов. Упростите значения А и В, установив 2.25 м и 1.0 м. Это те размеры, которые необходимы для построения овального стола. В нашем случае в таблице параметров линейные размеры задаются в миллиметрах. При написании скриптов не забудьте, что размеры задаются в метрах. Создайте новый параметр ‘tthik’ для толщины крышки стола.
Перестроение 3D-скрипта
Параметры и подтипы GDL загружает стандартные параметры из шаблона под именем table.gsm. Этот позволяет Вам сохранить много времени, связанного с вводом данных. Давайте создадим новые параметры для покрытий и перьев, при этом обратите внимание, что GDL загружает готовые параметры для некоторых покрытий и перьев, которыми Вы можете воспользоваться. При этом может оказаться, что некоторые из них Вы не предполагаете использовать. В этом случае
84
Пополните информацию в начале скрипта, указав дату и изменения объекта. Сохраните первые две команды MUL, чтобы стол остался растягивающимся, однако подправьте их согласно точным значений А и В. Удалите команду MULZ - высота должна контролироваться параметрически. Что касается кривизны крышки стола, в этой главе не предполагается изменение длины или высоты стола за исключением применения операции растяжения. Небольшие дополнительные знания по GDL, включая его возможности по построению ломаных линий, позволят легко выполнить эту задачу. Однако квалифицированные специалисты по GDL могли бы сделать
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
все это в самом GDL с самого начала, не тратя время на адаптацию 'промышленного' кода.
Удалите перемещения ADD. При этом не забудьте удалить соответствующие команды перемещения в 2D-скрипте. В противном случае символ и соответствующий ему стол не будут иметь одинаковое расположение. Разместите параметрическую команду PEN, введите новый заголовок в таблицу параметров, удалите все лишние команды GLOB и BODY и все последующие PEN. Далее, отметьте все части 3D-скрипта, которые описывают стол. Замените покрытия в начале каждой из команд CPRISM на созданные Вами параметры. ! Name
: table_2_iomwac.gsm
Введение в создание объектов
! Date : April 2004 ! Version : 8.10 ! Written by ArchiCAD modified for iOMWAC MULX A/2.25753262639 MULY B/1.001325786114 !!Centre Beam PEN gs_cont_pen ADDZ zzyzx-0.1-tthik cPRISM_ botmat, botmat, botmat, 5, 0.1, 0.04, 0.01376101330492, 15, 1.21, 0.01376101330492, 15, 1.21, -0.02340206237996, 15, 0.04, -0.02340206237996, 15, 0.04, 0.01376101330492, -1 DEL 1 !!Tabletop ADDZ zzyzx-tthik cPRISM_ gs_top_mat, botmat, edgmat, 49, tthik, -0.004326136003042, 0.4919763397133, 15, -0.03992947334826, 0.490650560281, 79, -0.1100340105909, 0.4778922240699, 79, -0.1776092841723, 0.4552868334455, 79, -0.2412796563933, 0.4232945689723, 79, -0.2997489820857, 0.382566700897, 79, -0.35182699439, 0.3339323311641, 79, -0.3964535351562, 0.2783815152915, 79, -0.4327201367068, 0.2170451076949, 79, -0.4598885156183, 0.1511717407535, 79, -0.4774056020433, 0.08210240625503, 79, -0.4849147986173, 0.01124315667042, 79,
и т.д., и т.д., и т.д.... Для балки измените команду ADDZ таким образом, чтобы она соответствовала общей высоте стола, минус толщину крышки стола, минус высота подножки. Для крышки стола измените команду ADDZ таким образом, чтобы она соответствовала общей высоте стола, минус толщину крышки стола. Замените толщину стола новым параметром ‘tthik’. Помня о качестве, мы можем разместить текст в основном скрипте типа того, который приведен ниже для управления высотой ‘zzyzx’ стола. Это же Вы можете сделать для ‘tthik’.
85
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Символ 'больше или равно' (>=) позволяет производить более точную проверку, чем ‘больше‘ (>), то же самое имеет место и по отношения к символу ‘меньше‘ (<). !Измененный стол !Основной скрипт IF zzyzx>=1.2 THEN zzyzx=1.2 IF zzyzx<=0.4 THEN zzyzx=0.4 PARAMETERS zzyzx=zzyzx
Если хотите, то можете округлить точность представления десятичных знаков в размерных числах. Однако в нашем случае это стоит сделать только по отношению к балке, располагающейся под крышкой стола - мы должны гарантировать, что она располагается точно по центру цилиндрических ножек. Так как CPRISM позволяет задать покрытия сверху, снизу и сбоку в самой команде, замените ‘Whitewash’ на новый параметр покрытия. Так как мы выбрали подтип ’ Стол’ то в нашем распоряжении имеются параметры ‘gs_top_mat’, и ‘gs_leg_mat’. Мы также можем самостоятельно определить другие параметры, например, ‘botmat’, ‘edgmat’ и т.д. Обратим Ваше внимание, что в скрипте они появятся НЕ как имена, а как индексы покрытий. Не смотря на то, что Вам придется немного "повозиться", однако Вы должны то же самое сделать для ножек под столом. Если Вы уже начали это делать, что следует довести это дело до конца. Продумайте все до конца, примите решение, из каких частей они состоят и как должна соотноситься их высота. Дайте метку для каждой части. Сделайте все, что надо, и внесите все это в текст 3D-скрипта. !!Подножка ADDZ 0.05 cPRISM_ footmat, footmat, footmat, 15, 0.05, -0.02400049266183, 0.3960784971471, -0.036711189204, 0.31606425849, -0.05203414774601, 0.154755338342, -0.05719819902872, -0.007197412027317, -0.05218296290095, -0.1691548391012, -0.03700823220845, -0.3304777709065, -0.02400049266183, -0.4128433470601, 0.04732645894257, -0.4128433470601,
86
15, 79, 79, 79, 79, 79, 15, 15,
0.05966670786791, -0.330388076719, 0.07424769749459, -0.1642796538628, 0.07867493665818, 0.002408716924311, 0.0729319557382, 0.1690569439548, 0.05704011900087, 0.3350450848787, 0.04732645894257, 0.3960784971471, -0.02400049266183, 0.3960784971471, DEL 1 !!Little circular pad under foot cPRISM_ footmat2, footmat2, footmat2, 39, 0.05, 0.0410091477233, 0.3437969914738, 0.0410091477233, 0.3463603485633, 0.04011890314868, 0.3514091764344, 0.03836546363036, 0.3562267119174, 0.03580210654081, 0.3606665766344, etc, etc, etc.
79, 79, 79, 79, 79, 15, -1
15, 79, 79, 79, 79,
Замечания относительно ‘структуры’ скрипта попытка введения подпрограмм Отметим, что в автоматически создаваемом скрипте после каждой 3D-команды происходит возврат курсора в начало координат. Это упрощает процесс осмысливания того, что Вы делаете. Все, что Вы делаете при построении одной части объекта, не приводит к нарушению процесса построения последующих частей. Это метод возврата в исходное состояние ‘структурного написания скриптов’, при котором мы возвращаемся в начало координат после любого 3D-предложения. При этом следует помнить, что некоторый элемент, группа элементов или их упорядоченная последовательность являются логическим понятием. Один элемент ножки стола находится в начале координат и Вы можете сделать что-то изящное с другой ножкой. Что касается стола, то его основная идея его восприятия заключается в том, что это прямоугольник 1.25 м. (50”) в длину и 1 м (40”) в ширину с закругленными углами, что добавляет 0.5 м (20”) к его общей длине. Одиночные опоры ножки располагаются в точках с координатами 0, 0 и 1.25, 0. Если Вы можете найти все 3D-предложения, которые строят левую ножку, то можно разместить перед ними числовую Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
метку, например, 100:, а в конце поставить команду RETURN. Удалите весь программный код для второй ножки, располагающейся справа (см. объект на компакт-диске или веб-сайте). Теперь попробуйте сделать следующее. Повторите все, что касается первой ножки со сдвигом на 1.25 м вправо относительно нее в виде подпрограммы. Более детальное обсуждение подпрограмм приводится в следующей главе. Прочтите этот материал и вернитесь к нашему примеру. GOSUB 100:!Single leg ADDx 1.25 GOSUB 100:!Single leg DEL 1 END:!=======================================
ADDZ 0.05 cPRISM_ footmat, footmat, footmat, 15, 0.05, -0.02400049266183, 0.3960784971471, 15, -0.036711189204, 0.31606425849, 79, -0.05203414774601, 0.154755338342, 79, -0.05719819902872, -0.007197412027317,79, и т.д., и т.д., и т.д.. и т.д., и т.д., и т.д.. DEL 1 RETURN
Поиск и замена для приведения в порядок скрипта Наконец, Вы можете воспользоваться командой Найти и заменить для удаления лишних пробелов в исходном скрипте. Введите три пробела в поле Текст для поиска и один пробел в поле Текст для замены. Расположите курсор в начале скрипта и нажмите кнопку Заменить все. Этого будет достаточно. Ваш текст будет выглядеть достаточно "ухоженным".
Последние усовершенствования – 2D-скрипт
100:!Ножка и подножка !!Foot element under leg Введение в создание объектов
Построенный стол можно уже использовать, однако можно еще немного усовершенствовать его представление. Вполне возможно, что сам объект и его 2D-символ не согласуются друг с другом. Если Вы очень торопитесь, то можете поступить следующим образом: запишите команду PROJECT2 и расположите несколько узловых точек. Они должны располагаться в важных местах стола, а не в точках ограничивающего его прямоугольника (см. несколько страниц назад). Если Вы сохраните расстояние А и В между узловыми точками в направлении вдоль осей координат, то объект можно будет растягивать. Спрячьте параметры для перьев и штриховки в таблице параметров, так как Вы не будете использовать их (нажмите на небольшую пиктограмму, содержащую символ Х). Описанные выше процедуры расположения узловых точек не является вполне удовлетворительным для случая большого растяжения стола - они приведут к искажению. Невозможно расположить их точно по отношению к правой ножке без
87
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
создания кода, который был ранее написан для точки центра второй ножки. Чтобы они настраивались параметрически, следует написать параметрический скрипт для самого стола с использованием GDL! Первая создаваемая узловая точка играет важную роль. При размещении объекта на плане этажа именно эта узловая точка будет размещена в том месте, где делается щелчок. !Измененный стол - 2D-скрипт !Centre spot HOTSPOT2 0,0 !first leg centre spot HOTSPOT2 1.25*A/2.2575 !second leg centre spot !Stretch Edge Spots HOTSPOT2 0, B*0.5 HOTSPOT2 0, -B*0.5 !End spots HOTSPOT2 -0.5, 0 HOTSPOT2 A-0.5, 0 PROJECT2 3,270,1 !Draw 3D table in 2D
Создание прозрачного или непрозрачного 2D-символа Если Вы хотите внести дополнительные усовершенствования, то можно улучшить символ стола. Наложите на символ контур с помощью инструмента Штриховка. В этом случае Вы получите непрозрачный символ. Перетащите штриховку в окно 2D-скрипта и в нем появится команда POLY2_B{2}. Создайте новый параметр ‘vutype’ типа Boolean. Оставьте PROJECT2 в качестве возможности, предоставляемой пользователю. Напишите команду IF, которая активирует эту возможность. Для штриховки напишите команду MUL2, соответствующую той, которая имеется в 3D-скрипте. Когда пользователь изменяет размер стола, проецируемое изображение будет также изменено, поэтому Вам следует только использовать команду MUL для многоугольника штриховки. Поместите в предложение POLY2_B{2} стандартные параметры для перьев фона и штриховки, а также тип штриховки, согласно шаблону подтипа. Для консультации
88
воспользуйтесь меню Справка или приведенным ниже примером.
IF vutype=1 THEN PROJECT2 3,270,1 ELSE MUL2 A/2.25753262639, B/1.001325786114 PEN gs_cont_pen FILL gs_fill_type POLY2_B{2} 9, 3, gs_fill_pen, gs_back_pen, 0, 0, 0, -0.004326136003042, 0.4919763397133, 1, 0.01437138894525, -0.005967130246955, 900, 0, 175.6991656132, 4001, -0.004326136003042, -0.5039106002072, 1, 1.308235298525, -0.5039106002072, 1, 1.272110669571, -0.005967130246955, 900, 0, 171.7011905436, 4001, 1.308235298525, 0.4919763397133, 1, -0.004326136003042, 0.4919763397133, -1 DEL 1 ENDIF
В приведенном скрипте имеются коды состояний 900 и 4001. Обсуждение их смысла выходит за рамки этой главы. Просто воспользуйтесь имеющейся командой POLY2 и измените параметры перьев.
Примечания относительно модификации объектов Если Вы создали объект с помощью инструмента Стена, то чтобы воспользоваться этим методом модификации следует быть более опытным специалистом. CPRISM действительно является "дружественной" при ее использовании командой. Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Можно довольно легко модифицировать объекты, созданные с помощью инструмента Перекрытие. Инструмент Стена создает команды XWALL в процессе автоматического построения скриптов и в эти команды не так-то легко вмешаться. Так как инструмент Стена часто используется для создания объектов, имеющих вид сбоку под углом 90°, то перед 3D-скриптом имеются команды ROT, которые лучше не трогать. Инструмента Крыша создает предложения с использованием команд CSLAB_, которые также довольно легко редактировать, так как они имеют контуры фигуры, располагающейся в плоскости XY и третье значение высоты Z в каждой точке. Мы рекомендуем для построения объектов использовать инструменты Перекрытие и Крыша.
7.2. Вернемся к ‘мгновенному GDL’ Метод ‘мгновенного GDL’ предполагает построение элемента на плане этажа ArchiCAD и последующего его перетаскивания в окно скрипта. Перетаскивание не рекомендуется для тех объектов, для которых подходят методы сохранения 1 и 2. Однако этот метод является идеальным для построения отдельных компонент, таких как криволинейные фигуры, контуры ножек мебели и сотен других элементов. Они могут быть преобразованы в скрипты, которые Вы затем усовершенствуете. То же самое можно делать для 2D-объектов, например, штриховки и линий.
Использование 2D для облегчения построения 3D-модели Как не удивительно, существенную помощь в построении 3D-скриптов GDL оказывает инструмент 2D-штриховки. Перетащите 2D-штриховку в окно 2D-скрипта. Затем скопируйте 2D-штриховку (которая представляется в виде команды POLY2_B{2}) и вставьте ее в 3D-окно. Затем преобразуйте ее в 3D-команду. Многие из 3D-команд предполагают предварительное рисование 2D-профиля с последующим его использованием: в EXTRUDE для вытягивания профиля; в REVOLVE для Введение в создание объектов
вращения профиля вокруг оси; в SWEEP для перемещения профиля в пространстве; в TUBE для перемещения 2D-профиля в пространстве с возможностью его вращения и скашивания; в PYRAMID вершины профиля соединяются в одной точке; в RULED точки профиля берутся за основу для повторения того же количества точек на различной высоте. Все эти команды используют тот же синтаксис расположения точек в плоскости XY, что и POLY2_B{2}. Все профили этих команд используют понятие ломаных линий. Их обсуждение выходит за рамки данной книги. Если Вы используете инструмент построения 2D-штриховки для создания многоугольника с криволинейными сторонами и затем копируете этот многоугольник в GDL, то обнаружите много линий с кодами состояний 900 и 4001. Они определяют центр и радиус кривизны. Если Вы копируете и вставляете такие 2D-профили и используете их таким образом, то Вам совсем нет необходимости знать, как с ними работать. Просто используйте их.
Используем 'мгновенный GDL' с командой REVOLVE У нас нет возможности обсудить все перечисленные выше команды. Тем не менее, мы рассмотрим одну из них REVOLVE. Обратитесь к Справочному пособию по GDL для детального ознакомления с командой REVOLVE. Эта команда облегчает построение объекта вращения. Она освобождает Вас от использования Профайлера. Для операции вращения Вам следует начертить 2D-профиль в положительном направлении оси Y, то есть точки располагаются над осью X, и можете произвести вращение. Вычерчивание профиля должно производиться с помощью инструмента, строящего непрерывные линии.
89
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Если для построения объектов вращения Вы воспользуетесь Профайлером, то следует помнить, что он работает вокруг вертикальной оси. В данном случае мы используем горизонтальную ось.
Создайте новый библиотечный элемент в меню Файл и расположите окно 2D-скрипта в правой части экрана так, чтобы оно разместилось рядом с окном плана этажа. Перетащите 2D-штриховку в окно 2D-скрипта. Выполните эту операцию очень быстро. Вы получите что, то вроде следующего скрипта: PEN 1 SET FILL "25 %" POLY2_B{2} 13, 1, 0, 0, 0, 0,
90
0,
0, 0.3760557831815, 1, 0.06592689450963, 0.3760557831815, 1, 0.1013692707986, 0.258191153049, 1, 0.142621891345, 0.2282009802147, 900, 0, -107.9665730337, 4001, 0.1838745118913, 0.258191153049, 1, 0.6645848017343, -0.6870353976553, 900, 0, -47.59681179421, 4001, 1.038393080352, 0.305337005102, 1, 1.380200507736, 0.163899448943, 1, 1.556751901622, 0.02393520066069, 900, 0, -60.68649776848, 4001, 1.592356841974, 0.2464046900357, -1 HOTSPOT2 0, 0.3760557831815 HOTSPOT2 0.06592689450963, 0.3760557831815 HOTSPOT2 0.1013692707986, 0.258191153049 HOTSPOT2 0.1838745118913, 0.258191153049 HOTSPOT2 1.038393080352, 0.305337005102 HOTSPOT2 1.380200507736, 0.163899448943 HOTSPOT2 1.592356841974, 0.2464046900357
Теперь скопируйте только список точек в плоскости XY и вставьте их в 3D-скрипт. Отметим, что в скрипте выше имеется 13 строк с командой POLY2. После копирования в окно в 3D-скрипта оставьте коды состояний прежними за исключением последнего. Он должен быть 1, а не -1. Теперь выше полученного списка добавьте команду REVOLVE. За ней должно следовать количество точек (в нашем случае 13), угол вращения профиля (360°) и, наконец, значение маски, которое установим в 61. Перед командой REVOLVE следует разместить команду ROTy –90, так как объект вращается вокруг оси Х и поэтому является горизонтальным. Чтобы объекты вращения стояли вертикально, их следует повернуть на -90° вокруг оси Y. PEN 1 MATERIAL 18 !Temporary values for pen & material RESOL 16 ROTy -90 REVOLVE 13,360,61, 0, 0.3760557831815, 1, Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
0.06592689450963, 0.3760557831815, 1, 0.1013692707986, 0.258191153049, 1, 0.142621891345, 0.2282009802147, 900, 0, -107.9665730337, 4001, 0.1838745118913, 0.258191153049, 1, 0.6645848017343, -0.6870353976553, 900, 0, -47.59681179421, 4001, 1.038393080352, 0.305337005102, 1, 1.380200507736, 0.163899448943, 1, 1.556751901622, 0.02393520066069, 900, 0, -60.68649776848, 4001, 1.592356841974, 0.2464046900357, +1 DEL 1
Это построенная ваза. Удалите узловые точки и все остальное в 2D-скрипте и запишите стандартную команду PROJECT2 .
Введение в создание объектов
Шахматные фигуры полностью построены с использованием метода перетаскивания и вращения. Коды маскирования и управление кривизной Ключевыми кодами маскирования для нашего случая являются следующие: – 60 дает объект вращения открытый с обоих концов с линиями перьев вверху и внизу. – 61 дает открытый объект с линиями перьев плоского нижнего основания. – 63 дает замкнутый объект с линиями перьев. Какое бы значение для RESOL мы ни дали, ваза будет выглядеть гладкой, так как мы используем механизм визуализации Open GL. При использовании механизма 3D-визуализации ArchiCAD Вы увидите многоугольники. Команда RESOL указывает GDL, что Вы хотите использовать 16 многоугольных поверхностей для представления фигуры. Вы можете сделать 'недееспособной' модель при большом количестве многоугольников. Увеличьте количество многоугольников до нескольких сотен и на Вашем компьютере окажется недостаточно памяти для визуализации. В этом случае Вы также получите нереальное количество многоугольников при экспорте в DXF/DWG или в другой механизм визуализации. Преимущество в использовании GDL заключается в том, что Вы можете управлять количеством создаваемых многоугольников с помощью простой команды RESOL (или TOLER).
91
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Модификация объектов, созданных с помощью расширений Можно открывать и редактировать объекты, созданные с помощью некоторых расширений. Рассмотрим те, которые создаются с помощью Trussmaker и Профайлера. Оба этих расширения позволяют создавать объекты с помощью линейных элементов, состоящих из множества отрезков. Объекты Профайлера строятся с помощью команды TUBE, что позволяет довольно легко их редактировать. Trussmaker является довольно мощным инструментом, однако создаваемый им скрипт GDL является 'промышленным' и его не так-то легко модифицировать.
• Самым простым способом произвести изменения в параметрах является задание имен покрытий. Они могут быть заменены именами переменных. • Методы, которые использовались в этой главе, хороши для построения завершенных объектов. Если же Вы хотите получить быстрое решение, воспользуйтесь ‘мгновенным GDL’ то есть методом перетаскивания. • Многие 3D-объекты используют тот же синтаксис, что и инструмент 2D-штриховки. В связи с этим Вы можете довольно легко строить некоторые из 3D-объектов. Хорошим примером в этом плане является команда REVOLVE. Вам следует внимательно познакомиться с возможностями по маскированию объектов. • Очень важно контролировать количество многоугольников в модели. Если Вы строите объект, который имеет большое количество повторяющихся элементов, то должны воспользоваться возможностями GDL для указания количества создаваемых многоугольников.
Это 3D-навес можно сделать с помощью Профайлера и требует незначительных корректировок в 3D-скрипте GDL. Обратитесь к книге GDL Cookbook для подробного объяснения, как это делается.
Итоги этой главы по изучению GDL • Пример со столом является настолько простым, что в настоящее время Вы в состоянии написать его скрипт в самом GDL без использования метода автоматического построения скриптов. Однако мы все же решили продемонстрировать возможности автоматического построения скриптов.
92
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Глава 8. Встроенная мощь GDL По мере того, как скрипты GDL становятся все более сложными, следует искать способы запоминания часто повторяющихся частей скриптов. Это позволяют сделать подпрограммы и макросы. Open GL позволяет улучшать внешний вид объектов - расширяются возможности по работе с текстурой. "Если Вы хотите использовать золотое правило, которое подходило бы для всех случаев, то оно следующее: не имейте в своем доме ничего такого, что не было бы полезным или красивым". Уильям Моррис.
8.1. Подпрограммы Подпрограмма - это часть кода GDL, которая должна использоваться многократно. Даже если Вы предполагаете использовать ее только один раз, Вы все же можете расположить этот код в отдельном месте. Мы располагаем подпрограммы в конце скрипта после предложения END и придаем этом коду числовую метку, как это обычно делается для каждого места багажа. Мы никогда не должны разрешать случайного обращения скрипта в середину подпрограммы. Обращения должны производиться согласно установленным правилам. Подпрограммы особенно полезны при написании сложных скриптов. Подпрограммы можно использовать во всех скриптах за исключением основного скрипта (в последнем случае предложение END целиком завершает описание объекта).
Подпрограммы используются, чтобы избегать повторного ввода текста скриптов Вы можете взять повторяющийся текст скрипта, дать ему номер и затем произвести обращение к нему по команде GOSUB. Рассмотрим наш пример со стулом. Если создаваемая ножка стула сложная, для ее описания требуется определить много строк и имеется четыре ножки, то не обязательно каждую ножку описывать самостоятельно и даже не нужно копировать и вставлять текст ножки четыре раза. Вы можете следующим образом записать программу для создания всех ножек: 100:!Все ножки GOSUB 110:!One leg Введение в создание объектов
ADDX A GOSUB 110:!One leg ADDY B GOSUB 110:!One leg ADDX -A GOSUB 110:!One leg DEL 3
Подпрограммы позволяют структурировать большой скрипт Основной скрипт может состоять и множества команд GOSUB, которые обращаются к подпрограммам построения отдельных элементов модели. Такая структура базируется на результатах Вашего логического анализа создаваемого объекта. !Стул GOSUB 100:!All the Legs GOSUB 200:!Draw the Seat GOSUB 300:!Build the Back END !----------------------------100:!All the legs GOSUB 110:!One single leg ADDx A GOSUB 110:!One single leg ADDy B GOSUB 110:!One single leg ADDx -A GOSUB 110:!One single leg DEL 3 RETURN 110:!One single leg CONE sthit, lsec/3,lsec/2, 90,90 RETURN
93
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
В приведенном выше примере первая часть скрипта может быть названа как 'управляющий скрипт'. Вся же основная работа выполняется в подпрограммах, расположенных после команды END. Подпрограммы могут иметь иерархическую структуру и их можно перемещать и поворачивать (см. команду ROTx в примере ниже). Все это приближает нас к тому, что называется объектно-ориентированным программированием. Каждая часть нашей модели представляет собой отдельный объект, который идентифицируется и выполняет действия согласно определенным правилам. Если взять в качестве примера человека, то объект 'рука' (который соединен с объектом 'Плечо') может обращаться по GOSUB к подпрограмме 'Предплечье' (которое соединено с 'Локтем'), которая, в свою очередь, обращается по GOSUB к подпрограмме 'Кисть' (соединенная с объектом 'Запястье'), и она может обратиться по GOSUB к подпрограмме 'Пальцы' (которая каждому из пальцев руки дает правильные размеры согласно определенным правилам). Наконец, подпрограмма 'Пальцы' может вызывать подпрограмму 'Ногти', передавая ей необходимые параметры длины и ширины. Внимательно посмотрите на свой объект с точки зрения обнаружения в нем повторяющихся элементов. И если Вы не найдете в нем ничего, что могло бы повторяться, все равно используйте описанный выше принцип иерархического упорядочения. Подпрограммы должны иметь числовые метки и это облегчает их организацию. Например, при моделировании шкафа все, что относится к шкафу в целом, можно пронумеровать числами 100, 110, 120. В свою очередь элементы ящика могут быть пронумерованы 200, 210, 220 и т.д. Графические узловые точки можно начать нумеровать с 1000, предоставляя им номера 1000, 1010, 1020 и т.д. Таким образом, Вы можете быстро найти все, что Вам нужно. После номеров меток нет необходимости писать двоеточие за исключением того случая, когда соответствующее число определяется как метка. Является хорошей практикой предоставление комментария каждой подпрограмме. Я,
94
например, записываю метку подпрограммы и комментарий к ней в отдельной строке (как это показано в примере выше) и затем копирую и вставляю эту строку рядом с теми командами GOSUB, где производится обращение к ним. Таким образом, при каждом обращении к подпрограмме присутствует краткий комментарий о ее назначении.
В данном случае ящики могут представляться подпрограммой, которой передается их ширина, глубина и высота. Графические узловые точки, которые открывают и закрывают ящики, также могут иметь свои подпрограммы.
Передача управления подпрограммам Подпрограммы имеют номера, к которым можно обращаться динамически. Например, Вы можете определить переменную ‘ws’ для указания фигуры окна, которая принимает значения 0, 1 или 2 на основании значения выбираемого из списка значений. Тогда в 3D-скрипте Вы можете воспользоваться этой переменной для обращения к соответствующей подпрограмме построения окна. Например: !Объект окна ROTx -90 GOSUB 100+ws !Window DEL 1 END:!-----------------------------------
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
100:!Rectangular window ........... RETURN 101:!Round topped window ........... RETURN 102:!Gothic window ........... RETURN
Подпрограммы помогают в обнаружении ошибок Когда скрипт объекта становится чрезвычайно сложным, он начинает напоминать спагетти. Наступает момент, когда Вы перестаете понимать, что Вы написали. Только небольшие отрезки скрипта еще можно осмыслить. Если Вы создаете проект коллективно или создаете скрипт, который далее будет сопровождаться другими лицами, то становится чрезвычайно важным подход разделения скрипта на логически самостоятельные блоки, предоставления им статуса подпрограмм с подходящим присвоением номеров. Если Вы обнаружите, что часть созданного объекта имеет не тот вид, то можете сразу же перейти на ту подпрограмму, которая отвечает за построение этой части объекта. По мере роста проекта те или иные подпрограммы принимают статус типовых и их можно копировать в различные объекты. Например, мебель может иметь стандартные виды ножек или дверей. Ограничения в данном случае заключаются в том, что только один человек может редактировать объект GDL в любой момент времени, и когда объекты GDL приобретают статус промышленного товара, необходим другой более мощный подход. Для этого существуют макросы.
Золотые правила написания подпрограмм Давайте подытожим некоторые простые для запоминания правила создания подпрограмм. Подпрограммы должны писаться после команды END. Подпрограммы должны начинаться с числовой метки (за которой следует двоеточие и комментарий) и заканчиваться командой RETURN. Введение в создание объектов
Подпрограммы могут обращаться к другим подпрограммам (но не к самим себе). то касается перемещений курсора, то подпрограммы должны возвращать их состояние. Количество команд DEL должно равняться количеству перемещений курсора в подпрограмме. Ни в коем случае нельзя обращаться во внутрь подпрограммы. Единственным правильным обращением к ней является использование команды GOSUB. Чтобы после завершения одной подпрограммы не начала выполняться следующая за ней подпрограмма, не забудьте поставить команду RETURN после первой.
8.2 Макросы Макрос - это отдельный небольшой файл GDL, который может располагаться в любом месте Вашей библиотеки, и обращение к которому производится как к подпрограмме не смотря на то, что он располагается вне скрипта создаваемого Вами объекта. Макросы оказываются особенно полезными при создании промышленных объектов. Они намного мощнее, чем подпрограммы. Если Вы посмотрите на объекты кухонных принадлежностей или дверей в библиотеке ArchiCAD то Вы убедитесь в следующем. Если бы каждый объект кухонной принадлежности имел бы идентичные подпрограммы, например, для кранов или раковин, то невозможно было бы решить проблему сопровождения таких подпрограмм. Например, всякий раз, когда возникает необходимость изменить диапазон имеющихся кранов, надо открыть все объекты, имеющие краны, и произвести соответствующие изменения в их подпрограммах определения кранов. Давайте рассмотрим этот же пример на дверях. Имеется большое разнообразие дверей и большое разнообразие фурнитуры дверей. Их сочетание становится немыслимо большим. И все это можно поместить в дверную коробку размером 900x2100 мм. Что произойдет, если появится необходимость произвести обновление дверей из некоторого диапазона? Данную ситуацию невозможно даже представить.
95
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Решение заключается в том, чтобы для основного объекта GDL создать интерфейс пользователя, в котором ему предоставляются основные параметры. Большинство из них имеют вид всплывающих текстовых или пиктографических меню. Объект двери в терминах GDL будет делать не больше, чем высечение проема в стене - то есть использует команду WALLHOLE . Затем он обратится по команде CALL к соответствующей дверной коробке, затем к архитравам, если необходимо, к двери (из библиотеки дверей), затем к ручке и т.д. Макросы могут быть иерархическими. Поэтому макрос дверной коробки может обратиться к макросу архитрава, макрос двери - к макросу ручки и стеклянной панели. При каждом обращении к макросу передается необходимая информация, например, размерные характеристики или используемое покрытие. Если необходимая информация не передается, то макрос использует свои значения, заложенные в макрос при его сохранении. . Макрос, в принципе, может быть размещен на плане этажа как обычный объект. Однако по желанию автора его нельзя будет разместить на плане этажа.
элементов. При соблюдении правил именования и некоторых других правил (именование параметров, расположение начала координат) качество объектов может улучшаться без необходимости полного переписывая текстов скриптов. Объекты могут специфицироваться на основании информации в базе данных. Если будет произведена попытка неавторизованного использования объекта, то он не будет работать в связи с отсутствием макроса.
Простой пример макроса В качестве простого примера соединим в единое целое санитарно-техническое оборудование, которые мы построили в главе 3. Это будет еще одним 'мультиобъектом'. Имя макроса не может содержать пробелы (при необходимости можете воспользоваться знаком подчеркивания) и он должен располагаться в загруженной библиотеке.
Подпрограммы и макросы Обычно программисты не любят писать макросы, так как в этом случае основной объект становится самостоятельным. Особенно это относится к тем, кто самостоятельно пишет объекты GDL. Если макрос отсутствует (то есть его нет в загруженных библиотеках) то объект может оказаться недееспособным. Если Вы создаете самостоятельные объекты для продажи, то рекомендуем включать в него все скрипты, включая и подпрограммы. При этом объект становится единым, неделимым и переносимым. С другой стороны, производители библиотек объектов любят использовать макросы. Макросы лучше использовать при коллективной работе, когда члены группы вносят свой личный вклад в общий проект. Такие компоненты, как двери, ручки, краны могут создаваться и сопровождаться независимо. Разработчик может создавать свой набор библиотечных
96
!Принадлежности ванной !Скрипт параметров VALUES 'bthrm_part' 'Bidet','WC','WHB', 'Bath' !Принадлежности ванной !2D-скрипт !Macro Call using default values IF bthrm_part='Bidet' THEN CALL ‘bthrm_bidet’ IF bthrm_part='WC' THEN CALL ‘bthrm_WC’ IF bthrm_part='WHB' THEN CALL ‘bthrm_bath’ !Macro Call sending information IF bthrm_part='WHB' THEN CALL bthrm_WHB PARAMETERS A=0.45,B=0.35 ENDIF
Если Вы укажете в качестве подтипа ‘Символ чертежа’, то значение ‘zzyzx’ не нужно. Если объект сохранен с правильными значениями А и В, то нет необходимости Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
указывать дополнительную информацию - он будет иметь правильный размер. В случае WHB мы можем послать ему правильные размеры. В этом случае будет трудно сделать результирующий объект с изменяющимися размерами (растягивающимся), так как все они имеют различные значения А и В. Кроме того, в сметах Вы будете получать 4 экземпляра одного и того же объекта в одном помещении, хотя Вы, скорее всего, хотели бы получить информацию по каждому из объектов в отдельности. Выберите тот вариант, который Вам подходит.
Теоретически эту ситуацию можно расширить настолько, чтобы можно было построить анимационный ролик игры в шахматы.
Сложный пример макроса
Другим простым примером являются шахматные фигуры. Шахматная фигура - это отдельный объект GDL, который содержит подпрограммы, по одной для каждой фигуры. Шахматная доска имеет довольно простой скрипт GDL (цикл FOR NEXT) для построения клеточек доски. Шахматная доска может использоваться самостоятельно. Более интересная возможность заключается в том, что доска может иметь некоторое начальное расположение, некоторое количество известных эндшпилей и соответствующим образом расположенные на ней фигуры. В базе данных могут содержаться возможные модели игры, обращение к фигурам производится в виде вызова макросов с указанием параметров, например, цвета фигуры. Фигуры могут размещаться на доске. Введение в создание объектов
Это норвежское окно выглядит просто, однако не думайте, что его легко написать. Окна (и двери) на удивление очень тяжело писать. Возможно, это самые тяжелые с точки зрения их написания объекты GDL. Это окно имеет сложную иерархическую структуру. Однако код основного объекта окна в основном посвящен интерфейсу пользователя, а именно, выявлению того, что захотел пользователь. Окно вырезает проем в стене. Затем оно вызывает коробку. Коробка вызывает подоконник, верхнюю и боковые части коробки. Окно определяет, необходимы ли фрамуги и стойки, и при необходимости вызывает их. Из диалога пользователя окно определяет количество створок и наличников, и затем располагает их соответствующим образом. Оно должно знать все о стене - толщину, как глубоко оно должно быть встроено в проем, покрытия внутренних сторон проема. Имеется так много вариантов стилей створок и проемов, что скрип интерфейса пользователя становится намного сложнее, чем скрипт самого окна. Объект окна поддерживает норвежский и английский языки. Метод использования переменных в списке значений гарантирует простоту замены языка.
97
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Дерево должно быть из Норвегии, кожа из Аргентины и вино из Франции. Все должно быть правильным. Любой небольшой кусочек дерева должен иметь правильную ориентацию текстуры, любое соединение должно выглядеть подлинным. Направление текстуры вычисляется для каждого бруска, каждый макрос, содержащий архитектурные украшения, знает, как их представить до мельчайших деталей.
8.3. Текстура - раскрытие большого секрета Не понятно, почему до сих пор было большим секретом ArchiCAD нанесение направленной текстуры. Но это уже не является секретом сейчас. Давайте раскроем его! Open GL изменил все - Вы просто обязаны иметь правильную текстуру - Ваши ошибки относительно нанесения текстуры будут видны в любом 3D-виде. Все, что создается вновь, должно иметь правильную текстуру. Давайте рассмотрим простой метод создания правильной текстуры.
Создавайте текстуру горизонтально При создании собственной текстуры с использованием меню Параметры ArchiCAD важно, чтобы она создавалась горизонтально. Почти что все растровые изображения текстуры, уже существующей в ArchiCAD, имеют горизонтальную ориентацию. Относится ли это к кирпичной кладке, древесине или любой другой текстуре. Любая создаваемая Вами текстура должна соблюдать это правило.
Частичное раскрытие секрета
Вы можете увидеть результаты работы макросов: архитравы, решетки, оконная створка и даже стекло. Даже в 2D-символе окна используются макросы для рисования тех же контуров сечения, которые используются для вычерчивания 3D-брусков. Окно является зависимым от масштаба. На рисунке выше символ окна приведен в масштабе 1:50. Для масштабов 1:100 или 1:20 символ имеет другие 2D-линии. Это является существенным моментом в написании хорошего объекта GDL так как, например, в масштабе 1:100 многие линии, детализирующие 2D-символ окна, будут накладываться друг на друга.
Приводимая далее программа является небольшой частью кода, который возвращает нас к первым дням существования GDL. Этот код гарантирует, что текстура будет хорошо выглядеть сбоку, и располагается вдоль оси Х. У нас нет возможности детально объяснить все это; для этого обратитесь к книге GDL Cookbook. Команды VERT указывают, где начинается текстура, и ее направление. Команда COOR принимает решение относительно расположения текстуры (в нашем случае выбирается "кубическое" расположение). Наконец, BODY -1 осуществляет фактическое обволакивание объекта текстурой. Воспользуйтесь этим в Вашей работе, и Вы получите правильную текстуру. Давайте напишем все это в виде подпрограммы, скопируйте и вставьте это везде, где нужна текстура, и Вы станете счастливым пользователем GDL! 999:!Горизонтальная текстура вдоль оси X
98
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
BASE VERT 0,0,0 !origin VERT 1,0,0 !X VERT 0,1,0 !Y VERT 0,0,1 !Z COOR 258,-1,-2,-3,-4 BODY -1 RETURN
Ранее в этой главе было сказано, что Вы можете использовать подпрограмму как объект - создаваемый ею элемент можно поворачивать и перемещать. Действительно, этот ‘тюбик зубной пасты’ можно повернуть в любую сторону и выдавить. После написания объекта произведите необходимый поворот и выполните команду GOSUB для обращения к подпрограмме текстуры. BLOCK A,B,zzyzx ROTy -90:GOSUB 999:DEL 1 !Texture vertical Выше приведен пример расположения нескольких команд на одной строке. Они разделяются двоеточием.
Давайте обратимся к стулу Давайте предположим, что вся коробка сидения, которую мы построили раньше, находится в подпрограмме 200. Если необходимо, то обратитесь к соответствующим скриптам стула.
Введение в создание объектов
Слева отсутствует управление нанесением текстуры на дерево. Справа текстура располагается правильно. 200:!Сиденье и обивочный материал ADDz sthit-frsec !Improved Mortice and tenon ft=0.03 f2=ft/2 PRISM_ 5+5, frsec-0.002, -f2, -f2, 15, A+f2, -f2, 15, A+f2, B+f2, 15, -f2, B+f2, 15, -f2, -f2, -1, f2, f2, 15, A-f2, f2, 15, A-f2, B-f2, 15, f2, B-f2, 15, f2, f2, -1 !Подушка сиденья !Chamfered with HPRISM_ HPRISM_ seatmat,framat,seatmat,seatmat,
99
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
5,frsec+0.010, 30,0.01,1, f2, f2, 15, A-f2, f2, 15, A-f2,B-f2, 15, f2,B-f2, 15, f2, f2, -1 DEL 1 RETURN
Правильное расположение текстуры видно в 3D-изображении. Однако, передняя, задняя и боковые планки коробки сиденья имеют одинаковую текстуру. Воспользуйтесь подпрограммой 999, которая была приведена ранее, и создайте 4 отдельных планки коробки - все это необходимо сделать после 3D-предложения.
Вся текстура выглядит правильно - распорки ножек, ножки, подлокотники, планки коробка, сидение. Мы не можем изменить линии перьев в точках соединения конусов. Для контроля за линиями перьев нужна команда REVOLVE. !Стул с коробкой и текстурой 200:!Сиденье и обивочный материал ADDz sthit-frsec !Построение 4 призм для коробки сиденья ft=0.03 f2=ft/2
100
GOSUB 210:!Продольная планка ADDx A GOSUB 210:!Продольная планка DEL 1 GOSUB 220:!Поперечная планка ADDy B GOSUB 220:!Поперечная планка DEL 1 !Подушка сиденья HPRISM_ seatmat,framat,seatmat,seatmat, 5,frsec+0.010, 30,0.01,1, f2, f2, 15, A-f2, f2, 15, A-f2,B-f2, 15, f2,B-f2, 15, f2, f2, -1 GOSUB 999:!Нанесение текстуры DEL 1 RETURN 210:!Продольная планка PRISM 5,frsec-0.002, -f2,0, f2,0, f2,B, -f2,B, -f2,0 ROTz 90 GOSUB 999:!Нанесение текстуры DEL 1 RETURN 220:!Поперечная планка PRISM 5,frsec-0.002, -f2,-f2, A-f2,-f2, A-f2, f2, -f2, f2, -f2,-f2 GOSUB 999:!Нанесение текстуры RETURN
Анализ оставшейся части скрипта объекта Ограниченный размер книги не позволяет нам привести весь 3D-скрипт стула с подпрограммами и наложением текстуры. Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Однако Вы можете обратиться к компакт-диску или веб-сайту и посмотреть на этот скрипт. Думаем, он Вам будет понятен.
Можно накладывать текстуру с помощью макросов Так как эта подпрограмма не требует параметров, то она может быть представлена в виде макроса - крошечный текстовый файл на 7 строк, который можно вызывать из других скриптов. В моей библиотеке я назвал этот макрос ‘Paint_it.GDL’ обычный текстовый файл, который можно написать в Блокноте и сохранить в библиотеке. Для его вызова достаточно команды CALL ‘Paint_it’. Более того, так как в нем нет параметров, то можно записать просто само имя Paint_it и при этом будет произведено обращение к макросу. Введите следующий текст в Блокноте и сохраните в Вашей библиотеке. !Paint_it.GDL BASE VERT 0,0,0 !origin VERT 1,0,0 !X VERT 0,1,0 !Y VERT 0,0,1 !Z COOR 2+256,-1,-2,-3,-4 BODY -1
Дополнительные замечания относительно текстуры
команды BODY -1 имеются до подпрограммы, то их действия будут аннулироваться. К сожалению, если Вы используете двоичные объекты или команды GDL оперирования объемными элементами (ООЭ), см. главу 11,Вы не можете воспользоваться этим методом управления текстурой.
Итоги этой главы по изучению GDL • Подпрограммы позволяют избегать повторного ввода одного и того же текста. • Подпрограммы позволяют структурировать длинный скрипт. • Подпрограммы можно использовать для контроля управления порядком вычислений. • Подпрограммы помогают в нахождении ошибок • Подпрограммы: проанализируйте золотые правила! • Макросы- это небольшие файлы в загруженных библиотеках. • Макросы хороши для создания промышленных продуктов, но не совсем хороши для создания отдельных объектов. • Текстура: сейчас очень важно наносить правильную текстуру в связи с большими возможностями Open GL. • Текстура: можно легко получать правильную текстуру с помощью простой подпрограммы.
Если Вы хотите получить эффект сферической или цилиндрической текстуры, то это возможно, но для этого следует дополнительно познакомиться с соответствующими возможностями GDL. Вы должны либо изменить предложение VERT, либо изменить способ обволакивания текстуры, либо то и другое. Если Вы изменяете существующие объекты библиотеки, особенно те, которые были созданы с помощью автоматического построения скриптов, мы предлагаем воспользоваться подпрограммой 999 из этой главы. Не забудьте удалить все команды BODY -1 в основном скрипте. Теперь они используются в подпрограмме текстуры и если Введение в создание объектов
101
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Глава 9. Объекты афиш Иногда лучше совсем не моделировать объекты - они либо очень сложные по написанию либо имеют слишком сложный внешний вид. Примером таких объектов являются те, которые должны иметь реалистические рисунки. Объекты афиш можно создавать с использованием цифровых фотографий с приданием им объемного представления. "В то время как все мы стремимся создавать точные и привлекательные 3D-объекты, эффективные модели визуализации используют фотографические "афиши", воспроизводящие лиственный орнамент и различные изображения для придания большего реализма и уменьшения различных расчетов, связанных с построением многоугольников. Оказывается непрактичным и отнимающим много времени процесс воспроизведения всех нюансов связанных, например, с представлением кожи или листвы. Хорошо подобранная фотография придает реалистичность и динамизм, которые невозможно воссоздать с помощью существующих 3D-объектов. Вы будете изумлены тем, как хорошо объекты рисунков выполняют свою функцию в любых условиях". Двайт Аткинсон, Ванкувер, автор "Illustration in ArchiCAD 2002".
9.1. Объекты афиш - использование реалистических рисунков! Наступил момент, когда Вы сможете убедиться, что объекты могут быть слишком сложными для их создания, даже в GDL. Для их создания может потребоваться слишком много времени, либо они могут оказаться слишком реалистическими для выполнения поставленных целей. Примером могут служить изображения людей или деревьев. В этом случае намного легче нанести на необходимую поверхность хорошую фотографию, чем строить соответствующий объект. Некоторые специалисты предлагают использовать Photoshop для создания изображений людей, деревьев и фона. Такой подход может использоваться для создания статических фотореалистических изображений. Однако, если предполагается проведения съемки проекта лучше всего использовать объекты афиш, то есть поверхностей с фототекстурой в 3D-видах. Имеется несколько способов достичь этого и при этом в каждом случае необходимо будет обходить подводные камни. Имеются расширения, созданные сторонними организациями, например, ArchiPaint и ArchiFacade, которые позволяют создавать объекты афиш. Кроме того, расширение ArchiTerra также демонстрирует возможности в этом направлении.
102
Создаваемые в нем объекты деревьев имеют реалистический вид. Имеется два типа объектов из этой категории: афиши на основе рисунков, которые используют альфа-канал в цветном изображении прямоугольной формы, и афиши на основе аппликации, которые используют текстуру для корректного нанесения аппликации. Open GL привнес многое в изменение статуса объектов афиш. Раньше афиши на основе рисунков в основном выглядели как большие серые прямоугольники, если к ним не применялся метод построения реалистического фотоизображения. Афиши на основе аппликации также представлялись в виде серой аппликации. Поэтому пользователи не хотели их использовать. Сейчас они выглядят хорошо. С помощью развитых средств GDL можно оживить аппликацию и наложенную текстуру в том смысле, что можно имитировать движение. Расширения Piranesi и Artlantis (средства визуализации для ArchiCAD, разработанные сторонними организациями) могут работать с аппликацией. Кроме того, можно воспользоваться их собственными библиотеками объектов афиш, имеющими изображения людей и деревьев. Но все это не Ваши изображения. У Вас же может возникнуть необходимость создания в ArchiCAD собственных реалистических изображений. Новый механизм визуализации Lightworks поощряет использование ArchiCAD для создания Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
таких изображений. При этом не надо беспокоиться относительно возможных различных недоразумений, которые могут возникать при экспорте объектов в другие приложения.
Существующие объекты афиш В существующей библиотеке ArchiCAD имеются два объекта: Ковер и Рисунок. Ковер представляется прямоугольником, который можно растягивать горизонтально, а Рисунок вертикально растягивающийся прямоугольник с фиксированной задней панелью и рамкой рисунка. Позже в этой главе мы воспользуемся и приспособим для наших целей Рисунок, что позволит Вам иметь свои собственные изображения людей и деревьев.
простая и делается она наложением фотографий на простые фигуры типа кубов и параллелепипедов. При этом деревья обычно остаются плоскими объектами, представленными в виде аппликации. Давайте рассмотрим три способа создания собственных объектов: афиши-аппликации, афиши-рисунки и их комбинация. Эта глава включает иллюстрации использования альфа-канала.
9.2. Создание афиш в виде аппликации Вы можете легко создать фигуры аппликаций с помощью инструмента Перекрытие и если Вы также создадите новое покрытие с текстурой правильного размера, то можете подогнать их друг к другу. Мы как раз сделаем это в нашем упражнении. С помощью Photoshop или аналогичного ему редактора вырежьте аккуратно изображение так, чтобы оставить один пиксел вокруг изображения человека, дерева или автомобиля. Нет необходимости удалять фон (при создании аппликации текстура, которая не попадает в аппликацию, просто исчезает). Сохраните это вырезанный рисунок в загруженной библиотеке и перезагрузите библиотеку. Если Вы не получили необходимого вида изображения, то воспользуйтесь командой Photoshop Edit > Free Transform > Perspective and Distort, чтобы настроить изображение.
Здесь приводятся объекты ArchiCAD Ковер и Рисунок. Слева расположен объект Рисунок, настроенный таким образом, чтобы с помощью альфа-канала имитировать эффект силуэта без заднего фона. Вы также видите два "серых человека" - еще одна возможность обогащения сцены. Любой, кто играл в компьютерные игры, знает, окружающая среда в 3D в подавляющем большинстве случаев очень Введение в создание объектов
103
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Постройте еще одно прямоугольное перекрытие вокруг вырезанного изображения. Установите для обоих перекрытий покрытие “matthew_cutout”. Сначала Вы обнаружите, что текстура будет начинаться с произвольной точки, однако она будет иметь правильные размеры. По сути, начальная точка привязки текстуры находится в начале координат проекта, где-то далеко в сторону. Нам следует воспользоваться командой Привязка 3D-текстуры, чтобы она начиналась в нижнем левом углу. В этом нам помогает Open GL, так как Вы можете оперативно наблюдать в 3D-виде изменения в привязке текстуры.
Мы воспользовались изображением Мэтью Лодена (Matthew Lohden), внесшего большой вклад в создание ArchiCAD-Talk и ArchiCAD University events. Теперь Вы можете разместить Рисунок на плане этажа. . Сохраняя пропорции, измените размер рисунка так, чтобы он принял правильные размеры. В нашем случае это 590 х 1800 мм (2 x 6 футов). Выберите в ArchiCAD команду Параметры > Реквизиты > Покрытия для создания нового покрытия. Выберите покрытие типа "Побелка", нажмите кнопку Дубликат и переименуйте полученную копию - в нашем случае я назвал покрытие “matthew_cutout”. Раскройте панель Текстура и выберите Рисунок. Выберите размер рисунка для текстуры таким же, как и на плане этажа - 590 x 1800 мм. Вернитесь на план этажа, выберите инструмент Перекрытие, установите его в 10 мм в высоту и постройте перекрытие по контуру рисунка, как показано на иллюстрации ниже.
104
Выберите оба перекрытия и посмотрите на них в аксонометрическом 3D-виде. Выберите команду Редактор > Привязка 3D-текстуры > Начало координат и разместите начало координат в нижнем левом углу прямоугольного перекрытия. Теперь определим направление текстуры. Выберите команду Редактор > Привязка 3D-текстуры > Установить направление, щелкните внутри изображения и в открывшемся диалоговом окне выберите вариант ручного определения направления и установите угол в 0°. Выберите аппликацию, перейдите в 3D-окно, выберите вид сбоку под углом в 90° и сохраните полученное изображение как редактируемый объект. Разместите его на плане этажа. Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
DEL 1 BODY -1
-35.30677655926, 12.88720216694,
-1
Теперь замените это окончание скрипта на следующие команды для текстуры:
Если Ваша аппликация точно подходит под рисунок (в пределах одного пиксела), то 3D-скрипт будет написан из расчета, что нижний левый угол является началом координат нового объекта. Поэтому, если Вы установите текстуру согласно нижнему левому углу, то она будет иметь необходимую привязку. Если процедура привязки текстуры выполнена корректно, то 3D-скрипт будет заканчиваться следующим образом: ! CPRISM будет заканчиваться приблизительно так... -35.36420271267, 12.94639198852, 15, -35.35731157426, 12.90504515807, 15, -35.30677655926, 12.88720216694, -1 BASE VERT -35.45259415915, 12.88720216694, -0.0004516888204097 VERT -33.64050165154, 12.88720216694, -0.0004516888204097 VERT -35.45259415915, 13.53348955012, -0.0004516888204097 VERT -35.45259415915, 12.88720216694, 0.009096622359181 COOR 8468, -1, -2, -3, -4 DEL 1 BODY -1
Если у Вас возникли проблемы с .привязкой 3D-текстуры, сохраните объект. Откройте 3D-скрипт и посмотрите на него...
! CPRISM будет заканчиваться приблизительно так... -35.36420271267, 12.94639198852, 15, -35.35731157426, 12.90504515807, 15, Введение в создание объектов
! CPRISM будет заканчиваться приблизительно так... -35.36420271267, 12.94639198852, 15, -35.35731157426, 12.90504515807, 15, -35.30677655926, 12.88720216694, -1 DEL top ROTz 180 ROTx 90 BASE VERT 0,0,0 VERT 1,0,0 VERT 0,1,0 VERT 0,0,1 COOR 258,-1,-2,-3,-4 BODY -1
Теперь Open GL дает качественное изображение аппликации. Афиша построена на основе рисунка с контрольным прямоугольником и без использования прозрачности. При построении фотореалистического изображения появятся тени.
Вы можете использовать серые фигуры Аппликация может использоваться без текстуры. Люди часто выглядят лучше при построении реалистического изображения, когда аппликация использует покрытие "Лед" или "Вода", а не реалистическую текстуру. Если Вы начали построение с использованием подходящей текстуры, то должны продолжить. Серые фигуры аппликаций поддерживаются в ArchiCAD и в других внешних механизмах визуализации. При этом требуется меньше усилий для создания объектов и они не отвлекают от решения основных архитектурных вопросов.
Вы можете использовать прямоугольную аппликацию Это вроде бы противоречит основному назначению аппликации. Это означает, что Вы можете использовать
105
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
технологию наложения покрытий-текстур на поверхность, однако используете для этого прямоугольную область, а не четко прорисовываете контур необходимой фигуры с помощью перекрытия. В 3D-виде Вы получаете прямоугольник, однако при построении реалистического фотоизображения текстура с альфа-каналом будет отбрасываться тень. Мы это сделаем далее в этой главе.
ArchiCAD. Создайте объект с каким то несущественным покрытием, например, "Побелка". Теперь Вы можете воспользоваться приведенным ниже простым скриптом скопируйте и вставьте его в основной скрипт Вашего объекта, всякий раз производя незначительные модификации. Полное объяснение этого приема выходит за рамки этой книги. Тем не менее, Вы можете им воспользоваться. !Texture and Material routine !Write in the name of the Texture file and !its dimensions in metres DEFINE TEXTURE ‘biltexture’ ‘mathew_cutout.jpg’, 0.590,1.80, 1,0 DEFINE MATERIAL ‘bilmat’ 24, 1, 1, 1, 0, 61, IND(TEXTURE,’biltexture’)
Теперь перейдите в 3D-скрипт и измените три покрытия CPRISM на ‘biltexture’, обязательно в кавычках. Вы также должны вставить команду PROJECT2 3,270,2 в 2D-скрипт. Теперь объект стал полностью переносимым и отпала необходимость создавать новое покрытие в ArchiCAD.
9.3. Создание афиш с помощью альфа-канала с рисунком
На этом рисунке иллюстрируется использование 3D-вида Open GL (слева), реалистического фотоизображения с тенями (справа) и изображение плана этажа и исходным перекрытием и афишей (внизу). Слева направо представлены: автор книги в виде аппликации, Мэтью в прямоугольной аппликации (с отбрасыванием тени), затем два варианта объекта аппликации, оба отбрасывающих тени.
Встроенные текстура и покрытие Имеется возможность встраивать текстуру и покрытие, поэтому нет необходимости всякий раз создавать покрытие в
106
Объекты афиш, использующие команду PICTURE, фактически являются прямоугольниками GDL с наложенными на них рисунками, например, "Ковер" и "Рисунок" в библиотеке ArchiCAD. Они становятся 'оконтуренными' объектами только благодаря достоинству альфа-каналов в растровом файле правильно показываются только в фотореалистических изображениях. В 3D-видах они остаются прямоугольниками и отбрасывают прямоугольные тени. Вам нет необходимости определять текстуру и покрытия, однако должны пройти краткий учебный курс по Adobe Photoshop.
Краткий обзор Photoshop Adobe Photoshop является чрезвычайно ценным "попутчиком" пользователей ArchiCAD. Если у Вас нет этого приложения, то можно воспользоваться другими программами редактирования растровых изображений, которые Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
поддерживают альфа-каналы. Альфа-канал - это часть 32-битового цвета, в котором 24 бита используется для трех видимых каналов - красного, зеленого и синего (по 8 бит на каждый).Остальные 8 бит для поддержания таких "интересных вещей", как прозрачность, специальные эффекты отражения, тиснение и т.д. И все это мы называем альфа-каналом. Для выполнения этого учебного материала можно использовать Photoshop 3, 4, 5, 6 и 7. Растровые файлы с альфа-каналом должны быть "богатыми" относительно данных. Это означает, что они должны сохраняться в формате TIF без сжатия. При сохранении в формате JPG в результате сжатия теряется альфа-канал. Определение покрытий ArchiCAD позволяет использовать все эти специальные эффекты. Команда PICTURE в GDL позволяет использовать альфа-канал для прозрачности. Рисунок, который Вы хотите использовать, должен быть сохранен в загруженной библиотеке (и после сохранения библиотеку следует перезагрузить).
Давайте создадим альфа-канал. В Photoshop окружите рисунок Мэтью с помощью многоугольника-лассо. В меню Select выберите Inverse и удалите (фон будет удален). Обрежьте рисунок ближе к краям изображения. Но при этом оставьте, по крайней мере, один белый пиксел вокруг контура. Теперь воспользуйтесь волшебной палочкой для выбора белого фона. Вся белая область должна стать мерцающей.
Выберите команду Select > Inverse и после этого лассо окружит изображение. Теперь сохраните выбранное с помощью меню Select. Все, что надо, выполнено, альфа-канал создан. Вы можете увидеть это на приведенной ниже иллюстрации - под Red, Green и Blue указывается наличие альфа-канала. Введение в создание объектов
107
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Сохраните созданное растровое изображение в файле формата TIF. Разместите этот файл в загруженной библиотеке и перезагрузите ее.
Теперь можно создать объект афиши-рисунка Если Вы примените команду ROTx 90 в 3D-скрипте копии объекта ‘Ковер.gsm’ и замените 2D-скрипт на LINE2 0,0,A,0, то получите роскошный вертикально расположенный объект афиши. Тем не менее, лучше воспользоваться следующим скриптом. !!Billboard.gsm !!2D-скрипт PEN cont_pen HOTSPOT2 0,0 HOTSPOT2 A,0 HOTSPOT2 A/2,0 CIRCLE2 0,0,A/100 CIRCLE2 A,0,A/100 CIRCLE2 A/2,0,A/100 LINE2 0,0,A,0 !AC8 and earlier !AC9 - use HOTLINE2 0,0,A,0
108
Параметры афиши, 3D-вид и 2D-символ. !!Billboard.gsm - 3D-скрипт PEN cont_pen IF gs_shadow THEN SHADOW ON MATERIAL matl ROTx 90 PICTURE picture_file,A,zzyzx,mask DEL 1 HOTSPOT 0,0,0,1 HOTSPOT A,0,0,2 HOTSPOT A,0,zzyzx,3 HOTSPOT 0,0,zzyzx,4 HOTSPOT A/2,0,zzyzx/2,5
Это очень простой вариант объекта афиши-рисунка. К нему можно добавить дополнительные более изящные возможности, например, способность поворачиваться в сторону камеры. Обратитесь к книге GDL Cookbook для более детального ознакомления с объектами афиш.
Замечание относительно теней Текстура покрытий, которая базируется на альфа-канале, примененная к элементам или объектам ArchiCAD, будет Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
правильно отбрасывать тени согласно контурам альфа-канала. Объекты, построенные на основе рисунков, будут отбрасывать прямоугольные тени при использовании механизма визуализации ArchiCAD и правильные тени при использовании механизма Lightworks. Чтобы получить наилучшие результаты, откройте диалог команды Визуализация > Параметры фотоизображения > Спецэффекты и выберите вариант Использовать прозрачность для отбрасывания теней. Если Вы хотите получить наилучший результат относительно отбрасывания теней, то воспользуйтесь афишей-аппликацией. Ожидаемый эффект получается как при построении реалистического фотоизображения, так и в 3D-окне. При этом, естественно, следует создать соответствующее покрытие. Open GL и 3D-вид не используют прозрачность в объектах-рисунках. Если Вы хотите управлять отбрасыванием теней, создайте параметр ‘shad’ типа Boolean и начните 3D-скрипт следующей строкой:
объекта-рисунка, когда пользователь имеет возможность указать имя файла рисунка. Такой объект приводит к созданию растягивающегося прямоугольника, который будет отбрасывать правильную тень.
IF shad THEN SHADOW ON ELSE SHADOW OFF
Компромисс между описанными выше двумя вариантами заключается в том, что Вы можете сами сохранить в ArchiCAD все, что оттрассировано вокруг объектов, и использовать прямоугольную аппликацию с применением к ней текстуры, которая использует альфа-каналы. Все это будет представлено в виде прямоугольника в 3D-окне, однако будет прекрасно выглядеть в фотоизображении и будет правильно отбрасывать тени.
9.4. Прямоугольная аппликация комбинированный объект Здесь пойдет речь не о реальной аппликации, а о прямоугольной области, которая использует технологию объекта аппликации. В этом случае принципиальным также является наложение текстуры на поверхность и использование процедуры привязки текстуры к нижнему левому углу. При этом может поддерживаться интерфейс как и для Введение в создание объектов
В таком варианте (параметры и возможность растягивания) получаемое изображение невозможно отличить от объекта-рисунка. Тем не менее, оно лучше. Нам необходимо настроить основной скрипт согласно объекту-аппликации. !Основной скрипт прямоугольного объекта афиши DEFINE TEXTURE 'biltexture' picture_file, A,zzyzx,1,0 DEFINE MATERIAL 'bilmat' 24, 1,1,1, 0,61,IND(TEXTURE,'biltexture')
Небольшое различие заключается в том, что имя файла рисунка становится параметром и размеры рисунка динамически изменяются согласно размерам ‘A’ и ‘zzyzx’.
109
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
!Billboard Rectangular.gsm !3D-скрипт PEN cont_pen IF shad THEN SHADOW ON ELSE SHADOW OFF MATERIAL bilmat ROTx 90 POLY_ 5, 0,0,1, A,0,1, A,zzyzx,1, 0,zzyzx,1, 0,0,-1 BASE VERT 0,0,0 VERT 0.1,0,0 VERT 0,0.1,0
VERT 0,0,0.1 COOR 258, -1,-2,-3,-4 BODY -1 DEL 1 Здесь мы не используем PRISM.POLY_ является единственной простой поверхностью, которая не будет обнаруживать ребер, которые показываются при визуализации. Мы используем процедуру наложения текстуры, которая использовалась в предыдущей главе. Скопируйте все это и вставьте! Что касается 2D-скрипта, скопируйте скрипт объекта-рисунка из предыдущего раздела этой главы. Этого будет достаточно!
Этот возможность оказывается полезной при размещении деревьев и растений на плане этажа. Можно также размещать изображения людей, автомобилей или деревьев в разрезах и фасадах, как если бы они были объектами-афишами. Единственное, что надо, так это сделать белым фон.
9.5. Идея афиши в 2D Если Вы разместите растровый рисунок на плане этажа и посмотрите диалоговое окно установки его параметров, то обнаружите там кнопку прозрачности. Любая полностью белая часть изображения (со значениями RGB 255:255:255 или FFFFFF) будет представлена как прозрачная.
110
После этого можно воспользоваться командами подменю Сервис > Порядок показа для указания порядка наложения фигур.
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
9.6. Создание афиши - использование фотографии Если Вы хотите использовать технологию афиш для построения фасада здания, то существует проблема, которая мешает Вам остаться наедине с ним. То полицейский настаивает на том, чтобы Вы отошли в сторону, то солнце светит Вам в лицо, то мешают деревья, то перед зданием остановился экскурсионный автобус. Либо просто здание оказывается слишком высоким, чтобы попасть в объектив камеры. Тем не менее, Вы можете сделать перспективный снимок, направленный вверх, или отснять кадр здания сбоку. Если Вы хотите обработать перспективное изображение, то можете воспользоваться Photoshop и с помощью команды Edit > Free Transform > Perspective and Distort выпрямить фасад здания. Однако это не так-то легко сделать и пропорции фасада, а также расположенных вверху окон останутся неправильными. В этом случае серьезные проектировщики всегда имеют под рукой ArchiFacade фирмы Cigraph или PhotoCAD фирмы Abvent.
Для ознакомления обратитесь по адресу http://www.cigraph-store.com ArchiFacade - это API (расширение), которое использует метод аппликации и создает объект GDL для каждой аппликации. Этот продукт удовлетворяет необходимым требованиям и хорошо "выпрямляет" и систематизирует растровые изображения. Он расширяет возможности по созданию объектов афиш, включая процедуры нанесения текстуры GDL.
Предоставляя приложению ArchiFacade требуемую ширину и высоту фасада, Вы быстро получаете точное изображение "выпрямленного" фасада. Если, глядя на фасад, Вы обнаруживаете, что получили точное изображение входа в здание, его типичных окон и карниза, то Введение в создание объектов
111
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Вы можете произвести реконструкцию фасада путем копирования-вставки таким образом, что нужная часть будет выглядеть абсолютно корректно, даже если оставшаяся часть будет скрыта деревьями. Однако это каторжная работа!
будут прекрасно работать в Lightworks. Выбирайте наилучший для Вас вариант. • "Серые" фигуры могут использоваться для заполнения сцены без снижения качества архитектурных решений. • "Выпрямление" фотографии здания - это не просто снятие скошенности. Следует точно воссоздать пропорции здания. • 2D-объекты для планов этажей и разрезов/фасадов могут быть разработаны без использования технологии создания обычных пространственных объектов. Для этого Вы можете воспользоваться рисунками с прозрачным фоном.
Это вид Центрального авеню в Западном Бриджфорде (West Bridgford) недалеко от дома, где живет автор этой книги. Модель построена в Bite Design, г.Ноттингем. В ней используются поверхности-афиши для фасадов зданий, оборудование улиц в виде 3D-объектов и несколько деревьев-афиш на заднем плане.
Итоги этой главы по построению афиш • Построение объектов-афиш являются одним из важных шагов в создании объектов, которые придают более реалистическое изображение модели, чем обычные 3D-объекты. • Афиши-аппликации лучше афиш-рисунков. Они могут иметь свои собственные покрытия и текстуру. • Помните, что объекты-афиши уже существуют в Artlantis и Piranesi, и Вы можете добавить изображения людей и деревьев с помощью Photoshop. Объекты рисунков ArchiCAD могут не восприниматься механизмами визуализации, разработанными сторонними фирмами, хотя аппликации, скорее всего, будут работать в других механизмах. Тем не менее, созданные Вами аппликации
112
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Глава 10. Окна и двери GDL В связи с большой сложностью окон и дверей мы не рекомендуем их строить с самого начала в GDL. Сначала сделайте окно без GDL, а затем настраивайте его с помощью этого языка. Мы также построим световой люк.
10.1. Окна и двери GDL Первое издание этой книги в 2000 г. содержало описание создания двух окон и одной двери. С тех пор окна и двери стали намного сложнее по многим причинам. В связи с этим данная глава направлена на то, чтобы помочь вам создавать эти объекты с помощью метода автоматического построения скриптов. Задача написания в GDL нового окна или двери очень сложная, поэтому мы не рассматриваем этот подход в нашей книге. Пользователи ожидают от окон и дверей намного больше функциональных возможностей, чем раньше. Те из них, которые имеются в стандартной библиотеке, следует тщательно проанализировать. Стандарты IFC (Industry Foundation Classes) устанавливают требования к окнам и дверям, которые намного сложнее существующих. Помимо обычного требования вырезать проемы в стене (самое простейшее требование) они должны иметь множество сложных переменных, таких как обшивка (облицовка), отделка, архитравы, решетки, створки, ставни, ручки, реалистические 2D-символы, которые зависят от масштаба, зазоры в проемах. Окна и двери должны знать покрытие и толщину стен, свое расположение по глубине стены, наличие четвертей. Окна и двери зависят от множества макросов, дающих необходимый уровень детализации их представления, например, ручки и ставни. Окна и двери должны иметь прекрасный интерфейс пользователя, с помощью которого можно выбирать необходимый вариант. Окна и двери могут иметь различные покрытия внутри и снаружи и должны обладать способностью использования текстуры для любой составляющей части. Выберите команду Новый объект и посмотрите на диалоговое окно GDL. Нажмите кнопку Выбрать подтип и выберите Проем стены > Окно. Обратите внимание на длинный список Введение в создание объектов
появившихся параметров. Это только начало, потребуются дополнительные параметры.
Правила для окон и дверей Посмотрите диалоговое окно GDL для одной из существующих стандартных дверей ArchiCAD. Вы увидите, насколько сложными стали параметры. Здесь же указывается основная ориентация двери относительно начала координат. Первое правило создания окна/двери заключается в том, что оно создается лежащим в плоскости XY. Начало координат располагается по центру подоконника, а плоскость нулевого уровня соответствует внешней стороне стены, причем внутренняя сторона направлена вверх. Двери в их начальном состоянии открываются наружу (вниз) и подвешены справа. Эти установки могут меняться путем поворота или зеркального отражения двери, если это позволяет скрипт. Второе правило заключается в правильном выборе подтипа при сохранении окна/двери из ArchiCAD. Для этого следует выбрать пиктограмму окна/двери в соответствующем диалоге сохранения. Если окно/дверь создается в GDL, то для определения объекта как окна/двери следует выбрать подтип Проем стены. При вызове такого объекта в ArchiCAD и его размещении в стене будет вырезан проем и объект правильно разместится в созданном проеме. При правильно выбранном подтипе окно будет расположено вертикально и вырежет проем в стене.
113
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
в стене. Если Вы не воспользовались этой командой, то будет создаваться проем по умолчанию размерами A по ширине и В по высоте. Этих трех правил вполне достаточно для нас. Посмотрите внимательно на параметры и постарайтесь представить себе, сколько правил действительно существует!
10.2. Возврат к ранее созданному окну Давайте вернемся к окну, которое было создано в главе 2.Его можно немного улучшить. Откройте этот объект в GDL и посмотрите на автоматически построенный 3D-скрипт. Мы вырезали призму таким образом, что верхняя, нижняя и боковые стороны окна являются различными секциями, поэтому для каждой из этих секций можно наложить текстуру с различной ориентацией. Мы сейчас это сделаем с использованием подпрограммы 999 из предыдущей главы. . Что касается параметров подтипа, то Вы можете заменить параметр PEN и все ссылки на покрытия в предложениях cPRISM_ (как выше). Удалите все предложения GLOB и, чтобы работала текстура, удалите все команды BODY -1.Вставьте предложение END и подпрограмму для текстуры.
Окна и двери могут предоставлять такое многообразие вариантов, что для них необходим многостраничный интерфейс пользователя. Третье правило заключается в том, что параметр ‘A’ указывает ширину, а параметр ‘B’ - высоту. Позже эту установку можно изменить, однако начинайте построение окна/двери именно с учетом этого соглашения. Если Вы пишете скрипт окна/двери, то с помощью команды WALLHOLE можно определить проем
114
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
легко, если окно было построено симметрично относительно основного начала координат. ! Имя : windo_2_omwac.gsm ! 3D-скрипт PEN gs_frame_pen MULXA/0.8775315255826 MULYB/1.249817627345 MULZZZYZX/ 0.16 ADDX 35.0009371729 ADDY -7.002659943499
Построим проем в стене, комбинируя размеры вверху, внизу, слева и справа. WALLHOLE 5, AC_HoleSideMaterial, -35.4397-ac_left_oversize, 7.0026-ac_lower_oversize,15, -34.5261+ac_right_oversize,7.0026-ac_lower_oversi ze,15, -34.5261+ac_right_oversize,8.2524+ac_upper_oversi ze,15, -35.4397-ac_left_oversize, 8.2524+ac_upper_oversize,15, -35.4397-ac_left_oversize, 7.0026-ac_lower_oversize,-1
Мы могли бы изменить окно таким образом, чтобы оно согласовалось с основным началом координат, однако в данном случае мы принимаем окно таким, как оно есть, чтобы показать, что даже в случае потери исходных частей, сделанных из перекрытия, Вы все же можете работать со скриптом. Проблемы возникают только в том случае, если Вы захотите написать скрипт, который вырезает отверстие в стене. Мы хотим воспользоваться командой WALLHOLE, явное использование которой позволяет установить дополнительные зазоры по периметру проема. Это можно сделать довольно
Введение в создание объектов
Мы добавили размеры зазоров из таблицы параметров. Если Вы не хотите этого, то не используйте команду WALLHOLE и спрячьте все параметры зазоров, нажав кнопу Спрятать для заголовка Зазоры. Уберите команды MUL и ADD в начале - в противном случае окно не будет правильно располагаться и растягиваться. Команда WALLHOLE аналогична предложению PRISM за исключением того, что вместо толщины используется параметр покрытия боковых поверхностей проема. WALLHOLE является очень мощной командой. Ее можно использовать несколько раз для создания сложных фигур проемов. Кроме того, сам контур проема может быть сложным. Для ее использования можно применить команды ROTx или ROTy, чтобы боковые поверхности проема были скошенными.
115
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
!!Стекло ADDZ 0.04 cPRISM_ gs_glass_mat, gs_glass_mat, gs_glass_mat, 12, gs_glass_thk, -35.39981876463, 8.160415405712, 15, -35.38268901762, 8.166515355645, 79, -35.2645803879, 8.193436940666, 79, -35.14463324159, 8.210381032486, 79, -35.02368892174, 8.217228780474, 79, -34.90259576587, 8.213932152599, 79, -34.78220315544, 8.200514272335, 79, -34.66335555813, 8.177069256472, 79, -34.60512108129, 8.160415405712, 15, -34.60512108129, 7.075050087223, 15, -35.39981876463, 7.075050087223, 15, -35.39981876463, 8.160415405712, -1 DEL 1
Отметим, что необходимо спрятать параметры, которые мы не предполагаем использовать. Если пишется параметрический скрипт, то можно воспользоваться толщиной коробки, различными деталями оконного переплета и всеми другими имеющимися параметрами. Если Вы оставите эти параметры в интерфейсе, но не задействуете их в скрипте, то наш бедный пользователь будет поставлен в тупик. !!Overhanging Sill ADDZ -0.06 cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat, 5, 0.06, -35.43970293569, 7.047220207262, 15, -34.56217141011, 7.047220207262, 15, -34.56217141011, 7.002659943499, 15, -35.43970293569, 7.002659943499, 15, -35.43970293569, 7.047220207262, -1 DEL 1 !!Horizontal Window head cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat, 14, 0.1, -34.56217141011, 8.160415405712, 15, -34.56217141011, 8.252477570844, 15, -35.43970293569, 8.252477570844, 15, -35.43970293569, 8.160415405712, 15, -35.39981876463, 8.160415405712, 15, -35.38268901762, 8.166515355645, 79, -35.2645803879, 8.193436940666, 79, -35.14463324159, 8.210381032486, 79, -35.02368892174, 8.217228780474, 79, -34.90259576587, 8.213932152599, 79, -34.78220315544, 8.200514272335, 79, -34.66335555813, 8.177069256472, 79, -34.60512108129, 8.160415405712, 15, -34.56217141011, 8.160415405712, -1
Извините за весь этот скрипт - это обычный автоматически построенный скрипт. Однако все же полезно на него взглянуть на предмет того, как вставляются параметры и как используется текстура. Вы можете попробовать вставить параметр ‘gs_frame_thk’ для указания толщины коробки, но при этом следует изменить 2D-скрипт. Однако он может
116
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
оказаться настолько сложным, что Вы будете сожалеть о том, что не сделали его параметрическим с самого начала. !!Horizontal Sill cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat, 7, 0.1, -35.43970293569, 7.002659943499, 15, -34.56217141011, 7.002659943499, 15, -34.56217141011, 7.075050087223, 15, -34.60512108129, 7.075050087223, 15, -35.39981876463, 7.075050087223, 15, -35.43970293569, 7.075050087223, 15, -35.43970293569, 7.002659943499, -1 GOSUB 999:!Texture !!Vertical Jambs cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat, 5, 0.1, -35.39981876463, 7.075050087223, 15, -35.39981876463, 8.160415405712, 15, -35.43970293569, 8.160415405712, 15, -35.43970293569, 7.075050087223, 15, -35.39981876463, 7.075050087223, -1 cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat, 5, 0.1, -34.56217141011, 7.075050087223, 15, -34.56217141011, 8.160415405712, 15, -34.60512108129, 8.160415405712, 15, -34.60413858807, 7.075050087223, 15, -34.56217141011, 7.075050087223, -1 ROTz 90 GOSUB 999:!Texture DEL 1 DEL TOP END:!======================== 999:!Texture BASE VERT 0,0,0 VERT 1,0,0 VERT 0,1,0 VERT 0,0,1 COOR 258,-1,-2,-3,-4 BODY -1 RETURN Введение в создание объектов
Слева производится управление наложением текстуры, а справа - нет. Жалко, что реализация Open GL в ArchiCAD 8.1 приводит к тому, что стекло исчезает.
10.3. Вы также можете создать световой люк Выбрав необходимый подтип, Вы можете создать световой люк. Они вырезают отверстия в крыше, производя правильную подрезку торцов создаваемого отверстия. Вы создаете световой люк, как и окна, в плоскости XY на нулевом уровне и затем поворачиваете его согласно углу наклона крыши. Для крыш нет эквивалентной команды WALLHOLE, поэтому создаются прямоугольные отверстия с различными стилями скоса. Давайте построим очень простой световой люк. Для создания полноценного параметрического светового люка следует выполнить большой объем работ, тем не менее, они строятся намного легче, чем окна и двери.
117
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
сторонами, то следует воспользоваться командой CUTPOLYA). CUTPOLY производит вырезание отверстия, оставляя определенное Вами покрытие - поэтому Вы можете предварительно указать покрытие коробки и получить подлинный внешний вид!
Здесь Вы можете увидеть, что световой люк вырезает отверстие в крыше (слева) лучше, чем обычное 'вертикальное' вырезание отверстия (справа). Если Вы хотите модифицировать форму отверстия, постройте задние части крыши, используя правильные толщину и покрытия. Сейчас мы воспользуемся несложным приемом. Световые люки обычно имеют деревянную коробку с металлическими поверхностями вверху и внизу. Причем дерево должно быть видно с нижней и внутренней стороны. Мы не можем этого получить с помощью CPRISM_ или любого другого предложения GDL. Поэтому мы создадим коробку, лежащую на полу. Определим размер поверхности остекления и вырежем отверстие под нее. Команда CUTPOLY является весьма полезной для этих целей, которая аналогична команде PRISM (если необходимо отверстие с криволинейными
118
!Простой световой люк, 3D-скрипт PEN gs_cont_pen ROTx ac_roofang !Glass MATERIAL gs_glass_mat ADDz fdep-gthk PRISM_ 5,gthk, -A/2+fwid,fwid,15, -A/2+fwid,B-fwid*2,15, A/2-fwid,B-fwid*2,15, A/2-fwid,fwid,15, -A/2+fwid,fwid,-1 DEL 1 !Frame MATERIAL gs_frame_mat CUTPOLY 5, -A/2+fwid,fwid, -A/2+fwid,B-fwid*2, A/2-fwid,B-fwid*2, A/2-fwid,fwid, -A/2+fwid,fwid !Actual frame cPRISM_ gs_upper_mat,gs_frame_mat,gs_upper_mat, 5,fdep, -A/2 ,0,15, -A/2 ,B,15, A/2 ,B,15, A/2 ,0,15, -A/2 ,0,-1 CUTEND DEL 1
После применения команды CUTPOLY или любой другой, которая производит вырезание, следует воспользоваться командой CUTEND, даже если она оказывается в конце 3D-скрипта. Мы также воспользуемся еще одним приемом. Данные о крыше приводятся в списке параметров о подтипе. На
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
приведенной ниже иллюстрации они обесцвечены. Имеются такие параметры, как угол наклона крыши, ее толщина, покрытие. Наш световой люк лежит на земле. Однако, применив команду ROTx ac_roofang, мы повернем люк согласно углу наклона крыши!
Смысл команды LOCK заключается в том, чтобы не вводить в заблуждение пользователя. Эти параметры нередактируемые; они эквивалентны глобальным переменным. Они указывают нам и световому люку, что именно происходит в модели. Их необходимо закрыть (то есть применить к ним команду LOCK), чтобы они были представлены в списке параметров в обесцвеченном виде. При этом пользователь будет знать, что такие параметры он не может изменить. Мы также устанавливаем здесь толщину стекла. 2D-скрипт может быть построен с помощью команды PROJECT2, но при этом следует нанести узловые точки. Размеры отверстия в плоскости крыши равны ‘А’ по ширине и ‘В’ по высоте. Поэтому для получения размеров в горизонтальной плоскости необходимо использовать простейшие тригонометрические формулы, использующие угол наклона крыши. !Очень простой световой люк !2D-скрипт HOTSPOT2 0,0 HOTSPOT2 -A/2,0 HOTSPOT2 A/2,0 HOTSPOT2 -A/2,B*COS(ac_roofang) HOTSPOT2 A/2,B*COS(ac_roofang) HOTSPOT2 0, B*COS(ac_roofang)/2 PROJECT2 3,270,2
10.4. Построение очень сложного окна
Приведение в порядок светового люка Необходимо кое-что добавить в основной скрипт и 2D-скрипт !Очень простой световой люк !Основной скрипт gthk=0.02 !Glass Thickness LOCK 'ac_roofang','ac_roofthk','ac_type', 'ac_upper_mat','ac_lower_mat','ac_side_mat'
Введение в создание объектов
Одна из причин, по которой Вы можете решиться создать необходимое Вам окно, обуславливается глубокой Вашей уверенностью, что ни одна из имеющихся библиотек не содержит его. Давайте построим окно, которое имеет контуры вдоль лестничного марша. Мало вероятно, чтобы такое окно было параметрическим относительно его размеров, если, конечно, Вам не надо создавать много таких окон, которые незначительно отличаются по размерам. В этом случае Вы все же можете настраивать размеры окна с помощью GDL, как мы это делали по отношению к столу в предыдущей главе. Мы построим наше окно с помощью небольших стен для различных его секций, а также воспользуемся перекрытием
119
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
для указания поверхности остекления. Мы построим его относительно основного начала координат, расположенного внизу справа в нашем примере. Простейший способ построения - это воспользоваться инструментом Штриховка для предварительного нанесения контура. Это можно сделать в окне разреза/фасада, затем следует скопировать полученный контур и вставить его на план этажа. Наконец, его надо будет переместить к началу координат.
Преимущество стен в построении секций окна заключается в том, что они могут иметь постоянную ширину и высоту, а также могут подходить под размеры секций при вычислении длины стен. При построении внешних секций окна постарайтесь, чтобы стены точно следовали вдоль контуров штриховки, касаясь сторон проема. При необходимости можно ‘настроить’ линию привязки стены. Сейчас Вы можете решить, следует ли расположить внутренние стойки и фрамуги по центру или с привязкой по сторонам. Также рекомендую нанести
120
небольшую решетку. В этом примере я установил ее в 10 мм (0.625”). При таком использовании стен текстура будет нанесена правильно, то есть вдоль сторон коробки. Создайте остекление окна, применяя волшебную палочку ко всей штриховке - не будет никакого вреда в том, что стекло будет доходить то самой стороны окна. Если Вы человек педантичный и решили построить каждую поверхность остекления отдельно, то с помощью волшебной палочки преобразуйте в перекрытие каждую заштрихованную область. Сделайте его из Бетона и толщиной в 300 мм. Дайте ему ID объекта ‘Wallhole’ в диалоге установки параметров. Когда позже Вы обратитесь к скрипту, то будете знать, что это не стекло, и сможете заменить его отверстием, вырезая контур стены.
Немодифицированное окно создает прямоугольник размером A x B. Задача заключается в том, чтобы проем стены располагался вдоль коробки окна. Для создания окна откройте его в 3D-окне, выберите вид сверху под углом 270°. Сохраните полученный объект как редактируемое окно. Теперь постройте на плане этажа новую Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
стену приблизительно 6 м (20’) в высоту и разместите в нем построенное окно. Полученное окно имеет размеры 6500x 4271 мм и может встраиваться в стены, высотой на два этажа. При встраивании нашего окна в стену оно вырезает прямоугольный проем размером АхВ. Мы можем поступить так, как это сделали для стола. Мы можем легко идентифицировать части окна, если все его коробки сделаны из стен, а поверхность остекления из перекрытия. Либо поверхность остекления, либо дополнительное перекрытие будут действовать в качестве вырезающего контура. ! Name : window_complex2.gsm ! Date : May 2004 ! Version : 8.10 ! Written by ArchiCAD, modified by DNC MULXA/ 6.5 MULYB/4.271227780756 MULZZZYZX/0.08 ADDX 3.25 BODY -1 MODEL SOLID RESOL 36 !!First Window Frame PEN gs_frame_pen ADD -6.5, 4, 0 ROTZ 284.0362434679 xWALL_{2} gs_frame_mat, gs_frame_mat, gs_frame_mat, gs_frame_mat, 0.08, 8.61659632663E-016, 2.061552812809, 2.022513992489, 0.03792787368157, -2.154149081658E-016, 3.330669073875E-016, 0.05, 0.05, 0.05, 0, 0, 0, 15, 15, 15, 15, 0, 0 DEL 2
После этого текста скрипта следует описание других секций коробки окна, но мы опускаем их. Вам надо только изменять покрытия. При желании Вы можете изменить толщину и глубину коробки, однако в данном случае лучше всего сделать это на исходном плане, сделать параметрическими только Введение в создание объектов
перекрытия и вырезать проем в стене. Давайте посмотрим на 3D-скрипт в самом конце... !!Typical Window frame section up the side elevation ADD -4.055, 3.686666666667, 0 ROTZ 270 xWALL_{2} gs_frame_mat, gs_frame_mat, gs_frame_mat, gs_frame_mat, 0.08, 0.04342585459107, 2.256574145409, 2.289907478742, 0.0767591879244, 7.976936617858E-018, 4.145122554509E-016, 0.05, 0.05, 0.05, 0, 0, 0, 15, 15, 15, 15, 0, 0 DEL 2 BODY -1 !!Window and hole PEN gs_glass_pen ADDZ 0.04 cPRISM_ gs_glass_mat, gs_glass_mat, gs_glass_mat, 24, 0.02, 0, 0, 15, -0.5, 2, 15, -1.5, 2, 15, -4.5, 4, 79, -4.561310905493, 4.035715090578, 79, -4.688716060937, 4.098215535982, 79, -4.820255333372, 4.151467757689, 79, -4.955258428817, 4.195200394584, 79, -5.093037402443, 4.229190595175, 79, -5.232890164181, 4.253265153189, 79, -5.374104056416, 4.267301390198, 79, -5.515959485522, 4.271227780756, 79, -5.657733588747, 4.265024316876, 79, -5.79870391776, 4.248722609987, 79, -5.938152120077, 4.222405729853, 79, -6.075367599624, 4.186207781261, 79, -6.209651137769, 4.14031322066, 79, -6.340318456382, 4.084955916211, 79, -6.46670370476, 4.020417956049, 79, -6.5, 4, 15,
121
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
-6, -5, -2, 0,
2, 2, 0, 0,
15, 15,
15, -1
Используемый здесь прием заключается в том, что мы имеем призму для остекления, которая точно подходит под требуемый проем окна - точка за точкой. Поэтому скопируйте этот текст и вставьте его для получения копии, как это показано ниже, в начале вставленного текста замените cPRISM_ на WALLHOLE . Вместо параметра толщины призмы используйте ‘AC_Holesidematerial’. Эти две команды должны следовать одна за другой. WALLHOLE 24, AC_Holesidematerial, 0, 0, 15, -0.5, 2, 15, -1.5, 2, 15, -4.5, 4, 79, -4.561310905493, 4.035715090578, -4.688716060937, 4.098215535982, -4.820255333372, 4.151467757689, -4.955258428817, 4.195200394584, -5.093037402443, 4.229190595175, -5.232890164181, 4.253265153189, -5.374104056416, 4.267301390198, -5.515959485522, 4.271227780756, -5.657733588747, 4.265024316876, -5.79870391776, 4.248722609987, -5.938152120077, 4.222405729853, -6.075367599624, 4.186207781261, -6.209651137769, 4.14031322066, -6.340318456382, 4.084955916211, -6.46670370476, 4.020417956049, -6.5, 4, 15, -6, 2, 15, -5, 2, 15, -2, 0, 15, 0, 0, -1 DEL 1 DEL TOP
122
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
Описанный выше метод нельзя применить в ArchiCAD до версии 8. В этих версиях команда вырезания проема в стене существует, но не может иметь сложную форму. В этом случае проемы сложной формы строятся с применением нескольких команд WALLHOLE. До применения WALLHOLE Вы можете выполнить команду поворота, чтобы торцы создаваемого проема оказались скошенными. Проем, создаваемый с помощью WALLHOLE, может быть больше по размеру, чем само окно. Получаемые при этом зазоры могут использоваться для вставки перемычки, подоконника, боковой панели.
Примечание относительно последующих версий ArchiCAD Описанный метод работы с WALLHOLE является встроенной в ArchiCAD 9 процедурой. Этот метод заключается в трассировке ската крыши, расположенной под углом в 0°, или перекрытия вдоль контура предполагаемого окна (возможно применением волшебной палочки к штриховке), стараясь при этом держать базовую линию крыши на базовой линии окна. Откройте диалоговое окно установки параметров крыши и запишите ‘Wallhole’ в качестве значения поля ID (или ‘Wallniche’ при создании ниши) и установите наклон ската крыши в 0°.
Объекты могут быть лучше окон Не забывайте, то окна используются для вырезания проемов в стене. Возможны случаи, когда Вы используете технические решения, которые ближе по своей идее к перегородкам, чем к окнам. Поэтому это будут объекты, а не окна. Они являются автономно стоящими, находящимися на перекрытии и не имеющими ни какого отношения к стенам. В этом случае Вы создаете их как ‘объекты‘, используя средники, фрамуги и коробки. Вы можете создавать их лежащими на плане этажа с использованием небольших стен для создания секций коробки и перекрытий для остекления.
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Итоги этой главы по изучению GDL
Представленное здесь решение в виде стеклянных стен основывается на системе Velfac 200. Затем Вы можете автоматически построить скрипт в 3D-виде с использованием вида сбоку параллельной проекции и с установленной камерой под углом в 90° и сохранить все это как редактируемый объект. Затем Вы можете добавить несколько параметров для покрытий. Если Вы создаете скрипт объекта полностью в GDL, то Вы строите его вертикально стоящим. Вы также можете воспользоваться макросами для коробок и створок. В принципе можно воспользоваться теми же макросами, которые были созданы для ‘окон‘. Система Velfac для создания окон-прототипов использует объекты. Тот же самый код с командой ROTx -90, WALLHOLE, с измененным подтипом и несколькими незначительными модификациями может также быть преобразован в подтип окна, вырезающий проем в стене.
Введение в создание объектов
• Имейте в виду, что окна и двери очень и очень сложные, чтобы полностью создавать их скрипты в GDL. • Вы можете решить поставленную задачу, используя метод 50/50: постройте окно без GDL и затем с помощью некоторых приемов сделайте так, чтобы они вырезали проемы в стене и имели параметры покрытий. • Создавать световые люки легко, однако они вырезают только прямоугольные отверстия. • Сейчас команда WALLHOLE позволяет создавать проемы со сложными контурами. Воспользуйтесь нашим изящным приемом с перекрытием для вырезания сложного контура. • Воспользуйтесь новым приемом с контуром крыши для выполнения такого же вырезания в последующих версиях. • Окна иногда становятся объектами, если они могут быть заданы автономно и не встраиваются в стены.
123
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Глава 11. Дополнительные возможности GDL GDL предоставляет намного больше возможностей, чем те, которые мы обсудили до сих пор. В этой главе мы кратко обсудим эти дополнительные возможности, из которых наиболее важными являются циклы. Кроме того, мы рассмотрим графические узловые точки и команды геометрических операций над объемными телами, которые также существенно расширяют возможности GDL.
11.1. Дополнительные возможности GDL Эта книга представляет собой начальное учебное пособие по GDL, путеводитель по простейшим возможностям языка. Если Ваш интерес к GDL возрастет, то можно обратиться к другим книгам по GDL, которые дают более глубокие знания. Наилучший способ изучения GDL - решение практических задач, которые являются полезными для Вашей будущей работы и которые позволяют освоить методы и приемы работы с GDL.
GDL включает в себя четыре области знаний • Прежде всего нам следует проанализировать пространственную природу того объекта, который необходимо построить. Проанализируйте, в какой мере он может быть построен с помощью простых кубиков, параллелепипедов или цилиндров, и в какой мере для его построения следует привлечь более сложные команды, например, PRISM, REVOLVE и TUBE. Если Вы обнаружите, что необходимо прибегнуть к одной из этих сложных команд, не расстраивайтесь и не сдавайтесь. Считайте, что это удобный случай более глубокого освоения GDL. • Сам GDL. Синтаксис каждой команды, какую команду в каких случаях использовать, как управлять многоугольниками, как определить стиль текста и покрытия - многие, многое другое. По мере роста Вашего опыта Вы становитесь все более квалифицированным специалистом в создании 2D- и 3D-объектов. • Язык программирования GDL. В этом учебном пособии он не рассматривается детально. Тем не менее, в этой книге достаточно материала по написанию в GDL больших и
124
сложных скриптов, использующих циклы и подпрограммы. GDL основывается на разработанном в 70-х годах языке программирования BASIC, который широко использовался на компьютерах AppleII, Commodore Pet и Tandy TRS-80 в начале 80-х годов и который был забыт в настоящее время. GDL воскресил этот язык! GDL может читать и записывать текстовые файлы, позволяет производить сложные вычисления, например, вычисление конструкций или предсказание точек расположения контуров поверхности в 3D. Различные способы написания скриптов свидетельствуют, что они действительно могут быть сложными. Графические узловые точки существенно расширяют возможности GDL. • GDL может реагировать на условия, описываемые в основной модели ArchiCAD. Объекты могут знать текущий масштаб чертежа, номера перьев чертежа по умолчанию и перья фона. Окна и двери могут знать толщину и покрытия текущей стены. Зная свое расположение в пространстве и расположение текущей камеры, объекты знают, как далеко от них расположена камера и в каком направлении. Поэтому объект-афиша может повернуться к камере своим "лицом", или сложный 3D-объект может упростить свой внешний вид, если он расположен далеко от камеры. Все это достигается благодаря возможности использовать глобальные переменные, которые существуют в ArchiCAD. Вы могли познакомиться с предложениями GLOB в автоматически построенном скрипте в главе 2. GLOB_SCALE - это текущий масштаб чертежа. GLOB_NORTH - это угол по отношению к текущему направлению на север.
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Книга GDL Cookbook рассматривает детально все эти вопросы и содержит практические примеры, облегчающие освоение GDL.
Язык программирования GDL Вы могли уже убедиться, что можно использовать GDL, не будучи программистом. Если Вы записываете несколько команд GDL, поворачиваете или перемещаете курсор, используете предложение IF для проверки условий, то это значит, что Вы программируете. По сути, программирование это тот вид деятельности, которым занимаются все живые существа: этим занимаются муравьи, присматривая за своими яйцами, этим занимаются белки, запасая пищу на зиму, этим занимаются львы, охотясь за животными, этим занимаются дети, играя с игрушками. Взрослые люди занимаются программированием, когда садятся за руль и едут на работу или используют свои мобильные телефоны. Программирование означает организацию последовательности действий с проверкой условий для определения, какое следующее действие следует предпринять. Программирование также предполагает выполнение повторяющихся действий, например, в реальной жизни Вы можете расположить на полках сотни книг, принимая при этом решение, как их упорядочить, то ли по ISBN, то ли по размеру, то ли по названиям, то ли по автору. Для более детального ознакомления с GDL Вам следует познакомиться с циклами.
11.2. Циклы - FOR... NEXT Машина никогда не устает, выполняя повторяющуюся работу. В объектах GDL Вы можете иметь много спиц в колесе, много полок в шкафу, много стоек в перилах, много ступеней в лестнице. Если мы можем сказать GDL, сколько чего-то нужно и на каком расстоянии, то всю оставшуюся работу может выполнить сам GDL.
Введение в создание объектов
Цикл FOR... NEXT Мы можем представлять циклы с помощью команды FOR... NEXT. Мы можем использовать FOR... NEXT несколькими способами, однако, наиболее общий - это подсчет количества чего-то. Давайте рассмотри три простых примера.
Цикл с подсчетом чисел Мы хотим построить ограждение возле беговой дорожки. Для этого надо создать 6 стоек высотой в 1 метр на расстоянии 0.6 метра друг от друга и накрыть их длинным поручнем. Пусть у нас имеется воображаемый счетчик под именем ‘k’, который мы будем увеличивать на 1 всякий раз, когда программа проходит очередной цикл. Итак, начальное значение счетчика 1. Это означает, что будет создаваться первая стойка. Стойка строится и происходит перемещение в позицию следующей стойки. Затем встречается команда NEXT k. Происходит возврат к строке FOR, увеличивается значение ‘k’ и строится следующая стойка. В конце концов, вся поставленная задача выполнена, NEXT k распознает, что следует завершить свою работу и после этого продолжается выполнение программы. Мы используем DEL 6 для возврата в начало координат. !Long fence using numbers RESOL 10 MATERIAL 18: PEN 1 pspac=0.6 !Pole Spacing !Uprights FOR k=1 TO 6 STEP 1 CYLIND 1.0, 0.05 ADDx pspac NEXT k DEL 6 !Top rail ADD -0.05,0,1.0 ROTy 90 CYLIND 5*(pspac) +0.1,0.05 DEL 2 !Mid rail ADD 0,0,0.6 ROTy 90 CYLIND 5*(pspac),0.03
125
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
DEL 2
Вверху, Open GL дает более сглаженное представление не зависимо от того, что задано по команде RESOL. Обратите внимание, как строится верхний поручень. Мы сделали его чуть длиннее (на величину диаметра) по сравнению с расстоянием между стойками. Это дает более естественный вид в месте соединения с конечными стойками. Здесь мы воспользовались преимуществами механизма визуализации Z-buffer. Цилиндры стоек естественным образом соединяются с поручнем. Механизмы визуализации Open GL и ArchiCAD приводят к сглаживанию мест соединения. Мы можем усовершенствовать выполнение цикла с помощью двух небольших изменений. В предыдущем примере цикла все правильно, но нам приходится использовать команду DEL после завершения выполнения команды FOR. Кроме того, в этом примере мы также указываем значение шага цикла. В нашем новом примере DEL находится в самом цикле, поэтому нет необходимости заботиться о возврате курсора в начало координат после выполнения команды FOR.
126
FOR k=1 TO 6 ADDX pspac*(k-1) CYLIND 1.0,0.05 DEL 1 NEXT k
Сейчас команда ADDX расположена перед выполнением построения цилиндра. При первом вхождении в цикл значение (k-1) равно нулю, поэтому при умножении ‘pspac’ на ноль мы получаем нулевое значение расстояния. Поэтому происходит построение первой стойки. После этого DEL возвращает курсор в начало координат. Когда ‘k’ равно 2, расстояние становится равным ‘pspac*1’, поэтому строится вторая стойка и после этого опять происходит возврат в начало координат по команде DEL. Обратите внимание, что в первом примере мы явно указали шаг изменения значения k, а именно, 1. В принципе, если шаг изменения переменной равен 1, то фразу STEP можно опускать. Если же шаг отличается от 1, то его обязательно надо указывать. В противном случае GDL примет по умолчанию шаг 1.
Цикл по расстоянию - его оптимизация! Следующий способ написания циклов заключается в том, что не известно количество выполняемых циклов, но известно расстояние. Это тот случай, когда Вы говорите: "Начните построение с нулевой точки, продвиньтесь на расстояние ‘dist’ (которое в начальный момент равно нулю) и постройте стойку. Затем вернитесь в начало. Затем увеличьте ‘dist’ на величину ‘pspac’, переместитесь на расстояние ‘dist’ (которое сейчас уже имеет приращение), постройте стойку и вернитесь в начало. Повторяйте эту процедуру до тех пор, пока не охватите все необходимое расстояние". В этом случае необходимо явным образом задавать шаг. Давайте сделаем ограждение длиной в 3.3 м (11’-0”). !Loop by distance - A=3.3 metres RESOL 12 pspac=0.6 !Pole spacing !Uprights FOR dist=0 TO A STEP pspac Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
ADDx dist CYLIND 1.0,0.05 DEL 1 NEXT dist !Top rail ADD -0.05,0,1.0 ROTy 90 CYLIND A+0.1,0.05 DEL 2 !Mid rail ADD 0,0,0.6 ROTy 90 CYLIND A,0.03 DEL 2
Изящный способ вычисления расстояния Вот где GDL становится действительно изящным. Мы может заставить GDL автоматически вычислять расстояние. Очевидно, что 3.3 м не делится нацело на 0.6 м. Поэтому появляется выступ. И это будет до тех пор, пока длина не будет кратной 0.6 м. Нам нужна процедура, которая бы производила необходимое вычисление. Вы либо должны так ограничить длину, чтобы она делилась нацело на ‘pspac’, либо оптимальным образом изменить расстояние между стойками. !Loop by Distance with Calculation pspac=0.6 !Pole spacing optimum numbay=INT(0.5+ A/pspac) !Number of Bays numpol=numbay+1 !Actual number of poles pspac =A/numbay !Corrected value ‘pspac’ !Uprights FOR dist=0 TO A STEP pspac ADDx dist CYLIND 1.0,0.05 DEL 1 NEXT dist !Do the rails the same as before
В этом примере мы сначала вычисляет количество пролетов, деля ‘A’ на ‘pspac’. Функция INT(p) округляет полученный результат до целого числа. Добавление 0.5 дает возможность правильно округлить вверх или вниз. После получения количество пролетов мы вычисляем количество стоек и фактическое расстояние между стойками ‘pspac’. Независимо от того, какие исходные данные устанавливаются, стойки всегда будут корректно расположены относительно заданного поручня. Более того, теперь поручень может быть произвольной длины.
Цикл по величине угла
Вверху имеется выступ, внизу все хорошо.
Введение в создание объектов
Имеется много случаев, когда объекты обладают оригинальной геометрической формой, порожденной окружностью. Далее приводится пример той же задачи с ограждением, однако поручень имеет дугообразную форму. Мы используем цикл FOR... NEXT для размещения стоек в интервале 15°.
127
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Здесь мы использует две новых команды -ELBOW и TOLER. Команда ELBOW подобна команде построения цилиндра, однако это криволинейный цилиндр, имеющий заданный радиус кривизны при заданном угле разворота. ELBOW curve radius, alpha angle, tube radius Так как эта фигура строится вверх, то предварительно следует воспользоваться командой ROTX -90 и затем поднять ее на высоту стоек.
Управление кривизной Мы хотим управлять количеством многоугольников в модели, так как в противном случае визуализация будет проходить слишком медленно. Open GL может сглаживать криволинейные поверхности, поэтому не обязательно иметь много многоугольников для достижения сглаживающих эффектов. RESOL обозначает "аппроксимация криволинейных поверхностей" и устанавливает, сколькими многоугольниками будет представляться кривая линия. Например, RESOL 10 обозначает, что окружности цилиндрических поверхностей представляются правильными 10-угольниками. Если Вы используете такую возможность для криволинейного поручня, то он примет многоугольную форму. Поэтому Вам следует воспользоваться более совершенной командой - TOLER. Бедная старая команда RESOL слишком простая для сложных объектов. В объекте, построенном по команде ELBOW , имеется две кривых, основная кривая и кривая цилиндрической поверхности (трубы).Если у нас большое разрешение (нам необходимо, по крайней мере, значение RESOL 36), то поручень выглядит красиво. Однако, если у нас имеется много поручней, то цилиндрические поверхности будут иметь слишком много многоугольников и наш компьютер может очень долго строить все эти поверхности. TOLER 0.005. Эта команда устанавливает погрешность аппроксимации в 5 мм (3/16”). Если Вы воспользуетесь командой TOLER dimension, то кривизна будет контролироваться в маленьких и больших объемных фигурах. TOLER обозначает "погрешность аппроксимации", поэтому в качестве значения параметра Вы
128
должны указать какую-то величину погрешности. При трассировке кривой GDL вычисляет разницу между кривой и касательной к ней. Поэтому фигуры с небольшим диаметром окружности будут представляться небольшим количеством плоских поверхностей (которые сглаживаются механизмом Open GL), а при увеличении радиуса количество аппроксимирующих плоскостей будет также увеличиваться, что способствует решению проблемы сглаживания. Это очень полезная команда.
!Circular racecourse rail !Loop by angle TOLER 0.005 crad=3.0 !Curve Radius angl=120 !Sweep angle ovra=360*0.05/(2*PI*crad) !Overhang angle !Uprights FOR ang=0 TO angl STEP 15 ROTz ang ADDx crad CYLIND 1.0,0.05 DEL 2 NEXT ang !Handrail ROTz -ovra ADD crad, 0 , 1.0 ROTx -90 ROTz 180 ELBOW crad, angl+ovra*2, 0.05 DEL 4
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Находясь в центре дуги, мы с помощью цикла FOR NEXT на каждом шаге перемещаемся к дуге окружности и строим стойку. Перед построением следующей стойки делам небольшой поворот. Используя DEL внутри цикла, мы получаем "аккуратный" цикл. Находясь в центре дуги окружности, мы строим поручень. Для этого мы немного поворачиваем поручень с помощью команды ROTZ, перемещаемся к первой стойке с помощью команды ADD, кладем на бок фигуру, которая будет строиться по команде ELBOW, и строим поручень (с немного увеличенным углом амплитуды). В данном случае нам пришлось воспользоваться небольшим приемом, чтобы место соединения с конечными стойками выглядело красиво. Мы вычисляем внутренний параметр ‘ovra’ (угол выступа). При этом становится легко получить хороший стык с конечными стойками посредством незначительного поворота и удлинения поручня.
Введение в создание объектов
Это параметрическая модель Лондонского колеса тысячелетия (Маркс Барфилдс, Лондон, 2000) позволяет моделировать колесо так, как оно показано на рисунке, или в любой другой конфигурации. Все трубы, спицы и кабины построены с применением циклов FOR... NEXT по отношению к угловым размерам. Если Вы хотите сделать так, чтобы круговой поручень был самоуправляемым, как, например, второй вариант прямолинейного поручня или колесо тысячелетия, то следует разделить окружность на оптимальное расстояние и затем вычислить наилучший угол шага цикла.
Другие возможности по построению циклов Имеются другие команды организации циклов. • DO... WHILE: Выполняется тело цикла до тех пор, пока истинно условие, например, пока некоторое угловая или линейная величина меньше или равна 0. • WHILE condition DO... ENDWHILE: В принципе делает то же самое, что и предыдущая команда. • REPEAT... UNTIL: Выполняется тело цикла пока не будет выполнено условие, например, пока линейная или угловая величине не будет меньше или равна нулю или пока используются числа в буфере памяти.
129
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Цикл FOR... NEXT может удовлетворить почти что все Ваши требования. Большинство циклов базируются на счетчиках или на принципе наращивания линейной или угловой величины до определенного значения. Вы должны сами решить, в каких ситуациях для вас лучше всего использовать REPEAT, а в каких - DO.
11.3. Графические узловые точки Графические узловые точки позволяют Вам с поражающей легкостью манипулировать объектами в 2D и 3D с помощью щелчков - объекты становятся что-то вроде управляемыми механизмами. Можно проанализировать содержимое шкафа, открыв его двери и выдвинув ящики. Теперь Вы больше не ограничены "растягивающимся параллелепипедом" размерами A, B и zzyzx. После того, как Вы осознаете силу графических узловых точек, Вам больше не нужно будет использовать параллелепипед ‘ABzzyzx’. Когда Вы растягиваете объект с помощью параллелепипеда, то в процессе его изменения Вы не видите ничего, кроме самого параллелепипеда. При изменении размера объекта с помощью графических узловых точек Вы видите, как изменяется сам объект и как изменяются значения параметров его размеров. Эта стальная труба может растягиваться, скручиваться и поворачиваться в 3D. В процессе манипуляций с этой трубой Вы видите, как изменяются ее числовые значения. Графические узловые точки могут управлять линейными и угловыми величинами. Складывается впечатление, что с помощью этих двух видов величин можно манипулировать большинством объектов. Если Вы сможете придумать другой вид манипулирования объектами, поделитесь этим с Graphisoft. Вы можете использовать графические узловые точки в 2D и 3D.Общее правило использования графических узловых точек следующее: Используйте их в 2D, если они управляют значениями X и Y; если же они управляют высотой или производят скручивание, то используйте их в 3D. Еще одно
130
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
правило - записывайте все процедуры, относящиеся к графическим узловым точкам, перед основным текстом 2Dили 3D-скрипта. Все дело в том, что параметры, получающиеся в результате манипулирования узловой точкой, без промедления передаются в оставшуюся часть скрипта. Мы не можем уделить достаточно внимания для глубокого изучения возможностей графических узловых точек. Однако мы представим вам в общих чертах их возможности и приведем простой пример. Графические узловые точки хорошо изложены в справке ArchiCAD и в "GDL Cookbook" - о них можно рассказать намного больше того, что имеется в нашей книге.
Построим графические узловые точки Можно легко построить графические узловые точки, которые базируются на линейных размерах, однако с угловыми размерами дело обстоит намного сложнее. Давайте построим одну графическую узловую точку с линейным размером. Мы строили этот простой растягивающийся поручень раньше.
!Straight Handrail - 2D Script HOTSPOT2 0,0 !Base HOTSPOT2 A,0 !Move PROJECT2 3,270,1
которая определяет вектор перемещения (код=3). Это может быть в любом месте за точкой основания (в отрицательном направлении). Графическим узловым точкам также необходим уникальный номер ID (для поддержания ассоциативных размеров). Они также должны знать, какой параметр Вы будете изменять. Итак, замените приведенную выше процедуру определения узловой точки на следующую: !Straight Handrail - 2D Script HOTSPOT2 0,0, 1001, A,1 !Base HOTSPOT2 A,0, 1002, A,2 !Move HOTSPOT2 -1,0, 1003, A,3 !Vector PROJECT2 3,270,1
11.4. Операции над объемными элементами В примере с прямолинейным поручнем мы проверили применение механизма Z-buffer, при использовании которого пересекающиеся 3D-объекты качественно вычерчиваются в изображениях с удалением невидимых линий и с раскраской и тенями. Если Вам нужны чертежи с хорошими линиями, то Вам следует найти способ улучшить представление чертежей. Вы хотели бы иметь правильное представление линий в каркасном режиме визуализации. Для этого Вам следует воспользоваться операциями над объемными элементами(ООЭ). Они позволят произвести правильное высечение стоек и поручня в месте их стыка.
Используя описанные выше узловые точки, Вы можете безопасно воспользоваться параллелепипедом ‘ABzzyzx’. Давайте вместо этого попытаемся использовать метод графических узловых точек. Их синтаксис следующий: HOTSPOT x,y,z, uniqueID, parameter, code !3D HOTSPOT2 x,y, uniqueID, parameter, code !2D
Для графических узловых точек, оперирующих линейными размерами, Вы определяете расположение начальной точки основания (код=1), точку перемещения и третью позицию, Введение в создание объектов
Мы сделаем небольшое путешествие в эту очень важную технологию. Эта технология позволяет улучшить качество
131
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
3D-элементов путем выполнения операций добавления, вычитания и пересечения. Чтобы глубоко познакомиться с этой технологией Вам следует обратиться к другим книгам по GDL. Мы же сейчас постараемся улучшить представление ограждения в каркасном изображении. !Straight handrail with improved wireline view RESOL 12 MATERIAL 18: PEN 1 pspac=0.6 !Pole Spacing GROUP 'uprights' !Uprights FOR k=1 TO 6 STEP 1 CYLIND 1.0, 0.05 ADDx pspac NEXT k DEL 6 ENDGROUP GROUP 'rails' !Top rail ADD -0.05,0,1.0 ROTy 90 CYLIND 5*(pspac) +0.1,0.05 DEL 2 !Mid rail ADD 0,0,0.6 ROTy 90 CYLIND 5*(pspac),0.03 DEL 2 ENDGROUP handrail=ADDGROUP('uprights','rails') PLACEGROUP handrail
!Clear out the memory KILLGROUP handrail KILLGROUP 'uprights' KILLGROUP 'rails' В этой процедуре мы определили две группы. Мы создали новую группу с помощью предложения ADDGROUP и затем разместили ее с помощью предложения PLACEGROUP. Предложение KILLGROUP очищает память и позволяет повторно использовать эти имена групп. Эти команды действительно нужны только в очень больших скриптах.
132
Наиболее важной командой в операциях над объемными телами является вычитание, например, когда Вы хотите вычесть пространственную криволинейную фигуру из другого тела, что Вы не можете сделать без использования операций этой категории.
Сзади представлен цилиндр со сферами, которые необходимо вычесть из цилиндра. На переднем плане показан результат такого вычитания.
Операции над стулом Мы можем улучшить представление в каркасном виде ранее созданного нами стула с применением функции ADDGROUP. При этом улучшается внешний вид даже в изображении с удалением невидимых линий, так как улучшается представление мест пересечения круглых частей стула.
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
ENDGROUP chair=ADDGROUP('legs','seat') chair=ADDGROUP( chair,'back') chair=ADDGROUP( chair,'braces') chair=ADDGROUP( chair,'arms') PLACEGROUP chair KILLGROUP chair END:!____________________________
В скрипте нашего исходного стула мы имели несколько предложений IF в исполнительной части скрипта, типа ‘IF bakon THEN’ и ‘IF arms THEN’. Переместите все эти команды в подпрограммы, чтобы очистить исполнительный скрипт. Обратите внимание, как к значению ‘chair’ можно последовательно добавлять все новые и новые группы.
Наш исходный стул слева выглядит "грязным".Операции над объемными элементами приводят это изображение в порядок! Это относится даже к подкомпонентам, например, к соединениям распорок относительно друг к другу. Мы не можем избавиться от линий в концах конуса. Для этого надо использовать REVOLVE вместо CONE. !3D-скрипт стула с операциями над объемными !элементами !to improve the look of the joints PEN cont_pen TOLER 0.001 GROUP 'legs' GOSUB 100:!All the legs ENDGROUP GROUP 'seat' GOSUB 200:!Seat and upholstery ENDGROUP GROUP 'back' GOSUB 300:!Back ENDGROUP GROUP 'braces' GOSUB 400:!Braces ENDGROUP GROUP 'arms' GOSUB 500:!Arms Введение в создание объектов
Небольшой недостаток операций над объемными телами Предупреждаю, что при выполнении этих операций Вы можете потерять наложение специальной текстуры. При выполнении команды ADDGROUP происходит непредвиденное применение текстуры. В связи с этим Вы должны выбирать между наилучшим способом 3D-представления с использованием Open GL и наилучшим способом представления в каркасном виде. . Если такой выбор действительно является важным, то Вы можете предоставить его с помощью всплывающего меню. Вы можете воспользоваться предложением IF для выполнения того или иного варианта исполнительно скрипта.
11.5. Определение текста в 2D Давайте закончим нашу книгу рассмотрением еще одного метода, который помогает работать в 2D. Если в 2D-объкте необходимы текстовые надписи, то Вы не можете непосредственно воспользоваться командой TEXT2. Прежде всего следует указать, какими свойствами обладает текст: шрифт, размер, стиль, перо и т.д. Все это в совокупности называется STYLE. Предположим, что Вы хотите подписать стул. Мы можем воспользоваться строковыми значениями из списка значений,
133
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
содержащего тип стула. Создайте несколько параметров: ‘font’ для имени шрифта и ‘fsiz’ для размера шрифта. ‘Fsiz’ должен иметь тип вещественного числа.
существенно расширились в GDL, хотя для достижения эквивалентных вариантов представления следует быть особенно внимательным при кодировании TEXT2. Если Вы хотите записать в GDL обогащенный текст (Rich Text), то можете воспользоваться командами STYLE{2}, PARAGRAPH, TEXTBLOCK, RICHTEXT2, RICHTEXT и REQUEST ('TEXTBLOCK_INFO'). Их обсуждение выходит за рамки нашей скромной книги.
11.6. Другие возможности Обратитесь к Справочному пособию по GDL и меню Справка.
Здесь стиль определяется в скрипте. 1,0 обозначает, что текст выравнивается влево и является обычным (то есть не жирным и не курсивным). Обратитесь к справке ArchiCAD или к книге GDL Cookbook для более подробного ознакомления с определением стилей. Чтобы текст мог распознать стиль, следует использовать команду SET STYLE. Предложение TEXT2 включает точку расположения текста (как раз под левой ножкой стула) и собственно текстовую строку. Обычно такая строка заключается в кавычки, или может указываться в качестве параметра из списка значений.
В ArchiCAD 9 введено понятие Rich Text В ArchiCAD 9 существенно улучшено представление текстовых элементов на плане этажа, в разрезе/фасаде и в окне детали. Теперь он может быть жирным, курсивным, иметь различный цвет. Возможности по написанию текста также
134
Этот учебник для начинающих был написан в надежде, что по мере того, как Вы более уверенно начнете себя чувствовать в GDL, у Вас будет расти желание погрузиться в изучение Справочного пособия по GDL. Мы старались, чтобы наши объяснения не были сухими. В этой книге много материала, который может занять заинтересовать новичка. В GDL намного больше возможностей по сравнению с теми, которые освещены в этой книге.Их невозможно охватить в одном учебнике. Вы можете найти другие книги для дальнейшего чтения или пройти учебный курс по GDL. Мы дали Вам некоторые основы по GDL и Вы можете теперь приступить к более глубокому его изучению. В этом Вам может помочь книга GDL Cookbook.
Возможности GDL, которые не охвачены в этой книге: • Более сложные всплывающие меню с числами и рисунками. • Плоские 3D-объекты GDL. • Более развитые 2D-символы, использующие FRAGMENT2, которые позволяют комбинировать чертежные символы с 2D-скриптами. • Применение ломаных кривых в качестве контуров команд PRISM, EXTRUDE, REVOLVE и других.
Введение в создание объектов
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
• Использование маскирования для управления внешним видом поверхностей 3D-объектов при построении реалистических фотоизображений. • Использование CUTPLANE, CUTFORM и CUTPOLY для вырезания и просверливания объемных фигур с целью создания более сложных 3D-элементов. • Макросы - вызов других объектов библиотеки (например, кранов или ручек двери). • Объекты-афиши - имеется намного больше возможностей по сравнению с теми, которые обсуждены в книге! • Создание объектов с управляемыми источниками света. • Двери, окна, световые люки, мансардные окна - объекты этих подтипов нуждаются в более детальном рассмотрении. • Криволинейные и угловые окна. • Использование тригонометрии для вычисления траектории труб и ребер, проходящих через криволинейные и параболические траектории. • Сложные трубчатые решетчатые конструкции. • Создание базирующихся на слоях криволинейных поверхностей с помощью COONS или MASS. • Математика окружностей, парабол, эллипсов. • Чтение и воспроизведение системной даты, времени, имени проекта и много другого с помощью команды REQUEST. • Определение покрытий, типов линий, образцов штриховки. • Определение текстуры и ее ориентация. • Определение типов линий и образцов штриховки для улучшенного 2D-представления. • Определение стилей текста, включая автоматическое изменение размеров, установку стилей и расположение текста для объектов, содержащих выносные надписи. • Запоминание чисел в памяти и использование их в последующем (массивы и команды PUT, GET). • Команды над объемными элементами, когда части модели комбинируются друг с другом и отсекают друг друга.
Введение в создание объектов
• Графические узловые точки, предоставляющие полный набор манипулирования объектами, включая вытягивание/сжимание и скручивание/поворот. • Массивы параметров и динамические массивы. • Построение графического интерфейса пользователя, который заменяет обычное параметрическое окно и предоставляет более профессиональный внешний вид объекту.. • Возможности по анимационной настройке, когда объект изменяет свою форму или расположение согласно номеру кадра в анимации. • Получение информации о расположении камеры. • Получение информации об этаже, на котором располагается объект. • Чтение и запись в текстовый файл. • Использование меню Специальное. • Обогащенный текст (Rich Text) в 2D и 3D.
11.7. Советы начинающим в GDL Graphisoft спрашивает: (Graphisoft Newsletter, сентябрь 2000) Что самое важное в том, что Вы рассказываете о создании объектов слушателям Ваших лекций по GDL? Ответ Давида Никольсона: Самое главное... Не пугайтесь!! Это не так трудно, как Вы ожидаете, и когда выдается сообщение об ошибке, посмотрите на скрипт; правильное ли имя параметра, к которому имеется обращение? Правильно ли расставлены запятые? Попробуйте удалить часть скрипта, чтобы посмотреть, будет ли правильно работать остальная часть. В самом GDL имеется несколько ошибок. На простом уровне использования GDL ошибок нет. Они проявляют себя при использовании сложных логических конструкций.
135
ЧАСТЬ II. РУКОВОДСТВО ПО GDL ДЛЯ НАЧИНАЮЩИХ
Во-вторых... Всегда имейте под рукой карандаш и бумагу Если Вы не сможете нарисовать на бумаге, то не сможете построить в GDL. Процесс рисования на бумаге дает Вам логический путь фактического построения в GDL. Для многих команд, таких как PRISM и REVOLVE, половина работы делается за листом бумаги. Рисуя, указывайте начало координат и нумеруйте точки вдоль создаваемого профиля. В-третьих... Думайте о параметрах Всегда старайтесь работать и думать параметрически, а не числами. Разработайте свой собственный программистский жаргон для имен параметров, например, 'wid', 'dep', 'len', 'hit', 'thik', и используйте их для параметрического представления объектов. В-четвертых... Заимствуйте из ArchiCAD Иногда объекты настолько сложные, что их непосредственное написание в GDL становится непомерно тяжелой задачей. В этом случае сделайте набросок необходимого объекта на плане этажа ArchiCAD и затем перетащите его в окно скрипта. Затем Вы можете сделать полученный скрипт параметрическим. В-пятых... Используйте структурный GDL Когда размер скрипта превышает одну страницу, преобразуйте его в совокупность подпрограмм таким образом, чтобы каждая часть модели выступала в качестве самостоятельного объекта. Это также уменьшает необходимость повторного ввода повторяющихся текстов скриптов и облегчает поиск ошибок.
136
11.8. Изменения в ArchiCAD 9 Большая часть возможностей языка GDL, описанных в этой книге, поддерживаются, начиная с версии ArchiCAD 6.5. В этом разделе мы приводим список изменений, сделанных в ArchiCAD 9, на которые мы ссылались в этой книге. Имеется также множество других изменений, анализ которых выходит за рамки этой книги. • Выбор объектов. Объект легче выбрать, если его 2D-символ имеет заштрихованную область. Объекты, содержащие скрипты, могут иметь "чувствительные" линии его символа. При написании скрипта рекомендуем включить команды POLY2 и затем предложения LINE2 и ARC2 с HOTLINE2 и HOTARC2 там, где это возможно и необходимо. • Именование объектов. Сейчас можно найти объекты по имени. В связи с этим обратите внимание на то, чтобы объекты имели осмысленные имена. • Подтипы. Они были введены в AC8. В связи с широким распространением стандартов IFC и использованием подтипов в интерактивном каталоге рекомендуем правильно устанавливать подтипы для объектов. • Rich Text. Теперь Вы можете существенно улучшать внешний вид Ваших надписей. • Графические узловые точки. Теперь они имеют управляемый цвет пера (глобальный, а не индивидуальный).
Введение в создание объектов
Предметный указатель
Предметный указатель Цифры 2D-символ 25, 26, 28, 33, 48, 57, 88 2D-скрипт 48 2D-узловая точка 58 3D 124 ~ вид 50 3D Cafe 12 3D-вид 48 3D-курсор 50 3DS 12 3D-скрипт 48, 81 3NF 12
A Abvent 111 AC_Holesidematerial 122 ADD 50 ADD2 51 ADDGROUP 132, 133 Adobe Photoshop 106 ADT 17 ARC2 59, 78, 136 ArchiCAD 9 11, 59, 122, 134, 136 ArchiCAD University 104 ArchiCAD-Talk 104 ArchiFacade 102, 111 ArchiFM 59, 84 ArchiForma 30, 36 Archiforma 12 ArchiPaint 102 ArchiRadar 11 ArchiTerra 8 Architerra 102 Введение в создание объектов
Arkiklub 11 Artlantis 102, 112 AutoCAD 12, 17
B BASIC 17, 124 BEAM 80 Bite Design 112 BLOCK 49, 54, 59 BODY -1 82, 98, 114 Boolean 61, 62, 65, 88, 109 BPRISM_ 70, 73, 77
C CALL 81, 96 Cigraph 11, 111 CIRCLE2 57, 80 CNC 66 CONE 49, 52, 54, 59 COONS 135 COOR 98 CPRISM_ 70, 73, 80, 83 cPRISM_ 114 CSLAB_ 80, 89 CUTFORM 135 CUTPLANE 73, 135 CUTPOLY 118, 135 CUTPOLYA 118 CYLIND 49, 59
D DEFINE MATERIAL 109 DEFINE TEXTURE 109
DEL 51 DEL TOP 51 Design Workshop 12 DO... WHILE 129 DXF/DWG 12, 18, 21, 91
E ELBOW 59, 128 END 93, 95, 114 ENDGROUP 132 EXTRUDE 72, 89
F FILL 136 FPRISM_ 70, 73 FRAGMENT2 48, 134
G GDL Adaptor 12 GDL adaptor 17 GDL Alliance 11 GDL Central 11 GDL Cookbook 7, 69, 98, 108, 125, 134 18 GDL Toolbox 12, 30, 36 GLOB 114 GLOB_ID 83 GLOB_NORTH 124 GLOB_SCALE 124 Google 11, 21 GOSUB 93, 94 Graphisoft 9, 11, 17 GROUP 132
137
Предметный указатель
GUID 9, 10
H HIDEPARAMETER 69 Hoshino 11 HOTARC2 59, 136 HOTLINE2 59, 136 HOTSPOT2 81 HPRISM_ 70, 73
I IF... ENDIF 62 IFC 9, 113 Industry Foundation Classes 9, 113
K KILLGROUP 132, 133
L Lightworks 11, 102 LINE2 57, 59, 80, 83, 108, 136 LOCK 69
M M.A.D. 11 MASS 80, 135 MATERIAL 49 Material 52 MODEL SOLID 82 MUL 51 MULX 81 MULY 82 MULZ 82
O Objects On Line 11
138
Open GL 10, 36, 98, 102, 104, 105, 109, 126 Orcutt Winslow 16
P PARAGRAPH 134 PARAMETERS 61, 68, 69, 77, 86, 97 PEN 49, 114 People and More 11 PhotoCAD 111 Photoshop 102, 103, 106, 112 PICTURE 107 Piranesi 102, 112 PLACEGROUP 132, 133 POLY_ 110 POLY2 59, 83, 136 POLY2_B{2} 80, 88, 89 PRISM 59 Project Framework 18 PROJECT2 48, 52, 57, 78, 82, 84, 87, 91, 131 PUT & GET 135 PYRAMID 89
R RECT2 57 REPEAT... UNTIL 129 REQUEST 134, 135 RESOL 53, 60, 82, 91, 126, 128 RETURN 87, 95 REVOLVE 72, 89, 90, 124, 133 Rhino 12 Rich Text 134, 136 RICHTEXT 134 RICHTEXT2 134 RoofMaker 8, 12, 41
ROT2 51 RULED 89
S SET STYLE 134 Silicon Graphics 10 Sketchup 12 SPHERE 49 SPLINE2A 80 SPRISM_ 70, 73 StairMaker 8 STEP 126 Studio Arkada 11 STYLE 133 STYLE{2} 134 SWEEP 72, 89
T TEXT2 80, 133, 134 TEXTBLOCK 134 Theometrics 11 TOLER 60, 91, 128 Trussmaker 12, 15, 19, 29, 30, 36, 41, 46, 92 TUBE 72, 82, 92, 124
V VALUES 64 Velfac 123 VERT 98
W WALLHOLE 96, 115, 122 Wallhole 25, 120 Webscape 61 WHILE condition DO 129 Введение в создание объектов
Предметный указатель
X
Вывод на экран 25
И
XWALL 89 XWALL_{2} 80
Г
Именование объектов 44, 136 Именование параметров 55 Имитация движения 102 Инвестиционный объект 16 Инструмент 3D-сетка 13, 40 Инструмент Колонна 22 Инструмент Крыша 13, 19, 42 Инструмент Линия 27 Инструмент Объект 23 Инструмент Перекрытие 13, 22, 24, 25, 28, 70, 103 Инструмент Стена 13, 25, 32, 41, 120 Инструмент Штриховка 28, 72, 89 Инструмент штриховка 88 Инструменты ArchiCAD 16 Интерактивный каталог 84 Интернет 11, 15, 68 Интерфейс пользователя 69, 114, 135 Источник света 14
Z Z-buffer 126, 131 Zoom 12, 36 ZZYZX 81 zzyzx 55, 85, 96
А Автоматическое построение скриптов 8, 19, 29, 80, 113 Альфа-канал 102, 103, 108 Анимация 135 Афиша-аппликация 109 Афиши на основе аппликации 102 Афиши на основе рисунков 102
Б Банановая ферма 30, 32, 39 Барфилдс Маркс 129 Башня Эврика 8, 47 Бегущая рамка 17, 20, 32, 33, 45 Библиотека 8 Библиотека ArchiCAD 11, 13, 21, 22, 30, 39, 44, 95 Бизнес-правила 56 Быстрое прототипирование 16
В Визуализация 11 Волшебная палочка 17, 19, 22, 25, 26, 28, 29, 33, 41, 107, 120 Всплывающее меню 59, 61, 63, 68 Введение в создание объектов
Геном объекта 66 Гиперболическая седлообразная фигура 40, 42 Глобальные переменные 82, 119, 124 Городское моделирование 34 Графическая узловая точка 10, 124, 130, 135, 136 Графически редактирующие узловые точки 58
Д Дверь 14, 25, 35, 113 Двоичный объект 13, 31, 35, 39, 101 Декомпозиция 14 Деревья 102, 110 Джодреллбэнкская радиоастрономическая обсерватория, 41 Диалог GDL 68 Диалог установки параметров 110 Диалоговое окно GDL 47, 113 Диалоговое окно установки параметров 19 Длинная цепочка перемещений 3D-курсора 52 Дополнительные расширения 37, 39
З Загруженная библиотека 31 Западный Бриджфорд 112 Запятая 74 Золотые правила написания подпрограмм 95
К Каталог 45 Катсилидес Фендер 8, 47 Кимон Омуна 61, 66 Кнопка Параметры 47 Ковер 103, 108 Код маскирования 71, 91 Код состояния 88 Колено трубы 30 Команда С 3D-разрезами 20 Комментарии 48, 52, 68 Координатное табло 19, 23, 29, 50 Крестовый свод 32 Крис Джон 41
139
Предметный указатель
Кухонные принадлежности 95
О
Л
Объект афиши 36, 102 Объект ванной комнаты 20 Ограждение беговой дорожки 128 Ограничивающий прямоугольник 33, 35, 82 Окно 13, 14, 23, 35, 97, 113 ООЭ 10, 38, 39, 43, 101, 131 Операции над объемными элементами 10, 20, 36, 38, 39, 40, 43, 46, 101, 124, 131, 135 Определение текста 133 Основной скрипт 48, 61, 64, 65, 77, 85, 93 Отражение лучей 11 Отсутствующие объекты 31
Лас-Вегас 81 Ле Корбюзье 7 Линия истинной толщины 58 Лоден Мэтью 104 Локальная панель 20, 22 Ломаная линия 89 Лондон 35, 129 Лондонское колесо тысячелетия 129 Люди 102, 110
М Макрос 95, 96, 101 Массив параметров 135 Маховик 38 Мгновенный GDL 71, 72, 89 Мельбурн 47 Менеджер библиотек 44 Меню Параметры 98, 104 Меню Сервис 38 Меню Справка 7, 18, 134 Метка подпрограммы 95 Механизм визуализации 83 Модуль 14, 45 Мультиобъект 66, 96
Н Найти и заменить 74, 87 Начало координат 20, 22, 28, 49, 50, 53, 81, 86, 104, 113, 115 Норвежское окно 97 Ноттингем 112
140
П Панель инструментов 8, 12, 14, 15, 19, 45 Параметрический объект 8, 17, 37, 74 Параметрический стол 84 Параметрический стул 54 Параметры 3D-проекции 20, 23, 26, 33 Параметры бревен 26 Перегородка 122 Передача управления 94 Перо 84 Поддержание правил 66 Подпрограмма 66, 86, 93, 96, 114 Подрезка стен под крышу 42 Подтип 9, 10, 14, 47, 59, 84, 113, 117 Позиционирование по сеткам 23 Покрытие 15, 84, 103 Полный 2D-вид 48 Порядок показа 110 Предложение IF 62
Преобразование 3D-сеток в крыши 40 Привязка 3D-текстуры 28, 104, 105 Привязка текстуры 20 Примитивная фигура 15 Проверка скрипта 50 Программирование 125 Проект Геном объекта 61 Проем в стене 113 Прозрачность 110 Против часовой стрелки 71 Профайлер 8, 12, 15, 19, 34, 36, 37, 38, 41, 46, 90, 92
Р Радиотелескоп Ловелла 41 Размеры 49 Разрез/фасад 24, 27 Разрешающая способность 53 Растягивание объекта 55 Растяжение объекта 19 Расширение 11, 12, 19, 36, 41, 46, 92, 102, 111 Реалистические рисунки 102 Редактируемый GDL-скрипт 26 Редактируемый объект 13, 35, 81, 104 Решетка 120 Рисунок 103, 104, 110 Рисунок образца 27, 45, 48, 68 Роберт Лак 35
С САПР 16 Сатерленд Давид 47 Световой люк 117 Серая фигура 105, 112 Сетки 19 Введение в создание объектов
Предметный указатель
Сжатие/растяжение объекта 81 Синтаксис команд призм 72 Скрипт интерфейса 48 Скрипт интерфейса пользователя 97 Скрипт параметров 48, 64 Скрипт спецификаций 48 Сложный скрипт 95 Соглашение об обозначениях 52 Создание крыши из 3D-сетки 36 Создание объектов 7 Список значений 61, 63, 64, 69, 94, 133 Справочное пособие по GDL 7, 18, 74, 82, 134 Справочное руководство ArchiCAD 7, 18 Стол 22 Студент 45 Стул 25, 26, 52
Введение в создание объектов
Схематическое изображение 35
Фотоизображение 109
Т
Ц
Таблица параметров 47, 54, 55, 61, 68, 87 Текстура 15, 25, 36, 46, 98 Тела и фигуры геометрические 39, 45 Тени 108 Толщина линии 20 Транслятор по умолчанию 21 Трассировка лучей 11 Тригонометрия 135
Цикл 125 Цикл FOR... NEXT 125
У Узловая точка 58, 84 Управление кривизной 91, 128
Ч Чистое сопряжение стен 25
Ш Шаблон 84 Шахматная фигура 91
Э Эйфелева башня 22
Ф
Я
Ферма крыши 27
Язык геометрических определений 14
141