1. Pengertian Plugins
Apakah plugin itu?Plugin adalah alat, tool, fitur tambahan atau perluasan. Istilah lainnya adalah Extension, Add-ons, dll
Jadi plugin SketchUp bisa kita artikan bebas adalah sebuah alat/fitur tambahan yang dibuat baik oleh SketchUp sendiri maupun yang dibuat oleh developer / programmer pihak ke-3. Plugin ini berupa skrip/koding text dalam bahasa Ruby.
Untuk melengkapi & membantu kita dalam modeling di SketchUp, terkadang kita membutuhkan plugin yang dibuat oleh pihak ke-3. Seperti plugin KSI Ruang Otomatis, Auto Pushpull, Auto Tris, dll... (Plugin sendiri neh...hehehe). Tujuannya adalah agar proses kerja kita saat modeling lebih cepat, efektif & efisien.
SketchUp Ruby API
Supaya kita bisa juga membuat plugin, maka kita memerlukan satu alat yang sudah di sediakan oleh SektchUp. Alat ini kita kenal dengan nama SketchUp Ruby API (Application Program Interface). API ini beris banyak koding/skrip dalam bahasa Ruby sebagai bahan kita dalam proses membuat plugin.
SketchUp Ruby API memungkinkan kita dapat berinteraksi dengan model SketchUp dan aplikasi SketchUp.
Plugin SketchUp hanya bisa dijalankan di dalam sketchUp sendiri, ini berarti tidak dapat dijalankan jika kita tidak menginstall SketchUp.
Kita dapat menggunakan bahasa Ruby untuk memperluas & mengembangkan SketchUp agar kita bisa melakukan lebih dari fitur dasar yang disediakan oleh SketchUp.
sumber gambar: https://developer.sketchup.com/en/content/welcome
Contohnya saya bisa membuat tools tambahan fitur drawing Line dengan aksi saat sudah terbentuk face(tertutup) langsung otomatis melakukan pushpull dengan nilai yang baku yg sudah di seting, atau dengan nilai lainnya.
Contoh lain yang lebih komplek adalah plugin yang saya buat(KSI Ruang Otomatis) , saya bisa membuat dinding sekaligus di pushpul, dilubangi untuk kusen pintu & jendela dalam satu langkah cepat. Bahkan dalam plugin yang saya buat ini bisa dalam sekali klik terbetuk satu 3D Ruang lengkap dengan lubang-lubang kusen, roster, lantai, plafon..hehehe.
Lain halnya dengan SketchUp SDK, ini bisa dijalankan secara mandiri. Hanya saja masih dalam bahasa C (SketchUp C API) yang jujur sy sendiri ajah masih mumet belajar bahasa ini. wkwkwk
2. Alat Tempur
Untuk membuat skrip/koding, sebenarnya tidak perlu spek PC/Lepi yang canggih. Karena skript ini bisa dibuat sekalipun dengan editor primitif notepad. Kita tingaal save skrip tersebut dengan ektensi *.rb.Tapi untuk plugin yang fokus ke modeling tentu kita perlu mencoba(debug) gimana jalannya skrip plugin yang udah kita buat langsung di SketchUp. Jika teman-teman pernah mencoba plugin round corner, akan terasa berat bahkan bisa bugsplat saat proses nge-round jalan. Ini karena terlalu besar nilai yang di berikan, juga objek yang di-round terlalu banyak. Maka supaya lancar kita perlu spesifikasi hardware yang cukup memadai.
Hardware :
RAM 4 GB & VGA 1 GB (minimal) / 8GB & 2 GB (Rekomen)
(Mampu membaca file size SketchUp & tidak Lemot)
Software :
SketchUp 2013 - 2019
Code Editor:
RDE, Visual Code, Notepad++, Atom, dll)
Ruby 2.6 / teranyar
Referensi, Dokumentasi & Manual
Sebagai referensi lengakap untuk mempelajari pembuatan sketchup, teman-taman bisa langsung kunjungi langsung ke sumbernya.
SketchUp API
https://ruby.sketchup.com/_index.html
Gudang Plugins (Externsion WareHouse)
https://extensions.sketchup.com
http://rhin.crai.archi.fr/rld/plugins_list_az.php
RUBY Programming
https://www.ruby-lang.org/id/documentation/
3. Struktur Model SketchUp
Model
Model adalah istilah yang digunakan SketchUp untuk menamai 3D objek gambar. Jadi model juga berarti adalah satu file SketchUp (*.skp)/beberapa yang di dalamnya berisi informasi, bentuk visual 3D desain.
Contoh: Model Rumah, Model Interior, Model Mesin, dll
Dalam sebuah model SketchUp bisa terdiri dari:
- Entities (Objek Entitas berupa Line, Cicrcle, Face, Endge, dst)
- Layer
- Material SketchUp (Warna & Tekture format bitmap)
- Halaman Sceen
- Definisi Objek (Group, komponen, dll)
- Opsi-opsi yang tersimpan.
Dalam koding skrip ini mutlak untuk didefinisikan sebelum kita membuat objek entitas lainnya.
Dalam koding skrip umumnya di deklarasikan sebagai berikut:
mod = Sketchup.active_model
mod : sebuah Variable. Bebas bisa kita ganti dengan apa saja yang mengacu ke Model
Sketchup.active_model = Deklarasi model SketchUp
MODEL ENTITIES
Line, face, gambar, teks, grup, komponen,dll adalah contoh dari subkelas sebuah entitas
Entities adalah kelas utama/superclassmod dari Sketchup.active_model
ents = mod.entities
ents = Sketchup.active_model.entities
Entities adalah kelas utama/superclassmod dari Sketchup.active_model
ents = mod.entities
ents = Sketchup.active_model.entities
Entity Face
Entity Group
Entity Component
Dari kiri Ke Kanan: Zulfi, Asep, Suwarto & Lukman
4. Dasar Bahasa Ruby
Ruby adalah bahasa pemograman yang bisa dibilang baru seperti halnya phyton. Pembuat scripting ruby ini bernama Yukihiro Matsumoto. Ruby bisa dijalankan di banyak platform, seperti Windows, Mac OS, Linux dan berbagai versi UNIX. .
Yang sudah terbiasa dengan bahasa Java, Phyton, Perl mungkin tidak akan terlalu kesulitan dengan cara penulisan kode skrip(Syntac) Ruby. Lain halnya dengan saya yang baru kadang ngerasa jelimet dengan aturan-aturan cara penulisan.
Jadi tutorial ini saya buat sesederhana & sesingkat mungkin khusus bagi pemula yang belum pernah mengenal koding & berniat ingin mengenalnya, ya kita mulai ajah mengenal si Ruby ini..heheh. Ini sangat dasar sekali untuk membantu kita memahami konsep dari bahasa Ruby ini.
1. Buka SketchUp teman-teman, lalu klik menu Windows > Ruby Console
2. Akan muncul jendela Ruby Console seperti dibawah ini. Bagian yang atas adalah untuk menampilkan output & bagian bawah adalah untuk menginput kode ruby yang akan kita pelajari.
3. Coba ketikan kode berikut ini lalu ketik enter di tiap akhir selesai mengetik satu baris kode.
# - Kode Skrip latihan1.rb
puts "Hello Plugin Skp...!!!"
2 + 8
2 * 8
8 - 2
angka1 = 2
angka2 = 8
Puts angka1 + angka2
ksi = "Komunitas SketchUp Indonesia"
ksi.upcase
ksi.downcase
ksi.reverse
puts "#{ksi} #{angka1 + angka2 }"
Gimana ? Mudah kan?
Oke lah kalo agak bingung, wajar ajah. Karena baru mulai ngoding... :)
Sekarang coba sy jelasakan secara sederhana saja dahulu beberapa baris kode di atas
Penjelasan Skrip:
- puts adalah perintah/statemen ruby mengistilahkannya method adalah perintah untuk menampilkan text. Aturannya text yang akan di tampilkan harus diapit tanda petik dua "...." atau petik satu '....'
- baris kedua s/d ke keempat tentu teman-teman faham kan maksudnya? Ya benar kalkulator gratisk kalo kata si om kasir mah.. :)
- baris berikutnya (angka1 = 2, angka2 = 8), angka1 & angka2 disebut variabel. Isi dari variable tersebut berupa data numerik/nomor yaitu 2 & 8
- tulisan ksi juga disebut variable. Hanya saja isi datanya berupa text/tulisan istilah kodingnya data string
- upcase, downcase & reverse disebut method juga yang berfungsi untuk merubah format text dari variabel ksi
- baris terakhir adalah cara menampilkan variabel dalam tipe data string. Simbol pagar # & kurung kurawal { } adalah aturan yang diberikan Ruby agar perintah puts bisa sukses. Variabel musti di tempatkan dalam kurung kurawal.
Tips.
- Coba blok semua baris kode diatas, copy lalu pastekan di ruby console. Tekan Enter. Apa yang terjadi?
- Teman-teman juga bisa membuat kode skrip tersebut dalam text editor. Beri nama dengan extension *.rb (misalnya latihan1.rb) untuk menandai bahwa file tersebut file Ruby.
- Simpan file tersebut ke folder dimana semua plugin sketchup di simpan. Umumnya berada di folder C:\user\namaUser\appdata\roaming\sketchup\versiSketchUp\plugin (sesuaikan text berwarna merah dengan foldernya)
- Kopikan file latihan1.rb ke folder tersebut. Lalu ketik di ruby console load "latihan1.rb" lalu tekan Enter.
- Pindahkan/Hapus file latihan1.rb tadi dari folder Plugin SketchUp karena di versi tertentu akan selalu diload saat kita pertama kali membuka SketchUp.
Selamat...!!! Jika skrip kode file latihan1.rb tadi sukses & ga ada error. Anggap saja itu adalah plugin sketchup pertama teman-teman semua...hehehe.
Tidak perlu bingung atau merasa susah dengan aturan2, kode2 diatas, nanti juga akan terbiasa jika sering latihan.
Baiklah sekian dahulu, selanjutanya di point no 5 dibawah ini, nanti kita akan coba buat plugin sketchUp sungguhannya. Kalo yang ini cuma sekdar mengenalkan bahasa yang digunakan oleh SketchUp dalam membaca sebuah plugin.
5. Dasar Ruby API SketchUp
Kita lanjut pembahasan ini ke yang lebih spesifik, yaitu mengenai API SketchUp. Seperti yang sudah di uraikan di awal pembuka artikel ini, bahwa dengan API SketchUp memungkinkan kita dapat berinteraksi dengan model SketchUp dan aplikasi SketchUp.
Ok, masih tetap di Ruby Console, coba kita input koding dibawah ini. Boleh satu persatu agar faham, boleh bagian perbagian.
# - Kode Skrip latihan2.rb
# - Bagian-1 (Deklarasi Variable)
mod = Sketchup.active_model
ent = mod.active_entities
panjang = 8.m
lebar = 10.m
tinggi = 8.m
# - Bagian-2 (Deklarasi Variable Array pts)
pts = []
pts[0] = [0, 0, 0]
pts[1] = [panjang, 0, 0]
pts[2] = [panjang, lebar, 0]
pts[3] = [0, lebar, 0]
# - Bagian-3 (Method membuat objek "BatuBata")
face = ent.add_face(pts) # bentuk face sesuai data array
face.reverse! # balikan face
face.pushpull tinggi # pushpull face sesuai variabel tinggi
grp = ent.add_group face.all_connected # buat jadi add_group
grp.name = "BatuBata" # berinama grup
vol = grp.volume/61023.74409473229 # deteksi volume grup
vol = vol.round(0) # pembulatan desimal
view = Sketchup.active_model.active_view
new_view = view.zoom_extents # menzoom extend lembar kerja
# - Bagian-4 (menampilkan info objek BatuBata)
harga = 100
total = vol * harga
UI.messagebox "Material : #{grp.name}\n Dimensi(m): #{panjang} x #{lebar} x #{tinggi}\n Volume : #{vol}m3\n Harga/m3 : Rp#{harga}\n Total harga : Rp#{total}"
Penjelasan Skrip:
- Bagian-1 (Deklarasi Variable). Pada bagian skrip ini fungsinya adalah untuk mendeklarikan variabel utama. Variabel mod = Sketchup.active_model dan dan variabel ent = mod.active_entities disebut variable dalam bentuk kelas/class. Merupakan objek kelas paling tinggi (super class). Semua skrip berupa modeling atau apapun pasti harus mendeklarasikan kedua variabel ini.
- Bagian-2 (Deklarasi Variable Array pts) Seperti kita fahami, bahwa untuk membentu 1 buah garis, maka butuh minimal 2 titik untuk menghubungkannya. Dalam skrip ini kita menyiapkan variable pts dalam bentuk array untuk menyimpan beberapa koordinat titik pada lembar kerja sketchUp. Begitu juga untuk membentuk sebuah bidang/face, minimal kita membutuhkan 3 buah garis yang saling terhubung/ketemu untuk membentuk sebuah objek gambar dasar segitiga. Segi empat butuh 4 garis, dst. Dalam array urutan index selalu dimulai dari 0, bukan dari satu. Contoh pts[0] = [0,0,0]. Maksudnya adalah variabel indek array pts ke-1 ([0]) kita isikan dengan data koordinat 3 dimensi [x,y,z] atau [0,0,0]. dst.
- Bagian-3 (Method membuat objek "BatuBata") Pada bagian ini, awalnya skrip akan bekerja membentuk sebuah face sesuai data dalam variable array pts. Kemudian baris skrip selanjutnya mempushpusll, mengrup,dst. Perhatikan semua keterangan(komen) dengan tag/simbol pagar # yang ada di sebelah kanan tiap baris koding.
- Bagian-4 (menampilkan info objek BatuBata) Ini skrip tambahan buat teman-teman yang selalu meminta saya untuk membuat plugin RAB... hehehe. Mungkin dasarnya bisa kita awali dari baris kode skrip bagian ini. Fungsinya adalah memberikan data-data harga/m3 & mengkalkulasi total harga sesuai dengan volume objek yang sudah dibuat.
Simpan file latihan2.rb ini di folder tertentu. Misalnya Anda buat folder di C:\LatihanRuby.
Maka coba buka SketchUp, lalu buka Ruby Console. Ketikan load "C:\LatihanRuby\latihan2.rb" Enter.
Kembali saya ucapkan selamat, karena Anda telah berhasil membuat plugin. Silahkan latihan dengan mengubah-ubah variabel agar Anda lebih faham mengenai Ruby API ini.
6. Kupas Tuntas Plugin SketchUp KSI Ruang Otomatis
Ini adalah plugin pertama yang saya buat. Plugin ini terinspirasi dari plugin 1001bit & Dibac. Awalnya kodingnya saya jadikan satu dengan jumlah baris kode lebih dari 3300 baris. Namun kemudian karena ada beberapa teman tertarik untuk mengetahui & memperlajari cara membuatnya. maka saya buat menjadi beberapa file agar terstruktur dalam memahaminya.
Yang di tulis dibawah adalah hanya pokok & gambaran dasar dari struktur umum plugin. Kupas tuntas sebenarnya akan saya tulis langsung pada skrip berupa komen-komen penting.
Yang di tulis dibawah adalah hanya pokok & gambaran dasar dari struktur umum plugin. Kupas tuntas sebenarnya akan saya tulis langsung pada skrip berupa komen-komen penting.
Tujuan & Fitur Plugin
Tujuan saya membuat plugin ini adalah untuk membantu teman-teman yang tergabung dalam Komunitas SketchUp Indonesia, umumnya untuk pengguna SketchUp lainnya untuk mempermudah dalam menyiapkan sebuah ruang Arsitektektur. Bagi bagi mereka yang fokus di interior, maupun mereka yang fokus di exterior. Padahal faktanya saya adalah bergerak di bidang modeling alat uji. Walau pernah kuliah di bidang arsitektur, namun nasib membawanya ke rancang bangun alat uji. hehehe
Fitur Plugin:
1. Membuat ruang secara otomatis lengkap dengan lubang kusen
2. Membuat kustom dinding yang dapat di atur baik tinggi, tebal & model kusennya
3. Grid Ruang, membuat ruangan berdasarkan grid. Grid didapat dari panjang dinding yang di gambar
4. Menyediakan komponen dalam bentuk dasar sebagai pelengkap. Sperti atap, kusen, teras, sampai ke furniture
5. Dan fitur-fitur lainnya. :)
1. File "ncep_plugin.rb"
File ini berfungsi sebagai loader yang umum digunakan oleh para developer plugin sketchup. Fungsi utamanya meregistrasi plugin ke SketchUp. Berisi koding skrip dari kelas extension.rb
File ini harus di tempatkan dalam folder Plugin seperti sudah dijelaskan sebelumnya.
Silahkan download & pelajari kodingnya. Penjelasan ada dalam setiap baris perintah.
2. Folder "..\Plugins\ncep_studio"
Folder ini adalah folder utama yang biasa di pakai apabila plugin memiliki bagian skrip lainnya atau memiliki ikon, UI/GU, petunjuk dalam format html, dll. Ini penting agar Folder aseli tempat plugin di simpan bawaan SketchUp tetap rapih & terstruktur. Biasanya para developer memilih nama-nama unik dalam penamaan Folder ini. Begitu juga dalam penamaan file. Agar plugin yang satu & lainnya tidak terjadi konflik dalam meload. Contoh seperti su_sandbox, ams_library, tt_Lib2, Fredo6_curviloft, dll. Begitu juga penamaan plugin & folder saya ini, saya awali dengan ncep_ sebagi ciri unik agar tidak bentrok dengan plugin lain yang mungkin setipe. Juga ... ya.. itung-itung promosi...hehehe.
3. File "ncep_ro.rb"
Ini adalah skrip utama plugin, disimpan dalam folder ...\Plugins\ncep_studio. Isinya sejumlah variable, konstanta, method/fungsi untuk membuat geometri. Didalamnya juga berisi penanganan kelas-kelas lainnya dari API SketchUp. Utamanya adalah kelas Tool, View & UI.
Kelas tool berisi fungsi-fungsi khusus untuk penanganan mouse & keyboard.
Kelas View berfungsi untuk penaganan viel lembar kerja. Seperti titik pointer mouse, penetuan titik-titik koordinat proses drawing line, circle, dll. Ini yang menurut saya tersulit karena harus memahami kelas-kelas lain, karena satu sama lain saling keterkaitan.
Kelas UI cukup mudah difahami & tidak terlalu sulit. Karena fungsinya hanya untuk mendisain antar muka, dialog box agar user lebih mudah dalam menggunakan plugin ini. Saya lebih memilih UI Dialog standar ketimbang dalam format UI Web dialog dalam format Html. Ini untuk menjaga agar plugin bisa digunakan di semua versi & sistem windows. Karena format Web dialog cenderung dipengaruhi oleh software IE & komponen lainnya. Seringkali tampilan UI Web dialog tidak menampilkan view yang semestinya. Juga karena dipengaruh CSS atau script lainnya seperti JSon atau lainnya. Tapi jika mereka yang menguasai skrip Web Disain dengan bahasa skripnya tentu tidak akan kesulitan untuk membuat UI dalam format html atau web dialog.
Sebenarnya masih banyak kelas-kelas turunan lainnya yang di gunakan dalam plugin ini. Tapi intinya fokus tersulit adalah dalam kelas-kelas tersebut di atas.
4. File "ncep_mntb.rb"
Skrip file ini berisi method/fungsi untuk penanganan toolbar & menu bar. Juga untuk mengarahkan aksi dari ikon, menu saat user mengklik atau mengaksesnya. Cukup sederhana & mudah difahami bagi anda yang sudah pernah membuat kode skrip.
5. File "ncep_lis.rb"
Sebenarnya ini rahasia sih, karena rencana saya jika plugin ini telah sukses banyak di gunakan di versi SketchUp & juga bisa kompatibel dengan OS Windos lainnya, rencana ingin menjual atau mencari investor lain untuk membentuk teamword dalam mengembangkan ke plugin yang lebih canggih. Ya.. emang mimpi sih, tapi saya optimis. Jika mereka para developer plugin handal yang udah lama pengalaman ajah bisa, kenapa kita tidak bisa. Walau terlambat, ga masalah daripada tidak melakukan sama sekali...wkwkwk
File skrip ini adalah berisi utilitas untuk penanganan lisensi plugin & fungsi security pengaman plugin dari tindakan kopas, crack & hack. Isinya disamping tehnik mengenskripsi data, juga berisi beberapa fungsi lainnya yang menentukan. Ini juga merupakan bagian koding tersulit karena berpengaruh ke sistem OS juga. Kendala saat ini adalah selalu di cegah oleh level sekuritas windows & terkadang terdeteksi virus oleh sebagian anti virus. Padahal niat saya bukan mau membuat virus... hahaha.
6. File-File pendukung
File-file pendukung ini banyak macamnya dari mulai file icon, text, html, dll. Tujuannya adalah agar plugin lebih interaktif & menarik.
Nah. Itu saja sebagi gambaran awal plugin KSI Ruang Otomatis
Nah. Itu saja sebagi gambaran awal plugin KSI Ruang Otomatis
7. Cara Bikin SkecthuBOT
Kopdar - 1 : Belajar Bareng Membuat Plugins/Extension SketchUp
Reviewed by NCEP Studio
on
Maret 24, 2019
Rating:
Tidak ada komentar: