Hi all,
I’m collecting information on Revit model element counts. I am using Python to open up a list of .rvt files in the background, count the elements, then close the file and repeat. I am using this loop as a way to save on memory (as the Document.BackgroundOpen node opens all files at once).
The Python code is a mixture of Document.BackgroundOpen, Document.Close and some code I found on here about pulling elements from categories.
The problem is whenever in the code I put the “doc.Close(False)” line it causes referencing issues. (Refer the below pic).
This error occurs only when that line of code is in the for loop. If this line of code is deleted, it works perfectly (except for not closing the files). With that line of code in, I found out it’ll run up until the “if t1[z]:” line then flick that error about the referenced object.
Here is the Python code:
for i in items:
doc = app.OpenDocumentFile(i)
#elements grouped by category (group by key)
t1, t2 = [], []
for cat, bic in [(cat, bic) for cat in cats for bic in bics]:
if cat == bic.ToString():
t1.append(FilteredElementCollector(doc).WhereElementIsNotElementType().OfCategory(bic).ToElements())
t2.append(bic)
elements, categories = [], []
#check if sub list is empty
for z in range(len(t1)):
if t1[z]:
elements.append(t1[z])
categories.append(t2[z])
finale.append(elements)
finalc.append(categories)
doc.Close(False)
Any help is appreciated, thanks.