У меня проблемы с написанием скрипта, который позволяет медикам выбрать первый элемент в моем выборе. Это полезно для меня, потому что я выбираю свой правильный Аэровокзал из расписания (где я вижу похожий воздушный поток, который я хочу использовать) и использую команду Создать подобное из выбора. Проблема в том, что эта команда не работает, когда выбрано несколько элементов. Поэтому я хочу первый объект из списка.
Это код, который я пытаюсь:
from Autodesk.Revit.UI.Selection.Selection import SetElementIds
from System.Collections.Generic import List
uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = [ doc.GetElement( elId ) for elId in __revit__.ActiveUIDocument.Selection.GetElementIds() ]
sel=[]
for i in selection:
sel.append(i.Id)
uidoc.Selection.SetElementIds(List[ElementId](sel[0]))
Это вернет следующее сообщение об ошибке:
Исключение: Microsoft.Scripting.ArgumentTypeException: ожидается int, получено ElementId
Ок, тогда попробую заменить
uidoc.Selection.SetElementIds(List[ElementId](sel[0]))
с
uidoc.Selection.SetElementIds(List[ElementId](sel[0].IntegerValue))
Кажется, это работает, но выбор не изменяется
Я только начинаю писать RPS-скрипты, но я надеюсь, что кто-то покажет мне, что я делаю не так, даже если это очень очевидно.
Спасибо.
Kyrre
EDIT:
Спасибо, Джереми, за решение этого для меня! Хитрость заключалась в том, чтобы создать список, а не список Python. .Добавить метод - это то, что я не получил.
Финальный код, если кому-то интересно:
from Autodesk.Revit.UI.Selection.Selection import SetElementIds
from System.Collections.Generic import List
from Autodesk.Revit.DB import ElementId
uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = [ doc.GetElement( elId ) for elId in __revit__.ActiveUIDocument.Selection.GetElementIds() ]
sel=[]
for i in selection:
sel.append(i.Id)
ids=List[ElementId](1)
ids.Add(sel[0])
uidoc.Selection.SetElementIds(ids)