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)