Menu, Command (Bài trước)
(Bài tiếp) Tool

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 file
  • file_loaded thêm file vào mảng của plugin
  • file_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ư:

  1. Cung cấp thoonng tin điểm ảnh pixel của cửa sổ hiện tại
  2. Thu phóng
  3. Vẽ hình cho Tool
  4. 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

  1. vpheight: trả về chiều cao cửa sổ (đơn vị pixel)
  2. vpwidth lấy độ rộng cửa sổ
  3. 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)
  4. center lấy tọa độ tâm màn hình
  5. screen_coords lấy tọa độ điểm trên màn hình của một điểm 3D
  6. pixels_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ộ Entity
  • zoom 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ọi invalidate 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

Đăng ký nhận bài viết mới
Menu, Command (Bài trước)
(Bài tiếp) Tool