I've used RevitPythonShell and Dynamo, but would like to use my existing Python IDE (Eclipse) where I have my configuration for logging, debugging, GitHub integration, etc.
I'm comfortable with transactions and the overall API, and I've invested some time in reading about the Revit API and modeless connections, and others asking similar questions. Some of them are a few years old. Is it currently possible to interact with Revit from Python executed outside Revit?
For example, I've tried;
import clr
clr.AddReference(r'C:\Program Files\Autodesk\Revit 2016\RevitAPI')
import Autodesk.Revit.DB as rvt_db
print(dir(rvt_db))
But this doesn't seem to expose anything useful.
You cannot call the Revit API from another process. The API is designed to be used "in-process", so you have to make a DLL which will be loaded by Revit into its own process.
However, this DLL can talk with other processes via a mechanism like COM for example.
As mentioned before, it is not possible to call Revit API from another process. In the aformentioned DLL you can implement IExternalEventHandler interface to be able to call API using event.
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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With