Trouble importing geometry from Rhino to Revit on different branches

Hi there!

I am a first time user of Speckle and I am trying to set up a workflow for sending some simple geometry from Rhino to Revit (walls, slabs, rooms). I am splitting each of these 3 type of elements in different branches and send them to Speckle on a project specific stream. I was using 2.11 but I also tried with the 2.12.1 alpha. I tried it with both Revit 2022 and 2019. The problems I noticed are the following:

  1. First I send one type of element (e.g. walls). As soon as I send the slabs branch, the walls disappear from Revit. This is on “update”. If I check “create” it keeps both types, but as soon as I switch to back “update” problem is back.

  2. Sometimes the old walls are not replaced by a new commit of walls, but rather get’s duplicated.

I am not sure if there is something wrong in the way I set up the geometry in Rhino. I tried the workflow with fewer lines/boxes and it worked properly, no errors. Let me know if I should upload any file or give you access to my stream.


1 Like

Hey @Cosmin_Paduraru welcome to the forum and thanks for your message!

  1. What you are experiencing is the expected behavior, you can read more about the inner mechanics here. But in short, if you using the same “stream card” when receiving in Revit, and swapping branches the connector will assume the new commit is containing a new version o the data previously received and will try updating the current model correspondingly. This means editing geometries that have changed, deleting elements that are not present anymore, and creating new ones.
    I’d suggest you to use the create receive mode OR to use two separate “stream cards”, one for walls and one for slabs.

  1. Here, it depends on a few things. If the new walls were modified, if you just moved and edited their size, their rhino applicationId should have stayed the same and so they are updated correctly. If instead, they were deleted and recreated they get a new id from Rhino and the update mechanism breaks.

Are you using the mapping tool or just sending walls and slabs as meshes? Do you have a test file to share we can play with?


Hey Matteo,

Thanks for the quick reply. I understood the mechanics wrong indeed, thinking that streams are for organizing projects rather than types of elements. Now I reorganize my file, having the branches for different design options only and indeed it’s working properly.

Is there a way to organize or group the streams at the moment (in the case of working on multiple projects)?

For the second point, I am starting from boxes and I am deconstructing them to use the edges as wall bases. I guess this is breaking the ID? I uploaded the test files if you want to have a look.

Thanks again! Didn’t have time yet, but I will go through the documentation you provided. (52.0 KB)
Export_Speckle.3dm (1.7 MB)


Hey Cosmin,

Thanks for sharing the files.

There is no way of grouping streams at the moment. As you said, Streams are projects. So they are the highest level of organization.

I looked at your file. Walls and floors updated correctly on my end. But rooms didn’t update (I guess we didn’t add support for updating it). Can you check if your receive option is “Update” and not “Create”.


Hey @gokermu,

I use the “Create” option only when receiving the stream for the first time. Then I always switch to “Update”. The rooms behavior I noticed as well. I will test some more with a different geometry and in case the problems persists I will try to record the workflow.

How can I read the id of the object I am sending, to make sure it doesn’t change? After the deconstruction of the Breps, the elements no longer have a GUID. Is there another ID that I am missing? I just recently started working with RhinoCommon so I am a bit confused.

Thanks again for the help! I am impressed on how fast the community is giving feedback.

After some more tests I noticed the applicationId was missing. Wondering if this is the issue of my duplicated geometry in Revit.

In this answer from @AlanRynne, he suggest to create the applicationId manually when geometry is created in Grasshopper directly. I tried to do it like this:

As you can see, the applicationId is still null.

Again, my goal is to deconstruct some breps (apartment units) from rhino and send them as native revit elements (walls, slabs, doors, rooms, windows). I don’t know if this is workflow make sense from the Speckle mechanics perspective, but I couldn’t manage to update the elements without creating duplicates. @gokermu said they update correctly on his end, so I wonder what could be the issue in my case.

Any ideas? Thanks!

can you try right-clicking on the applicationId input and uncheck detached property?

I tried now, still no applicationId in Speckle.

So this is solved. Problem was related to stream cards :point_right:

@Cosmin_Paduraru was trying to receive with separate stream cards. Meaning for each receive operations, he would select the stream/branch → receive it → save it, resulting in duplicate geometry.

We tried receiving using the same stream card, everything worked fine.