[REVIT API Task] Tạo Addin RebarBeam - Phần 2: Kích thước hình học

[REVIT API TASK] TẠO ADD-IN REBAR BEAM – TẠO THÉP DẦM TỰ ĐỘNG (PHẦN 2: TRUY XUẤT KÍCH THƯỚC HÌNH HỌC)

Tiếp tục series add-in Rebar Beam, ở phần 2 mình sẽ hướng dẫn truy xuất kích thước hình học của đối tượng dầm.

Các bài còn lại trong series:

Phần 1: Chọn đối tượng

Phần 3: Truy xuất trục tọa độ

Phần 4: Truy xuất tọa độ tiết diện

Khái niệm:

Thông tin hình học của dầm cần truy xuất gồm 2 phần: kích thước hình học và hệ tọa độ địa phương của dầm.

Kích thước hình học:

Width, Height, Length đại hiện cho chiều rộng, chiều cao và chiều dài của dầm.

Hệ tọa độ địa phương:

Kiểu dữ liệu XYZ chứa 3 giá trị X, Y, Z đại diện cho giá trị tọa độ một điểm, hoặc xác định một vector chỉ phương trong không gian ba chiều.

Origin: Gốc tọa độ của dầm

VectorX: Vector chỉ phương từ gốc tọa độ, song song với chiều dài dầm, có chiều dài là 1 đơn vị.

VectorY: Vector chỉ phương từ gốc tọa độ, song song với chiều rộng dầm, có chiều dài là 1 đơn vị.

VectorZ: Vector chỉ phương từ gốc tọa độ, song song với chiều cao dầm, có chiều dài là 1 đơn vị.

Ở phần 2.1, ta tìm hiểu cách để truy xuất kích thước hình học đối tượng.

Truy xuất kích thước

ElementType

Mỗi đối tượng thể hiện trong mô hình Revit đều tồn tại kiểu của chúng, trong Revit API định nghĩa kiểu dữ liệu ElementType là lớp con của kiểu dữ liệu Element. Ví dụ: dầm BVH1 thuộc loại 300x500mm, dầm BVH2 thuộc loại 200x600mm…

Ta dùng phương thức Element.GetTypeId() để lấy giá trị ElementId định nghĩa ElementType tương ứng. Sau đó dùng phương thức Document.GetElement() để lấy giá trị ElementType.

Parameter

Thông tin ElementType được lưu trữ trong Parameter. Parameter là kiểu dữ liệu định nghĩa một tham biến thiết lập thông tin cũng như hình ảnh hiển thị của Element.

Thông tin chiều rộng, chiều cao dầm lưu trữ trong tham biến b, h trong bảng Parameter trong ElementType, giá trị kiểu số thực (double). (Lưu ý: tên tham biến có thể khác nhau tùy vào family dầm được định nghĩa)

Dùng phương thức Element.LookupParameter(), truyền vào tên tham biến để truy xuất Parameter tương ứng. Sau đó phương thức Parameter.AsDouble() để lấy giá trị của Parameter thuộc kiểu số thực.

Thông tin chiều dài dầm lưu trữ trong tham biến Length trong bảng Parameter trong chính đối tượng Element, giá trị kiểu số thực (double). (Lưu ý: tên tham biến có thể khác nhau tùy vào family dầm được định nghĩa)

Lấy thông tin chiều dài tương tự như lấy chiều rộng và chiều cao của dầm.

Kết quả

Ta dùng phương thức TaskDialog.Show() để hiện thị hộp thoại thông tin đối tượng ra màn hình.

Chuyển đổi đơn vị

Chạy khá ổn rồi nhỉ, nhưng giá trị kích thước hình như có vấn đề thì phải?

Nguyên nhân là Revit sử dụng hệ đo lường Imperial (inch, feet, ounce, pounch…), được sử dụng khá phổ biến ở Mỹ khác với TCVN sử dụng hệ đo lượng SI (millimeter, meter, kilogram…).

Để giá trị trên giao diện người dùng theo đúng hệ đo lường được chọn, Revit đã sử dụng một lệnh chuyển đổi đơn vị và hiển thị giá trị. Nhưng thực chất giá trị thực của đối tượng vẫn được lưu trữ theo hệ đo lượng Imperial.

Để hiển thị đúng giá trị, ta có thể sử dụng một biến để chứa hệ số chuyển đổi (search google: feet to millimeter là ra nhé các bạn). Ta nhân chiều rộng, chiều cao, chiều dài dầm với hệ số chuyển đổi để ra giá trị đơn vị millimeter.

Khá chuẩn phải không nào? Các bạn nhớ theo dõi phần tiếp theo của series nhé, phần tiếp theo mình sẽ hướng dẫn cách truy xuất hệ tọa độ địa phương của dầm.

Đoạn code hoàn chỉnh:

 

Bài viết liên quan