Speckle Library Manager


Yesterday we also had an idea about mapping or a Speckle Library Manager, that allows users to map classes and objects to other library components in other software.

Currently when components are missing in RVT, Speckle throws errors and parts of the import is failed. e.g. I send a pipenetwork to Revit, and in Revit I am missing a typical of the pipe with diameter 1200 with a very specific name. Currently when an pull is done, it breaks on the fact that there is no alias for this diameter, and no alternative is available in the revit database. this is even more problematic using custom families.

Making use of a library manager though, we can be able to make a mapping between the classes (and names) we upload, and a library manager to have a grip on what is supposed to be used for specific classes, and if they are missing in the project, a link to the library location in which the elements we need reside.


Agree that something like this is needed!
Trying to summarize in my head the main issues we currently have:

Loadable Families

  • if the type of an element being received is missing, the connector falls back to another type of the same family
  • if the family of an element being received is missing, the connector falls back to something belonging to the same category (eg a specific door family is missing, it just picks any existing door)
  • if no family of that category is already loaded in the model, the conversion fails

System Families

  • if the type of an element being received is missing, the connector falls back to another type of the same family
  • if sending elements from another application (eg GSA or Civil3D) there is currently no way to define a mapping between the source app types and the Revit types

So it sounds like there are three main features required:

  • add the possibility to dynamically load families during receive, maybe from a specific local directory or even try sending them upfront
  • add the possibility to dynamically create new types for existing system families during receive
  • add the possibility to define custom mappings for types coming from other source applications

I’d like to cc @jenessa.man and @JdB who have hacked a custom solution to this issue in their GSA > Revit workflow.


Great topic!

We (mainly Jenessa @jenessa.man and Dan @d.naughton) have developed a mapping solution to improve interoperability between GSA and Revit (back and forth) with the idea to add other software as well.

The solution consists of a main mapping table and various software specific ones (2 for now, GSA and Revit). The tables are created in Excel. In the software specific tables we list the name of the objects as described by the software and give it a numerical id. In the main mapping table we specify the match based on the numerical id. We create one stream and push each table to a specific branch. On receiving, the Revit or GSA connector retrieve the mapping data from the mapping stream and select the correct objects in the software. We are thinking to add an option where users can specify their own stream URL with custom mapping tables (e.g.: project or client specific).

For now, when receiving in Revit, it selects the correct family and type if they are already loaded in the project. In due time, we are considering to integrate with Unifi to automatically load the Revit families and types (we have a very extensive library in Unifi).

Hopefully my explanation makes sense. If anyone would like more (technical) details please tag Dan.

@dirksliepenbeek and @PhuongNguyen, could you maybe explain some of the cool stuff you’ve been working on related to mapping?

1 Like

This is indeed exactly the problem. a fourth feature might be preferable with regards to built-in objects that are not available as separate files:

  • create a ‘Speckle-default’ type that allows user to still receive full models and do a manual adjustment later.

Looks promising, I am very interested in the solution.

1 Like

Hi JdB,

Thanks for tagging me! We’ve been doing some work on that one yes, as you know. It’s similar to the process you are describing but for us it connects to our inhouse developed library which is stored in .json format.

The workflow is as follows:

  1. Select stream, branch, commit
  2. Plug-in will read all the specific unique types
  3. Based on the “mapping json” (basically the key is the structural type from our library, the value is the Revit family name / type name from our library), it auto selects the right family for the right beam. If none is found you can fill it in yourself based on a dropdown.
  4. Second last step is to load the families automatically from our libarary, currently this is still local but something like a call to our sharepoint library would be better (not sure if that’s possible).
  5. Last step is to update the stream with new family names

This all sounds relatively easy, but we are struggling because we still have issues when both Speckle and our plug-in is installed… We’ll pick this development up again this month so I hope we will be able to solve that one.




Thank you all for the good inputs & feedback! I think we can break this down into 2 main features that will need to be scoped down and developed:

We’ll keep you posted and might reach out again individually to get a better understanding of your needs. :v:

In the meantime, feel free to continue the conversation here!


Hi @teocomi!

Would be great if this was picked up as feature for the Revit connector. As we have been trying to build this already but in a seperate tool we would be happy to share our needs. Could you give some insight in a timeline (if there is any :stuck_out_tongue: )



Definitely, It would probably end up as part of DesktopUI and available across most of our connectors.
No timeline yet as we first need to scope this down in mode detail, but we’ll keep you posted!

1 Like