Component (Bài trước)
(Bài tiếp) SelectionObserver

Một thuộc tính (attribute) là đối tượng dữ liệu tùy chọn thêm, nó liên kết với một Entity. Dữ liệu này có thể thuộc bất kỳ kiểu nào, thuộc tính như là phần tử của mảng liên kết, map, dictionary: mỗi thuộc tính có tên (gọi là key) và dữ liệu của nó (value). Xem cấu trúc dữ liệu này tại Bảng băm Ruby

Các thuộc tính được đưa vào Entity với cấu trúc dữ liệu gồm:

  • Các Entity có AttributeDictionaries là cấu trúc dữ liệu mảng hash chứa tập hợp các AttributeDictionary
  • AttributeDictionary là cấu trúc dữ liệu mảng hash, chứa các phần tử - mà mỗi phần tử có key/value chính là thuộc tính

Các phương thức làm việc với Attribute của Entity:

Phương thức Diễn giải
set_attribute set_attribute(dict_name, key, value) ⇒ Object
Thêm một thuộc tính vào Entity
  • dict_name - chuỗi là tên Dictionary sẽ lưu thuộc tính
  • key - chuỗi là key của thuộc tính
  • value - là một Object tương ứng với giá trị thuộc tính
Ví dụ, xây dựng phương thức set_attr thiết lập thuộc tính cho phần tử chọn đầu tiên
# 22.set_attr.rb
# load "/Users/xuanthulab/Desktop/learn-ruby/sketchup/22.set_attr.rb"
require 'sketchup.rb'
require 'extensions.rb'

def set_attr(nameattr, valueattr, dictname = "mydic")
    ents = Sketchup.active_model.entities
    # @type [Sketchup::Entity]
    ent  = Sketchup.active_model.selection[0] # lấy phần tử chọn đầu tiên
    if ent
        ent.set_attribute dictname, nameattr, valueattr
        puts "Đã thêm Attribute cho #{ent.to_s}"
    else
        puts "Không có đối tượng nào"
    end
end
Để kiểm tra, chọn các phần tử và thi hành lệnh set_attr "abc", "1000" nó sẽ thêm thuộc tính cho phần tử chọn đầu tiên nếu có, thuộc tính tên abc vào Dictionary có tên mydic, giá trị thuộc tính là 1000
get_attribute get_attribute(dict_name, key, default_value = nil) ⇒ Object
Lấy giá trị thuộc tính, các tham số của phương thức là:
  • dict_name tên của Dictionary lưu thuộc tính
  • key chuỗi key
  • default_value mặc định là nil, giá trị này trả về nếu nó không tìm thấy
# vẽ một đường (tạo Entity)
model = Sketchup.active_model
entities = model.active_entities
edge = entities.add_line([0, 0, 0], [9, 9, 9])

# Đọc thuộc tính có tên MyProperty trong dictionary MyExtention,
# nếu không thấy nó trả về giá trị 42
value = edge.get_attribute("MyExtension", "MyProperty", 42)
attribute_dictionaries attribute_dictionaries ⇒Sketchup::AttributeDictionaries?
phương thức lấy AttributeDictionaries chứa các AttributeDictionary trong Entity
attribute_dictionary attribute_dictionary(name, create = false) ⇒ Sketchup::AttributeDictionary?
Lấy hoặc tạo AttributeDictionary

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