Revit API:“PickObject”不显示对话框窗口

时间:2014-11-13 10:38:17

标签: revit revit-api revitpythonshell

我刚刚完成了here所写的内容,但我遇到了__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

的确,如果我这样做,我收到一条错误消息,说“返回”是在函数之外。如果我用其他东西改变'return'行,比如elem = Element.GetGeometryObjectFromReference(pickedRef),那么它会说有一个意外的缩进(当然我检查了缩进,通常应该没问题)。

最后,如果我评论__window__.Topmost行,那么我没有收到任何错误消息。

您是否也遇到过问题?

然而我最大的问题是,最后,我选择了一个元素,但是我看不到弹出预期消息“请选择一个组”的对话窗口。它来自哪里?我猜“最顶层”的命令只是将shell带回顶部,所以它并非来自......

有任何线索吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

我在网站上用法语回答了您的评论:here

PickObject方法不应该弹出任何窗口。它会在左下角显示一条帮助信息,请查看此图片: Revit extract with message

这是一个有效的代码:

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行,in TypeError:pickobject()只取1个参数(给定0)