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ảnpoint=
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 textline_weight=
độ dày của đường leaderarrow_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
string
nội dung textalignment
căn lề TextAlignRight, TextAlignLeft, TextAlignCenterfont
- tên font chữ (Times, Arial ...)is_bold
- true chữ đậmis_italic
- true chữ nghiêngletter_height
- chiều cao chữtolerance
z
kích thước theo chiều zfilled
tô chữ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 ảnhwidth
- thiết lập chiều rộng ảnhheight
- 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/")