从 Revit 外部访问 Revit API

Accessing Revit API from outside Revit

我使用过 RevitPythonShell 和 Dynamo,但我想使用我现有的 Python IDE (Eclipse),我在其中配置了日志记录、调试、GitHub 集成等

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

例如,我试过了;

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

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

您不能从另一个进程调用 Revit API。 API 设计为在“进程内”使用,因此您必须制作一个 DLL,它将由 Revit 加载到它自己的进程中。

但是,此 DLL 可以通过诸如 COM 之类的机制与其他进程通信。

如前所述,无法从另一个进程调用 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();