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ư:
inputbox
tạo hộp thoại (giống UI.inputbox)add_separator_to_menu
require_all
nạp các filefile_loaded
thê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)vpwidth
lấy độ rộng cửa sổcorner
lấ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)center
lấy tọa độ tâm màn hìnhscreen_coords
lấy tọa độ điểm trên màn hình của một điểm 3Dpixels_to_model
kí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_extents
thực hiện quan sát toàn bộ Entityzoom
thu phóng, tham số có thể là Entity, Selection, hệ số tỷ lệfield_of_view
thiết lập độ gần xa (tiêu cự) - tham số là góc (độ rộng), gọiinvalidate
sau 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