Revit API: диалоговое окно "PickObject" не отображается

Я просто сделал то, что написано здесь, но у меня проблема с __window__.Topmost = True,

(Итак, я бегу прямо из Shell)

Вот мой полный код:

def Test(self) :
   __window__.Hide()
   sel = __revit__.ActiveUIDocument.Selection
   pickedRef = sel.PickObject(ObjectType.Element, "Please select a group");
   __window__.Show()
   __window__.Topmost = True
   return pickedRef

В самом деле, если я это сделаю, я получу сообщение об ошибке, в котором говорится, что "возврат" находится вне функции. Если я изменю строку возврата на что-то другое, например elem = Element.GetGeometryObjectFromReference(pickedRef), затем он говорит, что есть неожиданный отступ (конечно, я проверил отступ, должно быть нормально, как обычно).

Наконец, если я прокомментирую __window__.Topmost линия, то я не получил сообщение об ошибке.

У вас также есть проблемы с этим?

Но тогда моя самая большая проблема заключается в том, что в конце концов я могу выбрать элемент, но не вижу диалогового окна с ожидаемым сообщением "Пожалуйста, выберите группу"). Откуда это? Я думаю, что команда "topmost" просто возвращает оболочку сверху, так что это не из-за этого...

Любая подсказка?

Большое спасибо!

1 ответ

Решение

Я ответил на ваш комментарий на французском на моем сайте: здесь

Метод PickObject не должен вызывать появление какого-либо окна. В левом нижнем углу отображается справочное сообщение, проверьте это изображение:! Revit выдержка с сообщением

Вот рабочий код:

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

Более того, вы не должны добавлять "я" в этом контексте. Будет возвращена следующая ошибка: Traceback (последний вызов был последним): файл "", строка 1, в TypeError: pickobject() принимает ровно 1 аргумент (задано 0)

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