Revit Python Pick Object / Select Object

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

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

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

Я использую оболочку Revit Python (IronPython).


person dciolino    schedule 22.01.2014    source источник


Ответы (2)


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

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

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

EDIT: используйте функцию, подобную этой, чтобы добиться цели:

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(), когда вам нужно выбрать элемент.

person Daren Thomas    schedule 23.01.2014
comment
Дарен, Спасибо!! Я только начинаю разбираться в программировании и использовании Revit SDK. Я проверял ваш сайт и сайт Джереми Таммика, но он все еще продвигается медленно. - person dciolino; 24.01.2014
comment
@dciolino, добро пожаловать! Просто держитесь, скоро все начнет обретать смысл ;-) Я получаю электронные письма от StackOverflow с вопросами, помеченными как revit и revitapi, так что не стесняйтесь спрашивать! - person Daren Thomas; 24.01.2014

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

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

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

person Claudiu    schedule 22.01.2014