Карта висот в ARCHICAD

Даний матеріал — практичний урок-інструкція зі створення GDL-об’єкту карти висот.

Статтю підготував Павло Меньших, архітектор-практик та BIM-координатор архітектурного бюро Savytskyy Design.

 

Оригінал статті ви можете знайти за посиланням.

Коротко про автора:

Освіта:

  • 2016 – 2017гг – Національний університет «Львівська політехніка», Інститут архітектури, ступінь магістра у галузі “Реставрація архітектурної та художньої спадщини”
  • 2017 – 2018гг – Люблінський Політехнічний Університет, факультет цивільної інженерії та архітектури, ступінь магістра у галузі “Діагностика та реставрація будівель”

Досвід роботи:

  • 2014 – 2016гг – приватна практика
  • 2016 – 2017гг – архітектор, Kreoplan
  • 2017 – 2019гг – архітектор, BIM-координатор, Savytskyy Design

Практичні навички у програмах:

  • Archicad
  • Rhinoceros
  • Grasshopper
  • Мови програмування GDL, Python

Закінчив курси:

  • Revit
  • Revit MEP
  • Navisworks

Павло Меньших

Архітектор, BIM-координатор архітектурного бюро Savytskyy Design

Карта висот в ARCHICAD

У цій статті ми поекспериментуємо зі зв’язкою ARCHICAD + Grasshopper + GDL. Ми розглядатимемо дану зв’язку на прикладі трансформації 3D-сітки у градієнтну карту висот. Перш ніж розпочати, розглянемо, що таке карта висот і чим вона корисна.

Карта висот – один із методів подачі моделі рельєфу, де використовуються “псевдокольори” для позначення висоти за допомогою кольорової градації. Застосовується метод вертикального перебільшення для того, щоб зробити відмінності висоти більш виразними.

Можна використовувати карту висот для презентацій, а також планів для точного зображення рельєфу (рис. 1).

(рис. 1)

Від теорії до практики

Спочатку створюємо файл в ARCHICAD та будуємо 3D-сітку місцевості. Для прикладу 3D-сітка була розділена на 2 частини, щоб підкреслити зміну моделі (рис. 2).

(рис. 2)

Тепер нам потрібен компонент Grasshopper-ARCHICAD Live Connection V2.0, завантажити його можна на сайті Graphisoft безкоштовно. Наступним кроком буде активація Live Connection V2.0 (В ARCHICAD відкриваємо Файл-Взаємодія-Grasshopper connection). Далі відкриваємо Rhinoceros та запускаємо у ньому Grasshopper, після чого в ARCHICAD натискаємо Start Connection. Після цього у Grasshopper створюємо компонент mesh, до якого прив’язуємо 3D-сітку з ARCHICAD (рис. 3).

(рис. 3)
(рис. 4)

Наступним кроком буде побудова формули у Grasshopper (рис. 4). Спочатку розбиваємо 3D-сітку, щоб отримати компоненти Grasshopper для роботи з ними. Далі перебудовуємо з точок 3D-сітки Delaunay Mesh, розбиваємо його на грані. Для того, щоб виключити можливість переведення некоректної геометрії в ARCHICAD, перевіряємо їх та виключаємо з вибірки усі невідповідні. З полілінії, яка окреслює грані, отримуємо усі вершини та звертаємось до кожної вершини почергово, щоб отримати значення її координат. Визначаємо середину кожної грані та використовуємо її, як параметр інтервалу для вузла градієнту. При натисканні по вузлу Gradient правою кнопкою миші, можна обрати одну з попередньо налаштованих кольорових схем. Для отримання значень кольору, на виході, зазначаємо вузол, який вкажемо у наступних кроках.

Для подальшого експорту в ARCHICAD нам потрібен об’єкт, у якому буде розміщено дані з Grashopper та власне дані для розміщення. Цими даними є x-, y-, z-координати трьох вершин трикутника та RGB-дані кольорів. Для зручного фільтрування даних всередині Grasshopper було використано декілька GHPython-компонентів (рис. 5), без них скрипт був би більш повільним та громіздким.

Примітка: для коректної роботи вузла GHPython необхідно встановити Python та IronPython.

(рис. 5)

Потрібно обрати GHPython, розкрити вузол подвійним кліком по ньому та у тілі розмістити дані, як показано на зображенні вище (рис. 5).

#Sorting coordinate points and prepearing for ARCHICAD

xx, yy, zz = point.split ( «,»)

X = round (((float (xx)) / 1000), 2)
Y = round (((float (yy)) / 1000), 2)
Z = round (((float (zz)) / 1000), 2)

. . .

#rgb is input string, looks like Color [A = 255, R = 198, G = 216, B = 198]

color, red, green, blue = rgb.split ( «,»)

R = red [3:]
G = green [3:]
B = blue [3: -1]

Також необхідно змінити тип вхідних даних на string (рис. 6) та назви змінних на вхід та на вихід повинні строго відповідати змінним в тілі вузла (рис. 5).

(рис. 6)

Тепер нам потрібно написати об’єкт для ARCHICAD (рис. 7), оскільки лише через об’єкт ми можемо маніпулювати цими даними, крім цього в об’єктів відносно висока швидкодія всередині ARCHICAD, через це їх використання завжди є пріоритетним.

Для можливості контролю параметрів об’єкту у Grasshopper нам необхідно додати параметр типу дійсне значення зі змінною ParamcontrolByGrasshopper та поставити його значення на ТАК. Більше про зв’язок з Grasshopper можна почитати у Grasshopper-ARCHICAD Live Connection 2.X User Guide (Міститься всередині теки Документація у теці ARCHICAD на локальному комп’ютері).

(рис. 7)

Для самої логіки об’єкту було прийнято рішення створювати окремий екземпляр об’єкту для кожної грані, щоб мати можливість контролювати її колір. У 3D-скрипті створюємо наш колір за допомогою команди DEFINE MATERIAL (більше про GDL можна прочитати у GDL Reference Guide, що міститься у ARCHICAD-Документація), як тип матеріалу використовуємо попередньо налаштований тип matte, якому відповідає цифра 2, значення кольору задаються у діапазоні [0.0 … 1.0], тому ділимо наші змінні, у які записуватимуться значення з Grasshopper — на 255. Далі присвоюємо щойно створений матеріал нашому об’єкту. Для найбільш точної міміки 3D-сітки об’єктом було обрано CSLAB_ — через постійну вертикальність його граней, можливість визначення окремого матеріалу для граней та можливість контролю зображення індивідуальних граней та сторін. Щоб зробити дно горизонтальним, було використано команду CUTPLANE … CUTEND. Також були додані гарячі точки у всіх кутах для зручності вибору у вікні ARCHICAD.

! 3D script

hh = MAX (z1, z2, z3)

pen pnn

DEFINE MATERIAL «rgb» 2, rr / 255, gg / 255, bb / 255

MATERIAL rgb

j1 = 1!: lower horizontal edge
j2 = 1!: vertical edge
j3 = 0!: upper horizontal edge
j4 = 1!: side face

s = j1 + 2 * j2 + 4 * j3 + 8 * j4

CUTPLANE 1, 1, 0, 1

CSLAB_ rgb, sidemat, sidemat,
3, -hh,
x1, y1, z1, s,
x2, y2, z2, s,
x3, y3, z3, s

CUTEND

HOTSPOT x1, y1, z1
HOTSPOT x2, y2, z2
HOTSPOT x3, y3, z3

HOTSPOT x1, y1 0
HOTSPOT x2, y2 0
HOTSPOT x3, y3 0

! 2D script

PROJECT2 {3} 3, 270, 2, 16 + 8 + 4 + 2

Тип даних для значень координат потрібно обрати, як число з рухомою комою, а для значень кольору — як ціле число.

Для ін’єкції даних з Grasshopper в об’єкт необхідно використати вузол object settings. Обрати у ньому параметр Use existing Library Part, далі вибрати елемент за допомогою select ARCHICAD Library Part та обрати значення, які необхідно контролювати (рис. 8).

(рис. 8)

Після цього ми підключаємо вузол параметрів об’єкту у вузол об’єкту, необхідно також виставити вузлову точку, нею може бути 0, 0,0. Рекомендується також приєднати вузол boolean toggle до параметру синхронізації, так буде можливість вручну активувати надсилання даних в ARCHICAD, що спростить роботу за великої кількості даних.

Ось приклад налаштованого алгоритму у Grasshopper зв’язаного з об’єктом GDL (рис. 9).

(рис. 9)

При активації синхронізації вузла Object у Grasshopper дані для створення об’єктів почнуть передаватися в ARCHICAD, це може тривати деякий час за умови великої кількості об’єктів, тож необхідно бути терплячими. Після завершення обрахунків ми отримаємо бажаний результат — кольорову карту висот в ARCHICAD, якою можна користуватись і після закриття Rhinoceros+Grasshopper (рис. 10).

(рис. 10)

За замовчуванням об’єкти з Grasshopper приходять заблокованими, для можливості їхнього редагування всередині ARCHICAD їх необхідно розблокувати (Редактор-Блокування).

Зробимо висновки

Grasshopper та GDL відкривають величезні можливості в ARCHICAD. Найефективніше використовувати Grasshopper для розбивки на елементи/отримання даних, а самі елементи імпортувати в ARCHICAD як об’єкти, це значно покращує швидкодію роботи.

Принципи, викладені у даному матеріалі, можна використати для переведення в ARCHICAD будь-яких складних форм з Grasshopper, а також розфарбування цих форм всередині ARCHICAD — без необхідності створювати велику кількість матеріалів кольорів, у звичному редакторі покриттів.

Оригінал статті ви знайдете за посиланням.