def CreateFilter(elements,view):
filtertmp=[]
filtertmp.append(ElementId(BuiltInCategory.OST_GenericModel))
filtertmp.append(ElementId(BuiltInCategory.OST_CurtainWallPanels))
filtertmp.append(ElementId(BuiltInCategory.OST_Rebar))
categories = List[ElementId](filtertmp)
parameter=elements[0].get_Parameter("Mark")
checkval =parameter.AsString()
parameterId = parameter.Id
pvp = ParameterValueProvider(parameterId)
TransactionManager.Instance.EnsureInTransaction(doc)
fnrv = FilterStringEquals()
rulelist = []
ruleValId = checkval
paramFr = FilterStringRule(pvp,fnrv,ruleValId,True)
epf = ElementParameterFilter(paramFr)
rulelist.append(paramFr)
collector = FilteredElementCollector(doc,doc.ActiveView.Id)
collector.OfCategory(BuiltInCategory.OST_GenericModel).WherePasses(epf)
collector.OfCategory(BuiltInCategory.OST_CurtainWallPanels).WherePasses(epf)
collector.OfCategory(BuiltInCategory.OST_Rebar).WherePasses(epf)
filterRules=List[FilterRule](rulelist)
elemFilter = ParameterFilterElement.Create(doc,"FLT" + view.Name,categories,filterRules)
view.AddFilter(elemFilter.Id)
view.SetFilterVisibility(elemFilter.Id,True)
TransactionManager.Instance.TransactionTaskDone()
return()
jeremy, thank you for the quick reply!
1st: yes i examined the samples, and as you see my code is more or less a mimicry .
what i tried:
i have codes stored in the "Mark" parameter.i wanted to create views where only elements matching the criteria are displayed and those elements should only be panels, generic models and rebar. (so everything else should be off)
trying the code (adding a red color for debuging) i think it worked.
but when i tried to generate my drawings i failed.
examining the drawings i can see, that my filter is applied