Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Revit Python拾取对象/选择对象_Python_Api_Revit_Revitpythonshell - Fatal编程技术网

Revit Python拾取对象/选择对象

Revit Python拾取对象/选择对象,python,api,revit,revitpythonshell,Python,Api,Revit,Revitpythonshell,我对编码相当陌生,所以这可能是显而易见的 为什么在运行此代码时出现错误“name'ObjectType'not defined”: picked = uidoc.Selection.PickObject(ObjectType.Element) 我使用的是revit python shell(IronPython)这是因为ObjectType未在该语句的范围内定义: >>> ObjectType Traceback (most recent call last): File

我对编码相当陌生,所以这可能是显而易见的

为什么在运行此代码时出现错误“name'ObjectType'not defined”:

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

我使用的是revit python shell(IronPython)

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

>>> ObjectType
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ObjectType' is not defined
>>> ObjectType = 12
>>> ObjectType
12
>>对象类型
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“ObjectType”
>>>ObjectType=12
>>>对象类型
12

可能您忘记了导入语句?

这是因为
ObjectType
在该语句的作用域中没有定义:

>>> ObjectType
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ObjectType' is not defined
>>> ObjectType = 12
>>> ObjectType
12
>>对象类型
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“ObjectType”
>>>ObjectType=12
>>>对象类型
12

可能您忘记了导入语句?

您应该将
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脚本或其他方式来运行它。然后,当需要拾取元素时,只需调用
pickobject()

您应该将
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脚本或其他方式来运行它。然后在需要拾取元素时调用
pickobject()

Daren,谢谢!!我刚刚开始了解如何编程和使用revit的SDK。我一直在查看你和杰里米·塔米克的网站,但进展缓慢。@dciolino,嘿,不客气!坚持下去,很快一切都会有意义的;-)我收到StackOverflow的电子邮件,询问标记为revit和revitapi的问题,请随意提问!达伦,谢谢你!!我刚刚开始了解如何编程和使用revit的SDK。我一直在查看你和杰里米·塔米克的网站,但进展缓慢。@dciolino,嘿,不客气!坚持下去,很快一切都会有意义的;-)我收到StackOverflow的电子邮件,询问标记为revit和revitapi的问题,请随意提问!