从外部Revit访问Revit API

时间:2016-06-22 09:51:03

标签: python revit-api revitpythonshell pyrevit

我使用过RevitPythonShell和Dynamo,但是想使用我现有的Python IDE(Eclipse),我的配置用于记录,调试,GitHub集成等。

我对交易和整体API感到满意,我花了一些时间阅读有关Revit API和无模式连接的内容,还有其他人提出类似的问题。其中一些人已经有几年了。目前是否可以在Revit之外的Python中执行与Revit交互?

例如,我试过了;

import clr
clr.AddReference(r'C:\Program Files\Autodesk\Revit 2016\RevitAPI')
import Autodesk.Revit.DB as rvt_db
print(dir(rvt_db))

但这似乎没有暴露任何有用的东西。

2 个答案:

答案 0 :(得分:4)

您无法从其他进程调用Revit API。 API旨在用于"进程中",因此您必须创建一个将由Revit加载到其自己的进程中的DLL。

答案 1 :(得分:1)

如前所述,无法从另一个进程调用Revit API。在上述DLL中,您可以实现IExternalEventHandler接口,以便能够使用事件调用API。

class MyExecutionClass : IExternalEventHandler
{
    public void Execute(UIApplication uiapp)
    {
        //your stuff
    }
    public string GetName()
    {
        return "My event executed class";
    }
}

//Create event on startup
IExternalEventHandler myEventHandler = new MyExecutionClass();
ExternalEvent myExEvent = ExternalEvent.Create(myEventHandler );

//Pass event reference and raise it whenever yoo want
myExEvent.Raise();