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