Chia sẽ BCDD lên mạng xã hội nhé !

Đặt vấn đề và cách giải quyết

Trong quá trình làm hồ sơ bản vẽ trong Revit sẽ có lúc chúng ta có nhu cầu đổi tag type hàng loạt cho một số đối tượng cụ thể. Thường thì chúng ta sẽ phải chọn từng tag hoặc nhiều tags bằng cách nhấn phím Ctrl hoặc dùng lệnh Match trong Revit. Tuy nhiên cả 3 cách làm trên chỉ phù hợp cho các dự án vừa và nhỏ. Còn đối với các dự án lớn có cả ngàn đối tượng cần được đổi tag thì sẽ hợp lý hơn nếu chúng ta có hướng làm tiết kiệm thời gian hơn. BCDD sẽ trình bày ngắn gọn cách làm đó bằng Dynamo.

Tổng quan: thường thì khi đi đổi tag chúng ta sẽ đổi tag cho một category cụ thể chính vì thế mà BCDD sẽ phải lọc ra tag của một category mong muốn từ bản vẽ. Sau đó là lấy được host của các tags đó, từ đây BCDD dễ dàng lấy được các thuộc tính của các đối tượng để tiếp tục lọc ra những đối tượng mong muốn để rồi từ đó chỉ đổi tag type cho các đối tượng này.

Cụ thể: ở mặt bằng phía trên BCDD muốn đi đổi tag type cho các dầm kết cấu có type là B400 từ kiểu tag “có box” về standard như của các dầm B600.

  • Giả sử trên mặt bằng có rất nhiều tag type của nhiều categories khác nhau nên BCDD sẽ phải chỉ chọn beam tags mà không lẫn với column tags, wall tags hay floor tags…
  • Sau đó từ các beam tags này BCDD lấy được các host tương ứng (chính là các beams trong trường hợp này).
  • Có các beams rồi thì lấy được type mark của nó.
  • Có type mark rồi thì lọc ra những type marks có giá trị là B400
  • Từ đó chỉ lọc ra những beams có type mark là B400.
  • Lúc này thì chúng ta dễ dàng lọc ra những tags có giá trị B400 để tiến hành đổi type.

Hướng dẫn chi tiết

Dynamo 2.10 có node Select Model Elements By Category rất là hay có thể select được luôn chỉ những tags của một category cụ thể (ngày xưa BCDD phải dùng Python để lọc).

Chỗ này có một lưu ý quan trọng: đôi khi có nhiều tags cho một đối tượng trong mô hình Revit cho nên đối với những trường hợp phức tạp hơn xíu này thì cần thêm một bước lọc nửa để chỉ lọc những tags mong muốn. Còn trong ví dụ của bài viết này thì BCDD chỉ lọc tags qua một lần như vại thôi.

Tiếp theo là lấy host của các tags trên, tức là lấy các beams. Ở bước này thì BCDD dùng python để có thể lấy được host.

Để lấy được host thì chúng ta cần lấy id của các đối tượng được tag bằng cách dùng phương thức GetElement(tag.TaggedLocalElementId). Trong đó TaggedLocalElementId là một thuộc tính của của tag trả về Id của các đối tượng được tag.

Sau khi có Id của các đối tượng được tag rồi thì sẽ dễ dàng lấy được các đối tượng đó bằng phương thức GetElement(Id). Vậy là BCDD đã lấy được host từ tags đã chọn.

Từ đây BCDD tiếp tục lấy được tên của các beams bằng node Element.Name

Sau đó dễ dàng lọc ra những beams 400 bằng node List.FilterByBoolMask

Đến đây BCDD tiến hành đổi type bằng node Element.SetParameterByName

Kết quả như sau

Nếu thấy bài viết này hữu ích, hãy cân nhắc việc ủng hộ BCDD tại đây

Bài viết do admin 1 Nghia Nguyen và cộng sự BCDD biên soạn.