- Ba cấu trúc cơ bản
- Module Sketchup
- Lớp Model
- Lớp Entities
- Lớp Entity và Drawingelement
- Lớp Entity
- Lớp Drawingelement
- Lớp Edge
Sketchup, Model, Entities ba cấu trúc cơ bản của SketchUp API
Hầu như mọi script SketchUp đều bắt đầu bởi truy cập đến ba cấu trúc dữ liệu cơ bản là: Sketchup, Model, Entities.
Module Sketchup
Hầu hết các script đều gọi các phương thức có trong module này, module này cũng cung cấp các thuộc tính liên quan đến ứng dụng SketchUp, để xem sự hoạt động của nó hãy mở cửa sổ Ruby Console (Windows > Ruby Console) và thi hành các lệnh:
Có thể cài đặt Ruby Console+ từ plugin Ruby Console+ để có cửa sổ Ruby Console tiện dụng hơn, mở bằng menu: Windows > Ruby Console+
# lấy ngôn ngữ Sketchup.os_language # Môi trường làm việc của Designer Sketchup.get_locale # Liệt kê danh sách các phương thức Sketchup.methods
Phương thức quan trong nhất trong module Sketchup này là active_model
, nó trả về đối tượng Model hiện tại đang làm việc trong Sketchup.
# Lấy Model hiện tại, lưu vào biến mode mod = Sketchup.active_model
Từ Model lấy được sẽ thực hiện các tương tác với Model ở các phần sau
Các phương thức của modul này tìm hiểu dần từ Sketchup
Đối tượng lớp Model
Sketchup là modul biểu diễn ứng dụng SketchUp, còn Model biểu diễn một file cụ thể (.skp
),
các phương thức trong Model cung cấp các thông tin thiết kế hiện tại, ví dụ kiểm tra xem file có bị sửa đổi từ khi lần lưu cuối với phương thức modified
mod = Sketchup.active_model mod.modified?
Có nhiều phương thức của Model, sẽ tìm hiểu dần trong danh sách Model method
Lớp Model sử dụng để truy cập vào các thành phần mà nó chứa các đối tượng thiết kế như: Entity, Layer, Definition, Material, OptionManager, Page tương ứng có các phương thức
Các phương thức lấy đối tượng chứa dữ liệu trong Model:
entities
: trả về đối tượngEntities
nó chứa các hình thiết kếlayers
: trả về đối tượng lớpLayers
là các layer trog file SketchUp hiện tạidefinitions
: trả về đối tượng lớpComponentDefinitions
lưu trữ các định nghĩa component.materials
: trả về đối tượng lớpMaterials
quản lý các vật liệu trong file thiết kế hiện tại.options
: trả về đối tượng lớpOptionManager
cung cấp khả năng truy cập tới nhiềuOptionsProviders
pages
: trả về đối tượng lớpPages
chứa các trang trong file hiện tại
Đối tượng lớp Entities
Ở thời điểm này muốn vẽ các hành cơ bản của SketchUp cần lấy được đối tượng chứa các Entity là Entities
ents = Sketchup.active_model.entities
Mọi đối tượng hình học trong SketchUp được biểu diễn bởi một đối tượng Entity hay một lớp kế thừa, gồm có các line (đường), face (mặt), image (ảnh), text (chữ), group (nhóm) và component. Đối tượng Entities phục vụ để quản lý các đối tượng này với các mục đích:
- Thêm vào một Entity mới
- Di chuyển, thu - phóng, quay, xóa các đối tượng Entity
- Lưu trữ các Entity trong một mảng để có thể truy cập bởi chỉ số
Các phương thức quan trong đầu tiên là thêm Entity mới vào với tiền tố add_
add_line
- thêm một đối tượng Edge (đường biên) từ 2 điểmentities = Sketchup.active_model.active_entities line = entities.add_line [0,0,0], [10,10,0]
add_edges
- thêm mảng các Edge từ chuỗi các điểmentities = Sketchup.active_model.active_entities line = entities.add_line [0,0,0], [10,10,0], [10,0,0]
add_circle
- thêm mảng các Edge biểu diễn một hình trònentities = Sketchup.active_model.active_entities soduong = 10 # số đường, mặc định 24 tam = [0,0,0] # tâm hình tròn phap_tuyen = 0,0,1 # phương pháp tuyến (vuông góc mới mặt) bankinh = 4 # bán kính edges = entities.add_circle tam, phap_tuyen, bankinh, soduong
add_ngon
- thêm các Edge kết hợp tạo ra một đa giác (polygon) - sử dụng tương tự thêm circleadd_face
- tạo ra một Face (mặt) từ các biên hoặc điểmdepth = 1 width = 2 entities = Sketchup.active_model.active_entities pts = [] pts[0] = [0, 0, 0] pts[1] = [width, 0, 0] pts[2] = [width, depth, 0] face = entities.add_face(pts)
add_text
- thêm nhãntext = entities.add_text "Xin chào", [1,1,1]
Lớp Entity và Drawingelement
Lớp Entity
và các lớp kế thừa nó có sơ đồ tóm tắt như hình vẽ, trong đó lưu ý hai lớp chính là Drawingelement
và Entity
Lớp Entity
Entity là lớp cơ sơ trong cây kế thừa ở trên, cung cấp các phương thức chung cho các lớp con kế thừa nó, trong đó có các phương thức:
entityID
: trả về định danh (tên) duy nhất của Entitytypename
: xác định kiểu hình học của Entity (như Edge, Face, ...)valid?
/deleted?
: xác định xem Entity còn có thể truy cập (chưa bị xóa)model
: trả về Model của đối tượngattribute_dictionaries
: truy cập thông tin định nghĩa bởi người dùng trên Entity- Ngoài ra mỗi đối tượng Entity có một hay nhiều đối tượng lớp EntityObserver liên kết với nó, vấn đề này thảo luận các các phần sau
Ví dụ:
test_line = Sketchup.active_model.entities.add_line [0,0,0], [1,1,1] test_line.typename #Edge test_line.entityID #18310
Lớp Drawingelement
Lớp Drawingelement là lớp cha cho các lớp Edge, Face, Group, Image, Text, ComponentDefinition, ComponentInstance. Nhiều phương thức trong nó điều khiển cách mà các phần tử hiện thị, các tính chất, điều khiển phần tử hiện thị hay ẩn (tương tự cách thức hoạt động của hộp thoại Entity Info của SketchUp) ...
Lớp Drawingelement cung cấp một phương thức hữu dụng bounds
, trả về đối tượng BoundingBox
. Nó biểu diễn khối hộp nhỏ chất bọc lấy đối tượng Drawingelement có các mặt của nó căn thẳng với trục x, y, z.
new_line = Sketchup.active_model.entities.add_line [0,0,0], [2,2,5] box = new_line.bounds box.center # Tâm box.diagonal # Đường kính
BoundingBox tiện dụng khi xác định xem người dùng bấm vào hình, ngay khi có BoundingBox bạ có thể so sánh kích thước của nó với vị trí bấm chuột.
Edge
Edge biểu diễn đường giữa hai điểm, nó kế thừa Drawingelement. Edge được tạo ra bằng phương thức add_line
của Entity
.
Sketchup.active_model.entities.add_line [5, 0, 0], [10, 0, 0]
Các phương thức của Edge hầu hết chia làm hai loại: các phương thức cấu hình hiện thị Edge và các phương thức truy cập kết nối tới Edge.
Các phương thức điều khiển hiển thị nó tác động đến cách hiện thị Edge trong cửa sổ thiết kế. Ngoài phương thức hidden
cung cấp bởi Drawingelement, Edge cung cấp phương thức soft
và smooth
. Nhớ điều quan trọng khác nhau giữa đường ẩn (hidden) và smooth là: đường smooth có sự kết hợp tương ứng giữa mặt và đường thành một mặt, trong khi hidden thì không thay đổi các mặt.
Xem thêm: Thuộc tính smooth, soft của Edge
Trong nhóm thứ hai, phương thức all_connected
trả về tất cả các đối tượng Entity kết nối với Edge, tương tự phương thức faces
trả về tất cả các đối tượng Face nối với đường Edge.
Trong SketchUp, các điểm cuối của Edge được biểu diễn bởi đối tượng Vertex
.
Edge có các phương thức tương tác với nó:
vertices
: trả về các đối tượngVertex
củaEdge
start/end
: trả về Vertext điểm đầu/cuốiother_vertex(vertex1)
: trả về Vertex đối xứng vertex1used_by?
: xác đính xem một Vertex hoặc Face được sử dụng bởi Edge không
Hai phương thức length
và split
không thuộc hai nhóm trên: phương thức length
trả về chiều dài. Phương thức split(position)
phân chi một Edge thành các Edge nhỏ độc lập, tham số positon là số thự 0 - 1 hoặc một điểm thuộc nằm trên đường.
line = Sketchup.active_model.entities.add_line [0, 0, 0], [1, 1, 0] line.length # 1.4142135623730951 line.start.position # Point3d(0, 0, 0) line.end.position # Point3d(1, 1, 0) line.split(0.5) # chia đôi