Hiện nay, ứng dụng Dynamo đã không còn mới mẻ đối với người dùng phần mềm Revit tại Việt Nam cũng như trên thế giới. Và từ các phiên bản Revit mới, hãng Autodesk đã không ngừng hoàn thiện phần này hơn nữa.

Trong bài viết này, tôi sẽ giới thiệu tới bạn đọc một ứng dụng Dynamo giúp giải quyết triệt để vấn đề Join Geometry & Switch Join Order tự động toàn bộ mô hình Revit. Đây cũng là một vướng mắc làm đau đầu người dùng, điều mà trước đây ta phải thực hiện thủ công hoặc chạy các Addin API nước ngoài trang bị thêm.

Tôi đã kết hợp sử dụng các Nodes, Wires và viết mã Python trong ứng dụng Dynamo này.

Script cho phần Join Geometry:

Mã Python cho phần NUCEJoinGeometry:

import clr
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *
clr.AddReference(“RevitAPI”)
import Autodesk
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference(“RevitNodes”)
import Revit
clr.ImportExtensions(Revit.Elements)
elementA = UnwrapElement(IN[0])
elementB = UnwrapElement(IN[1])
#The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN
elementlistA = UnwrapElement(IN[0])
elementlistB = UnwrapElement(IN[1])
doc = DocumentManager.Instance.CurrentDBDocument
NUCE = []
TransactionManager.Instance.EnsureInTransaction(doc)
for elementA in elementlistA:
    for elementB in elementlistB:
        try:
            result = Autodesk.Revit.DB.JoinGeometryUtils.JoinGeometry(doc,elementA,elementB)
            NUCE.append(result)
        except:
            pass
TransactionManager.Instance.TransactionTaskDone()
OUT = NUCE

Script cho phần Switch Join Order:

Mã Python cho phần NUCESwitchJoinOrder:

import clr
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *
clr.AddReference(“RevitAPI”)
import Autodesk
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference(“RevitNodes”)
import Revit
clr.ImportExtensions(Revit.Elements)
#The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN
elementA = UnwrapElement(IN[0])
elementB = UnwrapElement(IN[1])
doc = DocumentManager.Instance.CurrentDBDocument
NUCE = []
TransactionManager.Instance.EnsureInTransaction(doc)
for A in elementA:
for B in elementB:
  try:
   result = Autodesk.Revit.DB.JoinGeometryUtils.SwitchJoinOrder(doc,A,B)
   NUCE.append(result)
  except:
   pass
TransactionManager.Instance.TransactionTaskDone()
#Assign your output to the OUT variable.
OUT = NUCE

Sản phẩm sau khi đưa vào danh sách Dynamo Player:

Ứng dụng Dynamo cho Join Geometry & Switch Join Order trong Revit

Trong bài viết, tôi chỉ thực hiện cho một cặp đối tượng như tường-cột, dầm-sàn,… người dùng tự thêm các cặp đối tượng còn lại. Ứng dụng Dynamo này giúp mô hình Revit trở nên chính xác hơn, và khi đó các bên tham gia dự án sẽ sử dụng mô hình Revit cho mục đích kiểm soát khối lượng, bản vẽ,…

Nếu chưa rõ về ứng dụng Dynamo này, bạn đọc cần tìm hiểu thêm tại đây: https://www.elsoft.vn/khoa-hoc/kien-truc-xay-dung/revit