Material, Color, Texture (Bài trước)
(Bài tiếp) Component

Layers - Các lớp trong SketchUp

Trong SketchUp các layer (lớp - hình học) biểu thị bởi lớp (class) Layer, trong giao diện SketchUp dùng hộp thoại Layer (mở từ menu Windows > Layers)

Mặc định có một layer tên là layer0. Từ đây bạn có thể tạo Layer mới, chuyển đổi layer hiện tại, ẩn - hiện các layer

Tạo Layer SketchUp bằng code Ruby

SketchUp chứa tất cả các layer trong một mảng, để lấy mảng này dùng code:

layer_array = Sketchup.active_model.layers

Có thể duyệt qua tất cả các layer, hiện thị thông tin như tên, hiện thị hay không ..

layer_array = Sketchup.active_model.layers
layer_array.each {
    |layer|
    puts "Tên: #{layer.name} - Màu: #{layer.color}  - Hiện thị #{layer.visible?}"

}

Để tạo layer mới dùng phương thức add của Layers với tham số là tên layer, layer mới tạo ra mặc định không phải layer kích hoạt, để kích hoạt nó (layer đang vẽ các đối tượng) thì gán nó với cho Model.active_layer=

# Tạo layer mới tên "My First Layer"
mylayer = Sketchup.active_model.layers.add "My First Layer"
# Thiết lập màu layer
mylayer.color = [0,0,128]
# Kích hoạt layer
model = Sketchup.active_model
model.active_layer = "My First Layer"

Groups - Các nhóm trong SketchUp

Các nhóm Group trong SU nó là tập hợp các Entity (Edge, Face, Group ...), khi nhóm các Entity vào có thể thực hiện đồng thời các thao tác trên nhiều đối tượng như Copy, Transformation.

Tạo và hủy nhóm

Để tạo nhóm dùng phương thức add_group(*entities) ⇒ Sketchup::Group của Entities.

# 19.group1.rb
# load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/19.group1.rb"
require 'sketchup.rb'
require 'extensions.rb'

def group_demo1
    ents = Sketchup.active_model.entities

    face = ents.add_face [0,0,0], [1,0,0], [1,1,0], [0,1,0]
    face.reverse!
    face.pushpull 1
    # Tạo Group - từ các Entity có kết nối với mặt face
    gr   = ents.add_group face.all_connected
    # Đặt tên Group
    gr.name = "Group Demo1"
end

Trong Group có thể lấy đối tượng Entities chứa các Entity của Group, bằng cách này khi thêm các Entity vào nó tự động thuộc về Group

# 20.group2.rb
# load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/20.group2.rb"
require 'sketchup.rb'
require 'extensions.rb'

def group_demo2
    ents = Sketchup.active_model.entities
    gr   = ents.add_group
    gr.name = "Group Demo2"
    entities_ingroup = gr.entities

    face = entities_ingroup.add_face [0,0,0], [1,0,0], [1,1,0], [0,1,0]
    face.reverse!
    face.pushpull 1
end

explode

Theo chiều ngược lại, có thể phân rã một group - các Entity trong Group không còn gắn kết lại với nhau, dùng explode để thực hiện điều này

group.explode

Cấu hình group

group.locked = true # trạng thái khóa: kích thước, hình dáng, vị trí không sửa đổi
group.name = "Tên Group"
group.description = "Mô tả về Group"

copy, transformation Group

Để sao chép một group thực hiện phương thức copy của nó, sau đó có thể thực hiện phương thức move! hoặc transform! để thay đổi vị trí:

group2 = group1.copy
tran = Geom::Transformation.translation [10, 0, 0]
    group2.transform! tran

Đăng ký nhận bài viết mới
Material, Color, Texture (Bài trước)
(Bài tiếp) Component