ArchiMAD-lehti

Grasshopper vai Python? - ArchiMAD

Kirjoittanut Severi Virolainen | 06 lokakuuta 2021

Uusi diginatiivi sukupolvi on sisäistänyt ohjelmoidun automaation mahdollisuudet. Archicad tarjoaa objektien ohjelmointiin GDL:ää, mutta entäpä kun halutaan jotain mutkikkaampaa – sellaista, mihin Archicad ja GDL eivät helposti taivu? Siihen Archicad tarjoaa Rhinoceros-yhteensopivuutta.

Rhinoceros on perinteinen CAD-ohjelma. Se ei ole tarkoitettu erityisesti mihinkään vaan ennemminkin kaikkeen suunnitteluun. Rhinon erottaa muista CADeistä kyky mallintaa tarkasti erityisesti NURBS-pintoja (Non-uniform rational basis spline).

NURBS-pinnat ovat kauniisti kaareutuvia ja taittuvia pintoja. Wikipedia antaa lisätietoa – suomeksi vähemmän ja englanniksi enemmän. Archicad ei osaa tällaisia pintoja luoda ainakaan vielä. Sen sijaan Rhinoceros osaa.

Rhinossa voi luoda piirtämällä ja/tai ohjelmoimalla. Rhinoceros on päässyt suureen suosioon arkkitehtien ja erityisesti arkkitehtiopiskelijoiden keskuudessa graafisen Grasshopper-ohjelmointikielen siivittämänä. Perinteisiin ohjelmointikieliin tottuneille Grasshopper on aluksi vaikea hahmottaa, mutta suoriutuu joistakin tehtävistä käsittämättömän tehokkaasti.

 

Periaatteessa Grasshopper on kuvaus prosessista, joka täytyisi tehdä käsin saman lopputuloksen saavuttamiseksi. Siis tyyliin: Piirrä viiva pisteestä 1,2,3 pisteeseen 4,5,6, jaa viiva viiteen osaan, piirrä jokaisen pisteen kohdalle pallo, jonka säde on 1, ja niin edelleen.

Ydin on, että kun prosessi dokumentoituu askel askeleelta, voi mitä tahansa prosessin kohtaa muuttaa jälkikäteen. Muu osa pysyy ennallaan, ja tulos on sen mukainen. Tämä on parametrista suunnittelua, jossa parametrien lisäksi voi muokata itse prosessia!

Oikea työkalu?

Peruskäyttäjä voi ohjelmoida Rhinoa myös Pythonilla. Sillä voi tehdä samat temput kuin Grasshopperilla, mutta kieli on perinteinen. Kumpi sitten on parempi? Oikea vastaus on tyypillinen: ”Riippuu tapauksesta”. Vastaamista ei myöskään helpota se, että Grasshopperissa voi tehdä solmukohtia Pythonilla, C#:lla tai VisualBasicillä – ja toki itse Rhinoakin voi täydentää vaikka C++:lla.

Tätä artikkelia varten tein saman toiminnallisuuden Rhinoon Pythonilla ja Grasshopperilla. Skripti eli ohjelma luo Rhinossa piirretyn kolmiulotteisen NURBS-käyrän mukaisen torven.


Torven tuottava Grasshopper-kaavio. Tiedoston voi ladata tästä. Käynnistä Rhino, piirrä käyrä ja kirjoita komentoriville ”Grasshopper”. Avaa ”Torvet.gh”. Osoita Crv-nodea (Curve) hiiren kakkospainikkeella ja valitse ”Set one curve”. Osoita käyrää. Torven pitäisi ilmestyä. Leiki.

Python-skriptissä on kymmenkunta riviä ja kommentit lisäksi. Grasshopperissa on kahdeksan nodea, ja yksi lisää tarvittaisiin paistamiseen (Bake). Voidaan sanoa, että tämän tehtävän suhteen ei kielten rakenteellinen ero tee eroa.

Pieniä käytön eroja on: Kun Python-ohjelma käynnistetään, se kysyy käyttäjältä käyrän, jonka käyttäjä osoittaa. Se voisi kysyä myös torven halkaisijan, jakojen määrän ja muuta, mutta ne on tässä esimerkissä vakioitu.

Grasshopper ei kysele, mutta sille tulee määrittää kyseinen käyrä ja vakiot. Vakioiden muuttaminen tapahtuu molemmissa kyseistä numeroa muuttamalla – ei siis eroa käytettävyydessä.

Kaksi identtistä torvea. Valkoinen on tehty Pythonilla, punainen Grasshopperilla. Väri johtuu siitä, ettei ole vielä paistettu (Bake). Tiedoston voi ladata tästä.

Kumpi sitten olisi helpompi, nopeampi tai kätevämpi? Vaikea sanoa, mutta Grasshopper tarjoaa Archicad-yhteensopivuutta, eli sillä voi ohjata myös Archicadiä. Ehkäpä taivun suosittelemaan Grasshopperia, mutta Python perinteisenä ohjelmointikielenä antaa mahdollisuuksia rakenteisiin, joita Grasshopper ei tunne – esimerkiksi perinteisen ohjelmoinnin perustat eli toisto- ja ehtolausekkeet.

Torven tuottava Python-skripti. Tiedoston voi ladata tästä. Käynnistä Rhino, piirrä käyrä ja kirjoita komentoriville ”EditPythonScript”. Avaa ”Torvet.py”. Käynnistä skripti Play-painikkeesta (kolmio). Osoita käyrää. Torven pitäisi ilmestyä. Leiki.

Grasshopper toimii listoilla, jotka ovat tehokkaita, ellei poikkeuksia ole liikaa. Lista itsessään on eräänlainen toistolauseke, kun sille tehdään jotain.

Mutta otsikon kysymykseen en saa vastata. Kannattaa käyttää sellaista työkalua, jota osaa käyttää. Itselleni Grasshopperin hierarkiset listat ovat joskus vaikeita hahmottaa, mutta toki Pythonissakin vaikkapa dictionary-tyyppiset muuttujat vaativat abstraktia ajattelua.

Voin kuitenkin vakuuttaa, että toimistossa kannattaa pitää palkkalistoilla vähintään yksi ohjelmointitaitoinen suunnittelija.