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