Guide for using speckle in backend only

I’m wondering whether there is a guide to use speckle in the backend of a Revit plugin to sync data to a database (either local or remote server)?
I found the guide to writing a connector here and was wondering if this is just a matter of not implementing the UI part mentioned in the guide or if there is a different approach I should take for this?


Welcome back @grub

Thank you for sharing your thought process with us. Your intention to use Speckle to synchronise Revit data with a database is intriguing. From what I gather, you’re interested in leveraging Speckle’s existing capabilities for converting and serializing Revit data rather than building an entirely new custom connector. Am I right?

If you want to sync Revit data to a database, you might be able to use the existing Revit connector and process the data once it has been transported to the Speckle server. This way, you could work with the data outside Revit and still benefit from Speckle’s conversion and serialization capabilities.

This approach would bypass the need to handle the UI components outlined in the Speckle connector guide, presumably avoiding some of the complexities of developing a custom Revit plugin.

However, I want to ensure that this solution aligns with your objectives. Could you provide more detail on your project requirements? What kind of data are you trying to synchronize, and how do you plan to use this data once it’s in the database?

In case it helps get a clearer picture of what you want to do, I’d like to cross-reference this post by @henkon, who asked a similar question about plugins coexisting that both use the Speckle innards and some potential pitfalls to avoid, especially related to “DLL hell”.

I am looking forward to your response!

Hi thanks for your answer and sorry for not getting back to it sooner, seems like I opted out of all email notifications for this board previously.

So I think you are on the right track with your assumptions. I’ve already developed a plugin for Revit (so UI etc exists), but would want to send some data back and forth in the backend of my app between Revit and my own database for further processing. So ideally I’d keep my existing UI, but still execute the Revit connector’s logic to fill my own DB. Currently (without speckle), I have to write quite a lot of cumbersome code for extraction for each type of element, which I don’t think scales very well.
If it makes it much easier, I think I could also work with Speckle’s meta elements instead of my own DB entries, though I would need to better understand what their data format would be and how I could easily access various parameters from that for further processing. I guess that’s an educational issue on my end then (happy for any guides you already have on that).

In any case, I’d like any logic to happen in the backend of my app without the speckle UI on top of it. Does that clarify things?

1 Like

Republishing our nugets in your own namespace would make some sense. I don’t have an example to hand, but it is, for instance, how we can address a Newtonsoft.JSON that doesn’t conflict with whatever the host applications ship with.


These aren’t really forks, just namespaced versions.

I quite like the System.Reflection method, but it absolutely requires that Speckle is installed and running to use it.