Untitled
unknown
plain_text
a year ago
2.3 kB
13
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