Plugin trong SketchUp
Nếu muốn mở rộng khả năng của SketchUp, bạn thường tìm các thành phần thêm vào gọi là plugin, các plugin phong phú trên nhiều website, có cái miễn phí có cái không. Thông thường để cài đặt bạn copy các Script viết bằng Ruby vào thư mục plugin của SketchUp hoặc cài đặt thông qua Extension Manager.
Các Plugin thực tế là các file script ruby với:
- Mã viết đảm bảo chuẩn code Ruby
- Các Plugin viết không nên can thiệp vào tác vụ thông thường của SketchUp hay Plugin khác
- Các phương thức của Plugin nên định nghĩa trong các module để tránh xung đột về tên
- Trước khi khởi chạy plugin bạn nên có thao tác kiểm tra các thành phần của nó đã nạp
- Các plugin nên lưu dưới dạng text chia nhỏ trong nhiều file nguồn
- Plugin nên chạy được trên mọi hệ điều hành
Hỗ trợ phát triển Plugin, SketchUp cung cấp Plugin hỗ trợ như sketchup.rb, langhandeler.rb
sketchup.rb
Có một số phương thức như:
inputboxtạo hộp thoại (giống UI.inputbox)add_separator_to_menurequire_allnạp các filefile_loadedthêm file vào mảng của pluginfile_loaded?kiểm tra file có trong mảng của plugin
Kiểm tra file nạp chưa đảm bảo nó chỉ nạp một lần, ví dụ tronng file example_plugin.rb:
require "sketchup.rb"
..
if( not file_loaded? "example_plugin.rb" )
..các code..
file_loaded "example_plugin.rb"
end
View trong SketchUp
View biểu diễn cửa sổ thiết kế, mỗi View cung có một Camera là cách nhìn của người thiết kế. Để truy cập lấy đối tượng View thực hiện như sau:
view = Sketchup.active_model.active_view
Cũng có thể vẽ trong view các hình bằng các phương thức như draw_line, draw_polyline ... tuy nhiên cần gọi chúng ở đối tượng view trong Tool.draw
Ngay khi có View, có thể thực hiện các tác vụ như:
- Cung cấp thoonng tin điểm ảnh pixel của cửa sổ hiện tại
- Thu phóng
- Vẽ hình cho Tool
- Tương tác chuyển động
Thông tin Pixel
Thông tin liên quan đến pixel có các phương thức
vpheight: trả về chiều cao cửa sổ (đơn vị pixel)vpwidthlấy độ rộng cửa sổcornerlấy tọa một góc cửa sổ (0 góc trên trái, 1 góc trên phải, 2 dưới trái và 3 trên phải)centerlấy tọa độ tâm màn hìnhscreen_coordslấy tọa độ điểm trên màn hình của một điểm 3Dpixels_to_modelkích thước điểm trong model chuyển sang view
# 26.view.rb # load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/26.view.rb" require 'sketchup.rb' require 'extensions.rb' view = Sketchup.active_model.active_view # In ra kích thước Window h = view.vpheight.to_s; w = view.vpwidth.to_s puts "Kích thước: " + w + ", " + h # Tọa của Gốc Model khi chuyển vào View origin = view.screen_coords [0,0,0] puts "Origin: " + origin[0].to_f.to_s + ", " + origin[1].to_f.to_s # Xác định 50 pixel trong View tương ứng với độ dài bao nhiêu trong Model size = view.pixels_to_model 50, [0, 0, 0] puts "Size of a 50-pixel line at the origin: " + size.to_s
Field Of View (FOV) - Độ rộng quan sát
Có các phương thức của View để chỉnh quản sát:
zoom_extentsthực hiện quan sát toàn bộ Entityzoomthu phóng, tham số có thể là Entity, Selection, hệ số tỷ lệfield_of_viewthiết lập độ gần xa (tiêu cự) - tham số là góc (độ rộng), gọiinvalidatesau khi thiết lập
Toolbar - Các thanh công cụ
Các thanh công cụ có kiểu Toolbar, danh sách các công cụ lấy bằng phương thức UI::toolbar_names, mỗi thanh công cụ có một chuỗi tên, có thể lấy đối tượng này theo tên, ví dụ lấy toolbar có tên GettingStarted:
gs_bar = UI::toolbar "GettingStarted"
Nguyên tắc tạo ra Toolbar mới khá giống menu
# Tạo một Command
basic_cmd = UI::Command.new("Basic") {
UI.messagebox "Hello from the basic command!"
}
basic_cmd.set_validation_proc {
true ? MF_ENABLED : MF_GRAYED
}
# Thiết lập Icon
basic_cmd.small_icon = "basic_small.gif"
basic_cmd.large_icon = "basic_large.gif"
basic_cmd.tooltip = "Thông tin thêm ..."
# TẠO Toolbar
basic_toolbar = UI::Toolbar.new "Basic"
basic_toolbar.add_item basic_cmd
# Hiện thị
basic_toolbar.show
