Giới thiệu
Cơ bản
Bài tập thực hành
DesignScript
Giải pháp thực tế
Sử dụng Dynamo
Tài liệu học tập tham khảo thêm

Dynamo và Revit

DynamoDynamo Player là các công cụ nằm trên tab Manage của Revit:

Nếu bạn có nhiều phiên bản Dynamo trong Revit, bạn phải chọn phiên bản để làm việc khi mở Dynamo từ Revit:

Trong hình dưới, Dynamo sử dụng Dynamo Core và Dynamo Revit. Chúng có thể khác phiên bản nhưng thường được cập nhật cùng thời điểm.

Nói chung, bạn có thể mở và sử dụng file Dynamo trong các phiên bản Revit khác nhau. Dynamo chỉ kết nối với một file Revit hoặc file Family. Mỗi khi chạy Dynamo, một phiên làm việc được đặt tên sẽ sinh ra dưới menu Undo trong Revit, ví dụ như “Dynamo-51297CB5 Script”.

Trong mục Revit ở bảng bên trái Dynamo có danh sách các node làm việc với file Revit, bao gồm các chức năng sau:

  • Chọn phần tử trong mô hình.
  • Lấy dữ liệu phần tử trong mô hình.
  • Tạo các phần tử mới.
  • Chỉnh sửa phần tử (ví dụ như hình dạng, vị trí, tham số…).

Có một số node cho phép người dùng chọn phần tử bằng cách chuyển qua lại giữa Revit và Dynamo. Nó còn có thể chọn được phần tử Revit từ các đặc trưng của chúng:

  • By Level, các đối tượng Revit nằm trên Level.
  • By Category, theo loại đối tượng Revit, tên đặt dưới dạng số nhiều (ví dụ Walls).
  • By Family Type, giống như là chọn tất cả các đối tượng cùng type từ giao diện Revit.
  • By Element Type, là loại đối tượng Revit, thường ở dạng số ít (ví dụ Wall). Đây là khái niệm trong Revit API và nó có thể gây nhầm lẫn với Category.

Có một cách để hiểu sự khác nhau giữa Element Type và Category là quan sát danh sách các phần tử con. Trong Categories, có thể tìm thấy Tag (ví dụ Wall Tags), những đối tượng này là Family Instance của Element Type.

Ghế (Chair) và Tag của nó đều là FamilyInstance thuộc các category khác nhau (Furniture và Furniture Tag). Có những tình huống mà Element Type thuộc cùng category (ví dụ Railing và Balauster). Trong Revit API, Family Types được gọi là FamilySymbol. Trong Dynamo, node có hiển thị kết quả đầu ra ở bên dưới của node đó, khi chọn phần tử Revit, ElementId của phần tử sẽ hiển thị như hình dưới.

Dynamo có thể được sử dụng để lấy dữ liệu phần tử trong mô hình. Tất cả phần tử trong Revit đều có tham số – Parameter. Tham số bao gồm tên và giá trị. Dynamo truy cập vào tham số bằng cách sử dụng tên của tham số trong Revit UI. Tên này tùy thuộc vào khu vực sử dụng phần mềm, vì thế ngôn ngữ Dynamo gắn với ngôn ngữ của Revit. Nếu Dynamo sử dụng ngôn ngữ khác với ngôn ngữ của Revit, Dynamo sẽ không thể tìm được tham số. Do đó, cần phải dịch tên tham số đó, có thể sử dụng Excel để làm điều này, nhớ rằng Excel phải được mở và cập nhật bởi Dynamo.

Khi chọn phần tử Revit (ví dụ Wall), hình học của nó không xuất hiện trong Dynamo. Điều ngược lại cũng đúng khi sử dụng Dynamo để tạo phần tử trong Revit: Dynamo có thể được sử dụng để kiểm soát hình học của phần tử (ví dụ một đường thẳng có thể được sử dụng để tạo dầm trong Revit) nhưng hình học của dầm và thông tin mặt cắt ngang của nó sẽ không xuất hiện trong Dynamo sau khi tạo.

// a = 3;
// b = 4'
do this while
{
	a = 1;
}

Node Dynamo tạo phần tử Revit có thuộc tính riêng gọi là “Register for Trace”. Thuộc tính này đảm bảo sau khi chạy file Dynamo và lưu lại, kết quả của các node sẽ được lưu lại trong file Dynamo đó. Quá trình này được gọi là “Trace Binding”. Trace sẽ kết hợp thông tin của node trong Dynamo với phần tử Revit. Trace giúp cập nhật phần tử Revit nếu đầu vào Dynamo thay đổi. Mối quan hệ này được duy trì ngay cả khi đóng ứng dụng lại, trừ khi Dynamo sử dụng trên file Revit khác khi đó liên kết với file Revit cũ bị phá vỡ.

File Dynamo về cơ bản là một file JSON. Trace nằm trong thẻ “Bindings”. Xóa nội dung liên kết sẽ giảm dung lượng file dynamo và cải thiện tốc độ chạy. Chạy file Dynamo qua Dynamo player giống với chạy từ ứng dụng Dynamo nhưng không lưu lại kết quả khi kết thúc. Dynamo Player không chứa Trace liên kết với file.

Node Python Script trong Dynamo không có thuộc tính “Register For Trace”, điều này có nghĩa là phần tử Revit mà tạo qua Python Script sẽ không liên kết với file Dynamo. Để tránh điều này, bạn sử dụng Python Script để tạo nền tảng cho việc tạo phần tử Revit sau đó đẩy việc tạo phần tử cho một node Dynamo tiêu chuẩn.

Python Script phải chú ý đến phiên bản Revit API để tránh sử dụng các phương thức đã bị loại bỏ.

Lưu ý

  • Dynamo chỉ liên quan đến file Revit đang chạy.
  • Truy xuất vào file Revit khác thông qua Dynamo chỉ có thể thực hiện bằng Revit API (ví dụ sử dụng node Python Script).
  • Tên tham số sử dụng trong Dynamo phải có cùng ngôn ngữ với Revit
  • Python Script phải chú ý đến phiên bản Revit API để tránh sử dụng các phương thức đã bị loại bỏ.

Khuyến nghị

  • Nếu Dynamo và Revit sử dụng khác ngôn ngữ thì sử dụng file Excel làm trung gian để chuyển đổi ngôn ngữ. File Excel phải được mở và cập nhật bằng Dynamo.
  • Dynamo có thể dùng ngôn ngữ khác nếu sử dụng BuiltInParameter và BuiltInCategorie thông qua Revit API (ví dụ Python Script).
  • Nếu sử dụng Dynamo để tạo và quản lý phần tử Revit thì cần phải đặt tên rõ ràng.
  • Nếu Dynamo không tạo bất kỳ phần tử Revit nào thì có thể được sử dụng trên nhiều file Revit. Có thể xóa bỏ mục SessionTraceData của file Dynamo để giảm dung lượng file và cải thiện hiệu suất. Để làm điều này mở file Dynamo bằng Nodepad, kéo xuống cuối file và xóa text nằm giữa thẻ <SessionTraceData></SessionTraceData>. Nhớ tạo file backup của file Dynamo trước khi thực hiện thao tác này.

Tài liệu tham khảo