Copy Selection filter to all view template

Salut Thomas
Try this (in Python)

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

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

#import transactionManager and DocumentManager (RevitServices is specific to Dynamo)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

#Get Important vars
doc = DocumentManager.Instance.CurrentDBDocument


def getfilterByName(nameFilter):
	collfilter = FilteredElementCollector(doc).OfClass(FilterElement).ToElements()
	if collfilter:
		filterSelect = [x for x in collfilter if x.Name == nameFilter]
		if 	filterSelect:
			return filterSelect[0]
		else: return None	

nameFilter = IN[0]
outViews = []
filter = getfilterByName(nameFilter)
if filter:
	collViews = FilteredElementCollector(doc).OfClass(View)
	viewsTemplate = [x for x in collViews if x.IsTemplate]
	#Processing
	TransactionManager.Instance.ForceCloseTransaction()
	TransactionManager.Instance.EnsureInTransaction(doc)
	for vTemp in viewsTemplate:
		if vTemp.AreGraphicsOverridesAllowed():
			if filter.Id not in vTemp.GetFilters():
				vTemp.AddFilter(filter.Id)
				outViews.append(vTemp)
	TransactionManager.Instance.TransactionTaskDone()
	
	OUT = outViews
else:
	OUT = "Filtre introuvable"

AddFilter

2 Likes