Sort Objects by Selection Order

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
2 Likes