4

我使用过 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))

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

4

2 回答 2

6

您不能从其他进程调用 Revit API。该 API 设计为在“进程内”使用,因此您必须创建一个 DLL,Revit 会将其加载到自己的进程中。

于 2016-06-22T13:11:00.367 回答
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();
于 2020-11-05T09:24:36.277 回答