Revit Python Pick Object / Выбрать объект

Я довольно новичок в кодировании, так что это может быть очевидно.

Почему я получаю ошибку "имя 'ObjectType' не определено" при запуске этого кода:

picked = uidoc.Selection.PickObject(ObjectType.Element)

Я использую оболочку revit python (IronPython)

2 ответа

Решение

Вы должны импортировать ObjectType в текущую область:

>>> from Autodesk.Revit.UI.Selection import ObjectType
>>> picked = uidoc.Selection.PickObject(ObjectType.Element)

Я только что попробовал это в RevitPythonShell и заметил, что он не работает, потому что оболочка все еще находится на переднем плане. Таким образом, этот метод будет работать для сценариев, которые вы добавляете на ленту, но не прямо из оболочки... Я пока не совсем уверен, как это исправить. Сожалею.

РЕДАКТИРОВАТЬ: Используйте функцию, как эта, чтобы сделать трюк:

def pickobject():
    from Autodesk.Revit.UI.Selection import ObjectType
    __window__.Hide()
    picked = uidoc.Selection.PickObject(ObjectType.Element)
    __window__.Show()
    __window__.Topmost = True
    return picked

Вы можете запустить это, вставив его в панель редактора внизу и нажав F5 или добавив его в свой Init-Script или что-то еще. А потом просто позвони pickobject() когда вам нужно выбрать элемент.

Это потому что ObjectType не определено нигде в области действия этого оператора:

>>> ObjectType
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ObjectType' is not defined
>>> ObjectType = 12
>>> ObjectType
12

Может быть, вы забыли заявление на импорт?

Другие вопросы по тегам