Back Referencing Views - Looking for existing script

@rdeardorff I took a quick pass at it and this (messy) modified script seems to work:

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager

doc = DocumentManager.Instance.CurrentDBDocument

sheetViews = UnwrapElement(IN[0])
views = UnwrapElement(IN[1])

refviews = []

def getRefs(sheetviews, refdview):
	refViews = []
	for view in sheetviews:
		viewerColl = FilteredElementCollector(doc, view.Id).OfCategory(BuiltInCategory.OST_Viewers).ToElements()
		for viewer in viewerColl:
			if viewer.Name == refdview.Name:
				refViews.append(view)
		refColl = FilteredElementCollector(doc, view.Id).OfCategory(BuiltInCategory.OST_ReferenceViewer).ToElements()
		for refviewer in refColl:
			if refviewer.LookupParameter("Target view").AsElementId() == refdview.Id:
				refViews.append(view)
	return refViews

for view in views:
	refviews.append(getRefs(sheetViews,view))
	
OUT = refviews 

Note the changes that need to be made to the graph; the Python script now needs the view elements, and not their names, and there are some level changes on the nodes after the Python script:


edit: added flatten node after List.FilterByBoolMask

3 Likes