Transformation (Bài trước)

SketchUp có hai công cụ để tạo văn bản text: Công cụ Text và công cụ 3-D Text. Công cụ Text để tạo các ghi chú, loại văn bản này thường kèm theo mũi tên chỉ, khi bạn tạo văn bản 2-D bằng code, kết quả là đối tượng Text trả về.

Đối với loại văn bản 3-D, code viết phức tạp hơn, cần chỉ ra các tham số như font chữ, cỡ chữ và căn lề. 3D text không trả về đối tượng Text

2D Text - Văn bản 2D

Đối tượng lớp Text được tạo ra bởi phương thức add_text trong lớp Entities. Để thêm text cần 2 tham số, gồm nội dung chuỗi text và tọa độ bắt đầu của văn bản. Ví dụ hiện thị dòng text "xin chào" ở tọa độ [100.mm, 100.mm, 100.mm]

ents = Sketchup.active_model.entities
hello = ents.add_text "xin chào", [100.mm, 100.mm, 100.mm]

Text luôn định vị về hướng người nhìn, cỡ chữ - font chữ thiết lập mặc định ở hộp thoại Windows > Model Info tại mục Screen Text, tại mỗi đối tượng Text cũng có thể thiết lập riệng ở hộp thoại Entity Info

Khi thêm text cũng có thể một mũi tên được gọi là leader, khi gọi add_text cho thêm tham số thứ 3, là vector từ mũi tên đến dòng chữ. Ví dụ, vector [4,4,0] chỉ vào điểm [0,0,0] - gốc của vector bắt đầu nội dung dòng chũ

ents = Sketchup.active_model.entities
xinchao = ents.add_text "Xin chào!", [0, 0, 0], [4, 4, 0]

Sau khi có đối tượng Text, có thể gọi các phương thức từ đối tượng đó như:

  • text= thiết lập nội dung văn bản
  • point= chỉ ra điểm bắt đầu của dòng chữ hoặc là điểm cuối của mũi tên nếu có leader
  • vector= khoảng cách từ điểm chỉ đến bắt đầu dòng text
  • line_weight= độ dày của đường leader
  • arrow_type= cấu hình hiện thị mũi tên. 0 không mũi tên, 2 điểm, 3 - mũi tên đóng, 4 - mũi tên mở
  • leader_type= cấu hình hiện thị leader. 0 ẩn, 1 chế độ view-based (cố định hướng nhìn), 2 chế độ pushpin (quay theo model)
ents = Sketchup.active_model.entities
text = ents.add_text "Xyz!", [1, 1, 0], [3, 0, 0]
text.text = "Abc!"
text.leader_type = 2 # Pushpin-style leader
text.line_weight = 4
text.arrow_type =  2 # Dotted arrow

3D Text - Văn bản 3D

Không có lớp (class) nào biểu diễn 3D Text, để tạo 3D Text dùng phương thức add_3d_text của lớp Entities, phương thức này cần tới 10 tham số:

add_3d_text(string, alignment, font, is_bold = false,
    is_italic = false, letter_height = 1.0, tolerance = 0.0, z = 0.0, is_filled = true,
    extrusion = 0.0) ⇒ Boolean
  1. string nội dung text
  2. alignment căn lề TextAlignRight, TextAlignLeft, TextAlignCenter
  3. font - tên font chữ (Times, Arial ...)
  4. is_bold - true chữ đậm
  5. is_italic - true chữ nghiêng
  6. letter_height - chiều cao chữ
  7. tolerance
  8. z kích thước theo chiều z
  9. filled tô chữ
  10. extrusion đẩy chữ

Khi tạo ra 3D Text, thực tế nó tạo ra nhiều Face và Edge. 3D Text tạo ra nằm trên mặt X-Y, với tọa độ thiết lập ở z. Chỉ có thể thay đổi vị trí của 3D Text sau khi tạo ra bằng cách sử dụng transform_entities

# 14.3dtext.rb
# load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/14.3dtext.rb"

require 'sketchup.rb'
require 'extensions.rb'

ents = Sketchup.active_model.entities
# thêm group
group = ents.add_group

# lấy entities trong group
ents  = group.entities

string1 = "3D Text căn lề trái, font Times New Roman,\n
 cao 10.mm, dày 1.mm, có tolerance of 0.mm."

ents.add_3d_text string1, TextAlignLeft, "Times", false, false, 10.mm, 0.mm, 0, true, 1.mm

ents.transform_entities [100.mm, 200.mm, 50.mm], group

Image - Ảnh trong SketchUp

Hình ảnh Image, được tạo ra với phương thức add_image trong Entities, nó nạp ảnh từ ngoài vào Model:

add_image(filename, point, width, height = 0.0) ⇒ Sketchup::Image?
  • filename - tên file ảnh nạp vào (hỗ trợ các định dạng *.jpg, *.png, *.bmp, *.tga, and *.bmp )
  • point - tọa độ điểm sẽ chèn ảnh
  • width - thiết lập chiều rộng ảnh
  • height - mặc định là 0.0 (chiều cao tự động theo tỷ lệ ảnh) - chiều cao ảnh nếu muốn thiết lập.

Phương thức trả về đối tượng Image, ảnh chèn vào nằm trên mặt song song với X-Y, sau khi chèn có thể biến đổi bởi Transformation. Ví dụ chèn ảnh có ở đườn dẫn /Users/xuanthulab/Desktop/logo.png

# 15.image.rb
# load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/15.image.rb"

require 'sketchup.rb'
require 'extensions.rb'


model = Sketchup.active_model
entities = model.active_entities
# Điểm chèn ảnh
point = Geom::Point3d.new 10,20,30
imgpath = "/Users/xuanthulab/Desktop/logo.png"
# Chèn ảnh
image = entities.add_image imgpath, point, 300
if (image)
  # Quay 90 độ quanh trục X
  tr = Geom::Transformation.new [0, 0, 0], [1, 0, 0], 90.degrees
  entities.transform_entities tr, image
  UI.messagebox image

else
  UI.messagebox "Không chèn được"
end

Có thể dùng phương thức Sketchup.find_support_file để lấy đường dẫn của file trong các thư mục cài đặt phần mềm SketchUp, ví dụ - lấy đường dẫn đầy đủ có của file help.jpg trong thư mục Plugins của SketchUp

help_file = Sketchup.find_support_file("help.jpg", "Plugins/")

Đăng ký nhận bài viết mới
Transformation (Bài trước)