1

我对编码很陌生,所以这可能很明显。

为什么我在运行此代码时收到错误“名称'ObjectType'未定义”:

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

我正在使用 revit python shell (IronPython)

4

2 回答 2

3

您应该导入ObjectType当前范围:

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

我刚刚在 RevitPythonShell 中尝试过,并注意到它不起作用,因为 shell 仍在前台。因此,这种技术适用于您添加到功能区的脚本,但不能直接从 shell 中...我不太确定如何解决这个问题。对不起。

编辑:使用这样的函数来解决问题:

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()在需要选择元素时调用。

于 2014-01-23T08:14:29.003 回答
1

这是因为ObjectType未在该语句范围内的任何地方定义:

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

也许您忘记了导入声明?

于 2014-01-22T23:34:45.850 回答