Duyệt qua các Entity (Bài trước)
(Bài tiếp) Layer, Group

Materials - Vật liệu

Các vật liệu cũng là các đối tượng trong SketchUp, để tìm hiểu hãy thực hiện các bước sau khi sử dụng SketchUp:

Bước 1: sử dụng công cụ Rectangle, tạo một mặt hình chữ nhật bất kỳ
Bước 2: chọn menu Window > Materials (cũng có thể sử dụng công cụ Paint), hộp thọai Material xuất hiện, có một điều khiển combobox, mỗi mục trong nó tương ứng với một nhóm các vật liệu khác nhau
Bước 3: từ combobox chọn mục Asphalt and Concrete, sau khi chọn một lưới các ô ảnh xuất hiện. Dịch chuột vào ô đầu tiên bạn có thể thấy dòng hiện thị tên của nó Asphalt New. Bấm chuột vào ô đó để chọn nó là vật liệu hiện tại.
Bước 4: chọn hình chữ nhật đã vẽ trong cửa sổ thiết kế. Vật liệu đã chọn sẽ được áp dụng cho toàn bộ bề mặt hình chữ nhật này.
Bước 5: trong hộp thoại, từ combobox chọn Colors-Named, các vật liệu mục này dựa vào các màu, ví dụ màu SeaGreen
Bước 6: chọn một màu nào đó, để chuyển màu hiện tại, bấm chọn mặt chữ nhật - nó sẽ áp dụng màu thay cho vật liệu cũ

Tạo vật liệu bằng Code

Các vật liệu Material được lưu trữ trong một đối tượng lớp Materials, đối tượng này lấy từ Sketchup.active_model.materials, để thêm một vật liệu mới dùng phương thức add với tên vật liệu cần tạo ra:

# Tạo vật liệu mới tên ABC
mats    = Sketchup.active_model.materials       # lấy đối tượng lớp Materials
abc_mat = mats.add "ABC"                        # thêm vật liệu mới

mats.current = "ABC"                            # kích hoạt vật liệu là hiện tại
                                                # hoặc mats.current = abc_mat
# 18.material.rb
# load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/18.material.rb"
require 'sketchup.rb'
require 'extensions.rb'

# Hàm tạo ra vật liệu mới với tên name
def create_matabc(name = "ABC")
    mats = Sketchup.active_model.materials
    new_mat = mats.find {|m| m.name == name}
    if (new_mat != nil)
        return new_mat
    end
    # Tạo mat mới
    new_mat = mats.add name
    # Thiết lập màu là đỏ
    # https://ruby.sketchup.com/Sketchup/Color.html
    new_mat.color = 'red'
    new_mat
end

def crete_face
    ents = Sketchup.active_model.entities

    p1 = [0, 1, 0]
    p2 = [-0.951, 0.309, 0]
    p3 = [-0.588, -0.809, 0]
    p4 = [ 0.588, -0.809, 0]
    p5 = [ 0.951, 0.309, 0]

    # tạo face
    face = ents.add_face p1, p2, p3, p4, p5
    face.reverse!

    # gọi phương thức tạo mat
    matabc = create_matabc

    # Gán material vào face
    face.material =  matabc
end

Lớp Color - Màu sắc

Trong SketchUp có lớp biểu thị về màu sắc là Color, có thể tạo ra đối tượng lớp Color từ tên của màu trong SketchUp hoặc từ việc pha trộn các thành phần màu sắc RGB (red, green, blue). Ví dụ tạo màu đỏ:

Sketchup::Color.new [255,0,0]
# [0,0,0] màu đen
# [255,255,255] màu trắng ...

Cũng có thể khởi tạo từ tên màu sắc ví dụ các tên: Black, Blue, Green, White ... để liệt kê các tên này dùng Sketchup::Color.names, ví dụ:

Sketchup::Color.new "Navy"

Hệ thống màu tự động phát sinh khi gán một cách tương ứng, ví dụ:

purple_mat = Sketchup.active_model.materials.add "Purple"  # Tạo vật liệu có tên Purple
purple_mat.color = [128, 0, 128]                           # Gán màu vào vật liệu, màu tự sinh với mảng 3 tham số
purple_group.material = purple_mat                         # Gán vật liệu cho một Group

Thậm chí có thể thi hành lệnh như sau:

purple_group.material = [128, 0, 128]

Lệnh trên tạo ra một vật liệu mới, vật liệu đó được thiết lập màu mới (màu này có RGB là 128,0,128)

Có thể trộn các màu để ra màu mới bằng Sketchup::Color.blend

blue    = Sketchup::Color.new 0, 0, 255
red     = Sketchup::Color.new 255, 0, 0
purple1 = Sketchup::Color.blend blue, red

Texture

Texture là các đối tượng tô bề mặt nó như giấy dán tường, để tạo ra một đối tượng Texture dùng phương thức texture của lớp Material, với tham số là file ảnh làm Texture.

mats = Sketchup.active_model.materials
new_mat = mats.add "My Texture"
new_mat.texture = "đường dẫn đến file ảnh"
text = new_mat.texture

Đăng ký nhận bài viết mới
Duyệt qua các Entity (Bài trước)
(Bài tiếp) Layer, Group