Untitled
unknown
plain_text
9 months ago
2.3 kB
11
Indexable
import clr clr.AddReference('RevitServices') from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager clr.AddReference("RevitAPI") from Autodesk.Revit.DB import * import os # Przyjmujemy, że poniższe listy są wejściowymi danymi w Dynamo # rvt_docs - lista plików RVT (Autodesk.DB.Document) # ifc_links - lista plików IFC (RevitType, np. ścieżki do plików IFC jako listy lub pojedyncze pliki) rvt_docs = IN[0] # Lista dokumentów RVT (kontenerów IFC) ifc_links = IN[1] # Lista linków IFC (może to być lista plików IFC lub pojedynczy plik) # Lista wynikowa dla kontenerów i statusu updated_containers = [] # Lista kontenerów RVT (dokumentów) update_status = [] # Lista statusów odświeżenia linków IFC # Funkcja do ładowania i odświeżania linków IFC def refresh_ifc_links(doc, ifc_paths): try: TransactionManager.Instance.EnsureInTransaction(doc) # Usuń istniejące linki IFC link_types = FilteredElementCollector(doc).OfClass(ImportInstance).ToElements() for link in link_types: doc.Delete(link.Id) # Załaduj nowe pliki IFC for ifc_path in ifc_paths: options = IFCImportOptions() doc.Import(ifc_path, options, doc.ActiveView) TransactionManager.Instance.TransactionTaskDone() return True # Operacja się powiodła except: TransactionManager.Instance.ForceCloseTransaction() return False # Operacja się nie powiodła # Przetwarzanie listy kontenerów RVT i odpowiednich linków IFC for i in range(len(rvt_docs)): doc = rvt_docs[i] # Sprawdź, czy linki IFC są listą plików, czy pojedynczym plikiem if isinstance(ifc_links[i], list): result = refresh_ifc_links(doc, ifc_links[i]) else: result = refresh_ifc_links(doc, [ifc_links[i]]) # Dodaj dokument do listy zaktualizowanych kontenerów updated_containers.append(doc) # Dodaj status odświeżenia update_status.append("Success" if result else "Failed") # Dane wyjściowe: lista dokumentów do dalszej obróbki i status odświeżenia OUT = (updated_containers, update_status)
Editor is loading...
Leave a Comment