My Grasshoper Code : Adjacent Faces Finder

 


Pada semester 4 mata kuliah Teori Perkembangan Arsitektur 4, salah satu tugas dari tugas besar yang diberikan yaitu membuat maket bangunan Dekonstruksi. Tim kami sepakat untuk menggunakan bangunan Denver Art Museum - Frederic C. Hamilton Building sebagai objek maket. Lalu kami mengambil modelnya dari 3D Warehouse, dan dikonversi ke kumpulan permukaan.

Pada saat itu, saya berpikir bagaimana caranya mencari permukaan yang bersebelahan agar saat pemasangan maket lebih mudah? Lalu pikiran saya mengatakan bahwa Grasshopper dapat melakukan itu. Setelah itu saya mencoba membuat kode tersebut.

Saya akan menjelaskan algoritma kode Grasshopper saya.

1) Kumpulkan semua permukaan ke komponen Surface

2) Pecah permukaan-permukaan menggunakan Deconstruct Brep. Lalu ambil garisnya saja. Letakkan ke Curve.
3) Ambil garis tengah dari semua garisnya menggunakan Midpoint. Lalu lakukan Graft ke data tersebut. Penggunaan titik tengah adalah mekanisme utama kode ini.

4) Gunakan Number Slider untuk menentukan permukaan mana yang ingin dicari sebelahnya. Lalu buat Masking, dengan Concatenate gabungkan simbol { dengan nomor urut permukaan dengan ;*} .

5) Sambungkan Masking ke input Masks dan output 3) ke input Data. Komponen ini adalah Split Tree yang fungsinya memisahkan Data Tree menjadi 2 dengan aturan yang ditentukan oleh Masking. Output Positive menyatakan daftar titik tengah yang cocok dengan syarat Masks, sebaiknya Negative menyatakan daftar titik tengah yang tidak cocok dengan syarat Masks.

6) Sambungkan output Positive ke input Set A yang sudah dilakukan Flatten. Sambungkan output Negative ke input Set B yang juga sudah dilakukan Flatten. Set Intersection mencari titik tengah yang koordinatnya sama dari kedua himpunan. Mekanisme ini digunakan untuk mencari permukaan yang bersebelahan.

7) Lalu hubungkan nama Data Tree dengan data titik tengah. Yang akan dihubungkan adalah Negative dari 5) dengan Midpoint dari 3). Menggunakan Tree Statistics akan menghasilkan 3 output, yaitu Paths (Nama-nama Data Tree), Length (Jumlah data yang ada dalam setiap Data Tree), dan Count (Jumlah semua Data Tree). 
Sort Text adalah komponen yang berfungsi sebagai penyortir data berupa teks atau disebut String. Terdapat 3 input, yaitu Keys (String yang akan disortir), Values (nilai selain String yang juga dapat diurutkan berdasarkan urutan dari Keys), dan Culture (aturan penyortiran).
Hubungkan output Paths ke input Keys, dan hubungkan output Negative dari 5) ke input Values yang sudah dilakukan Flatten.


8) Key/Value Search adalah komponen yang dapat mencari data yang sudah disortir menggunakan sistem Key yang sudah dihubungkan ke Value. Sambungkan output Values dari 7) ke input Keys, lalu sambungkan output Keys dari 7) ke input Values.
Lalu bagaimana mekanisme itu bekerja untuk mencari sisi yang bersebelahan? Ingat output yang diberikan dari 6), sambungkan ke input Search. Keys adalah daftar titik yang akan dicek apakah ada yang lokasinya sama dengan output dari 6) dengan input Search. Nantinya komponen itu akan mencari nama Data Tree dari Values yang korespon dengan sisi yang bersebelahan. Hasilnya adalah String yang memuat nama Data Tree.


9) Output dari 8) dimasukkan ke input Masks, dan output dari 3) dimasukkan ke input Data. Hasilnya adalah data yang memuat titik tengah dari sisi yang bersebelahan.


10) Format Data Tree ini memuat dua angka ({A;B}). Yang dibutuhkan hanya 1 angka depan, maka Data Tree ini harus dipangkas menggunakan Trim Tree. Dari format {A;B} menjadi {A}.


11) Data Tree yang sudah didapat dikonversi ke teks menggunakan komponen Characters. Komponen ini memecah teks menjadi daftar bagian-bagiannya tersendiri.


12) Yang akan digunakan adalah angka, maka karakter kurung kurawal harus dihapus. Menggunakan Cull Index, hapus data yang ada pada awal dan akhir daftar. 0 berarti awal, dan -1 berarti paling akhir.


13) Setelah menyisakan angka, daftar angka tersebut dihubungkan menjadi kesatuan angka yang utuh menggunakan Join Text.

14) Output angka dari langkah sebelumnya dapat dijadikan acuan ke komponen List Item. Input List dari kumpulan permukaan, dan Input Index dari output 13).

Berakhir sudah penjelasan mengenai algoritma kode saya. Anda bisa mengunduh kodenya dan mempraktekannya disini:
https://drive.google.com/file/d/1Zok3aQd-LaKrLQ4m0YgoyYdCBpWbk8FC/view?usp=sharing

Terima kasih sudah membaca. 

Komentar

Postingan Populer