Ruby Script
Các file script chứa các lệnh để chạy chương trình, có thể dùng bất kỳ chương trình soạn thảo text nào để soạn, các file tạo ra có phần mở rộng .rb
. Để chạy script bạn phải nạp vào SketchUp, khi nạp vào từ cửa sổ nó sẽ thi hành từng lệnh viết trong file script.
Ví dụ sau, file script vẽ hình một ngôi sao:
01.star.rb=begin Vẽ ngôi sao năm cánh, bán kính ngôi sao r = 100.mm =end # Định nghĩa hàm chuyển độ sang radian def to_radian(degrees) degrees * Math::PI / 180 end r = 100.mm ents = Sketchup.active_model.entities pt1 = [r * Math.cos(to_radian(18)), r * Math.sin(to_radian(18)), 0] # góc 18 pt2 = [r * Math.cos(to_radian(90)), r * Math.sin(to_radian(90)), 0] # góc 90 pt3 = [r * Math.cos(to_radian(162)), r * Math.sin(to_radian(162)), 0] # góc 162 pt4 = [r * Math.cos(to_radian(225)), r * Math.sin(to_radian(225)), 0] # góc 225 pt5 = [r * Math.cos(to_radian(-45)), r * Math.sin(to_radian(-45)), 0] # góc -45 ents.add_line pt1, pt3 ents.add_line pt1, pt4 ents.add_line pt2, pt5 ents.add_line pt2, pt4 ents.add_line pt3, pt5
Ví dụ lưu file này ở đường dẫn: /Users/xuanthulab/Desktop/learn-ruby/sketchup/01.star.rb
Để nạo vào SketchUp từ Ruby Console+
thực hiện
load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/01.star.rb"
Cũng có thể copy vào thư mục Plugins của SketchUp rồi thực hiện lệnh ngắn gọn
load "01.star.rb"
Các Vector
Trong thiết kế với SketchUp, các Vector được dùng để xác định hướng, mỗi vector có tọa độ biểu diễn theo tọa độ điểm mút của nó trong xyz, ví dụ:
Các vector biểu diễn bởi mảng 3 tọa độ [x, y, z]
, nó xác định hướng mặt của hình. Ví dụ [0,0,1]
thì hình phẳng trong x-y có hướng mặt lên trên, nếu hướng [0,0,-1] thì hướng mặt xuống dưới.
Vẽ đường cong - Curve
Để vẽ đường cong (đường hình thành bởi nhiều đoạn thẳng Edge nối lại với nhau) dùng phương thức add_curve(*point)
của lớp Entities, tham số của phương thức là các điểm, mảng các điểm (cần tối thiểu 2 điểm), phương thức này trả về là mảng các Edge được tạo ra
# 02.curve.rb # load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/02.curve.rb" ents = Sketchup.active_model.entities p1 = [0,0,0] p2 = [1,1,0] p3 = [2,0,0] p4 = [3,-1,0] p5 = [4,0,0] ents.add_text(p1.inspect, p1) ents.add_text(p2.inspect, p2) ents.add_text(p3.inspect, p3) ents.add_text(p4.inspect, p4) ents.add_text(p5.inspect, p5) curve = ents.add_curve p1 p2 p3 p4 p5 curve.class # Array (kiểm tra kiểu trả về) curve.size # Số Edge tạo ra = 4
Vẽ đường tròn - Circle
Phương thức này của Entities
thêm một hình tròn với các tham số
center
- tọa độ tâm hình trònnormal
- vector pháp tuyến của mặt chứa hình trònradius
- bán kính cung trònnumsegs
- số phân đoạn (mặc đinh 24), nếu muốn đường tròn mịn hơn tăng số phân đoạn lên ví dụ 72, hình bên chia đường tròn thành 10 phân đoạn
# 03.circle.rb # load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/03.circle.rb" ents = Sketchup.active_model.entities c = [150.mm,150.mm,100.mm] # tâm n = [200.mm,200.mm,200.mm] # pháp tuyến r = 150.mm # bán kính s = 10 # số phân đoạn # ents.add_text(p5.inspect, p5) circle = ents.add_circle c, n, r, s normal = ents.add_line [0,0,0], n ents.add_text("Đường pháp tuyến", n, Geom::Vector3d.new(20.mm, 20.mm, 0)) ents.add_text("Tâm", c, [50.mm, 0.mm, 0])
Vẽ đa giác - Polygon
Đa giác sử dụng phương thức add_ngon
, phương thức này hoàn toàn giống với add_circle
# 04.polygon.rb # load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/04.polygon.rb" ents = Sketchup.active_model.entities normal = [0, 0, 1] # pháp tuyến, mặt các đường vuông góc z radius = 100.mm # Đa giác 8 cạnh ents.add_ngon [0, 0, 0], normal, radius, 8 # Hình tròn giác 8 cạnh ents.add_circle [250.mm, 0, 0], normal, radius, 8 # Đa giác 24 cạnh ents.add_ngon [500.mm, 0, 0], normal, radius # Hình tròn giác 24 cạnh ents.add_circle [750.mm, 0, 0], normal, radius
Tương đồng giữa add_circle và ad_ngon
Vẽ các cung tròn - Arc
Cung tròn tạo ra bởi phương thức add_arc
với các tham số:
center
: tâm cung trònzero_vec
: vector xác định góc khởi đầu của cung trònnormal
: pháp tuyến vuông góc với mặt chứa cung trònradius
: bán kínhstart_angle
: góc khởi đầu (tính từ zero_vec)end_angle
: góc kết thúc (tính từ zero_vec)num_segments
: tùy chọn, số phân đoạn cung tròn
# 05.arc.rb # load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/05.arc.rb" ents = Sketchup.active_model.entities center = [0,0,0] # tâm normal = [0, 0, 1] # pháp tuyến, mặt các đường vuông góc z radius = 100.mm start_angle = 0.degrees end_angle = 160.degrees zezo_vector = [110.mm,0,0] # lấy trục x làm gốc ents.add_arc center, zezo_vector, normal, radius, start_angle, end_angle, 20 ents.add_line [0,0,0], zezo_vector ents.add_text("Vecto gốc", zezo_vector, [50.mm, 0.mm, 0])