Ứng dụng Dynamo cho Join Geometry & Switch Join Order trong Revit, vấn đề lớn đã được giải quyết

"Một vấn đề đang làm đau đầu số đông người dùng Revit tại Việt Nam sẽ hoàn toàn được giải quyết". 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 các kiến thức cơ bản về Dynamo tại website này.

FEATURED TOPIC