Cara Menciptakan Plugin/Extension Sketchup - Bab 3: Tool Pointer Mouse
Melanjutkan pembahasan sebelumnya mengenai dasar menciptakan plugin, cara merigestrasi ke SketchUp, cara menciptakan menu, toolbar,dll. Nah ketika kita fokus pada agresi & fungsi utama plugin kita.
Saya coba yang sangat sederhana ajah dulu semoga tidak frustasi..hehehe. Kita Sisipkan & tambahkan pada file "skrip_utama_saya.rb" dengan beberapa instruksi skrip lagi. Fungsinya yaitu untuk menggambar sebuah dinding polos. Nah buka deh filenya, kemudian coba sisipkan instruksi skrip dibawah ini sambil memperhatikan keterangan berikut ini.
Tambahan skrip pertama yaitu sebuah kelas/class yang kita buat khusus untuk menangani pointer mouse. Kita berinama saja kelas ini dengan nama "Mouse_saya". Catatan: Aturan ruby dalam memberi nama kelas abjad pertama harus kapital.
Dalam class "Mouse_saya" ini terdapat method khusus yang diambil dari kelas utama Ruby Api SketchUp yaitu class InputPoint. Pemberian nama definisi dari kelas ini harus sesuai & dilarang salah. Teman2 sanggup pribadi cari acuan selengkapnya di situs resminya ruby.sketchup.com
Yang utama dalam Class "Mouse_saya" ini yaitu method onMouseMove (Saat pointer mouse bergerak) & onLButtonDown (Saat tombol mouse kiri di tekan).
Fungsi utama Method onMouseMove adalah mencatat lokasi koordinat pointer pada layar kerja sketchup. Fungsi ini juga terkait dengan method draw kelasnya sketchup InputPoint.
Sedangkan pada method onLButtonDown kita sisipkan satu method yang kita buat khusus "gbr_dinding" untuk menggambar dinding. Kita ketahui bahwa sebuah dinding sanggup dihasilkan dari sebuah plan XY berupa face yang di pushpull dengan tinggi tertentu. Maka kita juga harus menciptakan method khusus untuk menggambar face, kemudian face terseut dipushpull, kemudian di grup. Nah semua mekanisme menggambar ini kita tuangkan juga dengan menciptakan method khusus. Kita berinama saja "buat_faceXY".
Untuk mencoba fungsi kelas "Mouse_saya" ini, kita coba buat sajian & toolbar baru. Jika kemarin untuk menampilkan sebuah kotak pesan di berinama method "perintah", maka kita buat lagi sebuah method dengan nama "perintah_dinding". Funsinya yaitu ketika menu/ikon toolbar di akses/klik maka class "Mouse_saya" aktif dengan statemen Sketchup.active_model.select_tool Mouse_saya.new.
Silahkan explore skrip ini. Jika ada pertanyaan silahkan layangkan di Grup WA.
Listing Skrip:
require 'sketchup.rb'
require 'extensions.rb'
class Mouse_saya
def activate
@mod = Sketchup.active_model
@ent = @mod.entities
@ip0 = Sketchup::InputPoint.new
@ip1 = Sketchup::InputPoint.new
@pts=[]
end
def deactivate(view); view.invalidate; end
def resume(view); view.invalidate; end
def onCancel(reason, view); reset_tool;view.invalidate;end
@com2.small_icon = "#{@pathRoot}/ikon_dinding16.png"
@com2.large_icon = "#{@pathRoot}/ikon_dinding32.png"
Sumber http://nceptutorial.blogspot.com
Saya coba yang sangat sederhana ajah dulu semoga tidak frustasi..hehehe. Kita Sisipkan & tambahkan pada file "skrip_utama_saya.rb" dengan beberapa instruksi skrip lagi. Fungsinya yaitu untuk menggambar sebuah dinding polos. Nah buka deh filenya, kemudian coba sisipkan instruksi skrip dibawah ini sambil memperhatikan keterangan berikut ini.
Tambahan skrip pertama yaitu sebuah kelas/class yang kita buat khusus untuk menangani pointer mouse. Kita berinama saja kelas ini dengan nama "Mouse_saya". Catatan: Aturan ruby dalam memberi nama kelas abjad pertama harus kapital.
Dalam class "Mouse_saya" ini terdapat method khusus yang diambil dari kelas utama Ruby Api SketchUp yaitu class InputPoint. Pemberian nama definisi dari kelas ini harus sesuai & dilarang salah. Teman2 sanggup pribadi cari acuan selengkapnya di situs resminya ruby.sketchup.com
Yang utama dalam Class "Mouse_saya" ini yaitu method onMouseMove (Saat pointer mouse bergerak) & onLButtonDown (Saat tombol mouse kiri di tekan).
Fungsi utama Method onMouseMove adalah mencatat lokasi koordinat pointer pada layar kerja sketchup. Fungsi ini juga terkait dengan method draw kelasnya sketchup InputPoint.
Sedangkan pada method onLButtonDown kita sisipkan satu method yang kita buat khusus "gbr_dinding" untuk menggambar dinding. Kita ketahui bahwa sebuah dinding sanggup dihasilkan dari sebuah plan XY berupa face yang di pushpull dengan tinggi tertentu. Maka kita juga harus menciptakan method khusus untuk menggambar face, kemudian face terseut dipushpull, kemudian di grup. Nah semua mekanisme menggambar ini kita tuangkan juga dengan menciptakan method khusus. Kita berinama saja "buat_faceXY".
Untuk mencoba fungsi kelas "Mouse_saya" ini, kita coba buat sajian & toolbar baru. Jika kemarin untuk menampilkan sebuah kotak pesan di berinama method "perintah", maka kita buat lagi sebuah method dengan nama "perintah_dinding". Funsinya yaitu ketika menu/ikon toolbar di akses/klik maka class "Mouse_saya" aktif dengan statemen Sketchup.active_model.select_tool Mouse_saya.new.
Silahkan explore skrip ini. Jika ada pertanyaan silahkan layangkan di Grup WA.
Listing Skrip:
require 'sketchup.rb'
require 'extensions.rb'
class Mouse_saya
def activate
@mod = Sketchup.active_model
@ent = @mod.entities
@ip0 = Sketchup::InputPoint.new
@ip1 = Sketchup::InputPoint.new
@pts=[]
end
def deactivate(view); view.invalidate; end
def resume(view); view.invalidate; end
def onCancel(reason, view); reset_tool;view.invalidate;end
def onMouseMove(flags, x, y, view)
if !@ip0.valid?
@ip1.pick(view, x, y)
end
view.tooltip = @ip1.tooltip if @ip1.valid?
view.invalidate
end
if !@ip0.valid?
@ip1.pick(view, x, y)
end
view.tooltip = @ip1.tooltip if @ip1.valid?
view.invalidate
end
def onLButtonDown(flags, x, y, view)
if !@ip0.valid?
puts "Point ke-1 sudah di klik"
@point1 = Geom::Point3d.new(@ip1)
puts @point1.x
puts @point1.y
puts @point1.z
gbr_dinding
reset_tool
end
view.invalidate
end
def draw(view)
@ip0.draw(view)
@ip1.draw(view)
if @ip1.valid? && !@ip1.display?
view.draw_points([@ip1.position])
end
if !@ip0.valid?
puts "Point ke-1 sudah di klik"
@point1 = Geom::Point3d.new(@ip1)
puts @point1.x
puts @point1.y
puts @point1.z
gbr_dinding
reset_tool
end
view.invalidate
end
def draw(view)
@ip0.draw(view)
@ip1.draw(view)
if @ip1.valid? && !@ip1.display?
view.draw_points([@ip1.position])
end
end
private
def reset_tool; @ip1.clear; end
def buat_faceXY (po, pj, lb,ti)
pts = []
pts[0] = [po.x, po.y, po.z]
pts[1] = [po.x + pj, po.y, po.z]
pts[2] = [po.x + pj, po.y+lb, po.z]
pts[3] = [po.x, po.y+lb, po.z]
face = @ent.add_face pts
face.reverse!
face.pushpull ti
gface = face.all_connected
group = @ent.add_group gface
end
def gbr_dinding
buat_faceXY @point1, 15.cm, 350.cm,300.cm
end
end # class Mouse Saya
unless file_loaded?(__FILE__)
# ============================================================
# MEMBUAT TOOLSBAR & MENU
# Membuat sajian & meletakannya pada sajian utama Plugins/Extensions
view_menu = UI.menu "Plugins"
# Menambah garis separator
view_menu.add_separator
# Membuat sub sajian di sajian utama "Plugins" dengan nama "Menu Plugin Saya"
@sub_menu = view_menu.add_submenu("Menu Plugin Saya")
# Membuat Toolbar menu
@ncep_toolbar = UI::Toolbar.new "Toolbar Saya"
# -------------------------------------------------------
# Prosedure/Fungsi ketika sajian atau toolbar di klik
def perintah
Sketchup::set_status_text "Ini yaitu status text saya"
UI.messagebox "Plugin Saya, Horee...sy sanggup menciptakan plugin.!!!."
end
# Membuat ikon perintah dan menetukan prosedure "perintah" sebagai aksi
@com1 = UI::Command.new("Basic1") {perintah}
# Buat ikon. Simpan di Folder ...Plugins/Folder_saya/
@com1.small_icon = "#{@pathRoot}/ikon16.png"
@com1.large_icon = "#{@pathRoot}/ikon32.png"
# Menampilkan tooltips ketika mpointer mouse sempurna berada di icon
@com1.tooltip = "Tool Tips Plugin Saya"
tb1 = @ncep_toolbar.add_item @com1
@it1 = @sub_menu.add_item("Plugin Pertama Saya") {perintah}
def perintah_dinding
Sketchup.status_text = "Silahkan ingin diletakan dimana dindingnya."
Sketchup.active_model.select_tool Mouse_saya.new
end
private
def reset_tool; @ip1.clear; end
def buat_faceXY (po, pj, lb,ti)
pts = []
pts[0] = [po.x, po.y, po.z]
pts[1] = [po.x + pj, po.y, po.z]
pts[2] = [po.x + pj, po.y+lb, po.z]
pts[3] = [po.x, po.y+lb, po.z]
face = @ent.add_face pts
face.reverse!
face.pushpull ti
gface = face.all_connected
group = @ent.add_group gface
end
def gbr_dinding
buat_faceXY @point1, 15.cm, 350.cm,300.cm
end
end # class Mouse Saya
unless file_loaded?(__FILE__)
# ============================================================
# MEMBUAT TOOLSBAR & MENU
# Membuat sajian & meletakannya pada sajian utama Plugins/Extensions
view_menu = UI.menu "Plugins"
# Menambah garis separator
view_menu.add_separator
# Membuat sub sajian di sajian utama "Plugins" dengan nama "Menu Plugin Saya"
@sub_menu = view_menu.add_submenu("Menu Plugin Saya")
# Membuat Toolbar menu
@ncep_toolbar = UI::Toolbar.new "Toolbar Saya"
# -------------------------------------------------------
# Prosedure/Fungsi ketika sajian atau toolbar di klik
def perintah
Sketchup::set_status_text "Ini yaitu status text saya"
UI.messagebox "Plugin Saya, Horee...sy sanggup menciptakan plugin.!!!."
end
# Membuat ikon perintah dan menetukan prosedure "perintah" sebagai aksi
@com1 = UI::Command.new("Basic1") {perintah}
# Buat ikon. Simpan di Folder ...Plugins/Folder_saya/
@com1.small_icon = "#{@pathRoot}/ikon16.png"
@com1.large_icon = "#{@pathRoot}/ikon32.png"
# Menampilkan tooltips ketika mpointer mouse sempurna berada di icon
@com1.tooltip = "Tool Tips Plugin Saya"
tb1 = @ncep_toolbar.add_item @com1
@it1 = @sub_menu.add_item("Plugin Pertama Saya") {perintah}
def perintah_dinding
Sketchup.status_text = "Silahkan ingin diletakan dimana dindingnya."
Sketchup.active_model.select_tool Mouse_saya.new
end
@com2 = UI::Command.new("Basic1") {perintah_dinding}
# Buat ikon dinding. Simpan di Folder ...Plugins/Folder_saya/
# Buat ikon dinding. Simpan di Folder ...Plugins/Folder_saya/
@com2.small_icon = "#{@pathRoot}/ikon_dinding16.png"
@com2.large_icon = "#{@pathRoot}/ikon_dinding32.png"
# Menampilkan tooltips ketika mpointer mouse sempurna berada di icon
@com2.tooltip = "Menggambar Dinding Saya"
tb2 = @ncep_toolbar.add_item @com2
@it2 = @sub_menu.add_item("Gambar Dinding") {perintah_dinding}
end # ulsess
@com2.tooltip = "Menggambar Dinding Saya"
tb2 = @ncep_toolbar.add_item @com2
@it2 = @sub_menu.add_item("Gambar Dinding") {perintah_dinding}
end # ulsess
0 Response to "Cara Menciptakan Plugin/Extension Sketchup - Bab 3: Tool Pointer Mouse"
Posting Komentar