Hello,
an alternative with the ‘ISelectionFilter’ class (interface UI) to avoid a new selection already made
import clr
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference("RevitAPIUI")
from Autodesk.Revit.UI import *
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
sel1 = uidoc.Selection
obt1 = Selection.ObjectType.Element
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
class CustomISelectionFilter(Selection.ISelectionFilter):
def __init__(self, lst_f):
self.lst_f = lst_f
def AllowElement(self, e):
if e.Id not in self.lst_f:
return True
else:
return False
def AllowReference(self, ref, point):
return True
out1 = []
lst_filter = []
flag = True
while flag:
try:
el1 = doc.GetElement(sel1.PickObject(obt1, CustomISelectionFilter(lst_filter), "Select a element, type escape to finish").ElementId)
out1.append(el1.ToDSType(True))
lst_filter.append(el1.Id)
except :
flag = False
OUT = out1