Revit Schedules - Add schedule filter w/ python

With some help from examining archi-lab schedule nodes, I’ve managed to get to a point where I can add a pre-defined filter in an existing schedule, and apply it to one new target schedule.

Can someone please explain how I might edit the script to take more than one schedules and more than one string value for each filter?

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


# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager


# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *


doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application


from System.Collections.Generic import *


# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)

refschedule = UnwrapElement(IN[0])
tgtschedules = UnwrapElement(IN[1])
tgtstrings = IN[2]

refdefinition = refschedule.Definition
reffilter = refdefinition.GetFilter(0)

TransactionManager.Instance.EnsureInTransaction(doc)

for tgtstring in tgtstrings
	tgtfilter = reffilter.SetValue(tgtstring)

for tgtschedule in tgtschedules:
	tgtdefinition = tgtschedule.Definition
	tgtdefinition.InsertFilter(reffilter, 0)

TransactionManager.Instance.TransactionTaskDone()

OUT = tgtschedules;
1 Like