Simultaneously sending several versions with several messages in a single stream with a single sender


As the title says, is it possible to send simultaneously several versions with several messages in a single stream with a single sender?

According to what I tested, it is certainly possible to send different versions simultaneously, but it is not possible to assign them different messages.
I’ve made several attempts by playing with the structure of the trees I manipulate, but I feel that with any manipulation the sender will always combine all the models it receives with the first message it receives.

The question is not to receive the data in a structured way on the other side, but to have structured versions on the webviewer without having several senders in my canva.

Thank you!

Hi @Walid , welcome to the forum!

The “Send” node in Grasshopper has been designed to only create one commit at a time (and therefore take one message only), this is because commits represent a snapshot of your data in time. Allowing multiple commits to be created at the same time could be a bit confusing.

It sounds like maybe branches could be a better fit to store different versions of your data. Have you tried that? I’m afraid you’d still need multiple “Send” nodes if you need to have different commit messages for each, otherwise one single node could be used.

If you tell us a bit more about your use case we can look at additional solutions and potentially adding new features to our connectors :slight_smile:

Thank you for the quick answer Matteo!

Indeed, my use case is about sending digital fabrication tools to a branch. A use case for fun in my situation, but it could also be useful in other use cases involving the need to transfer tool models for construction.

It would be better if these tools are sent separately since their combination can change according to the need. That’s why I wanted to send them simultaneously, with separate messages to have my models on the cloud recorded in a structured way. The versions, will be used as “Category” or “Family” in the case of a specific use like this.

Here’s a little capture that shows what it could look like :slight_smile:


I see, thanks for the explanation and screenshots!

I’d like to propose and additional solution then, especially because it sounds like you might want to also add some custom logic to interact with the different variations of these tools later on:

  1. You could structure your data in a cusotm way in GH by using a Custom Speckle Object
  2. Each CSO could have a “category” or “family” property
  3. These cusotm data structures, per se, will not be visible in the viewer. Only their geometry will be visible. But when reciving back in GH the structure will be preserved,
  4. You could create a Custom Speckle App to add custom logic and interactions to your stream/data

Thank you for the suggestion :slight_smile: Actually, when I tried to send different messages I sent them with a structured CSO. I am also sending different printing data through speckle, and it is very useful in the workflow. I’ll certainly keep exploring this!

However, I’d like to ask some other questions before this topic is closed.

Will it be possible to :

  • Combine different models from different stakeholders into one version of a stream? (Like v1.0 in a way);
  • Delete branches or versions when they are not useful anymore ;
  • Upload a file format to the webviewer.

I have many more, but I will stop here for now. I know that v2 is in development and your team is doing a great job! :slight_smile:

1 Like

Great to hear you have already played with custom objects :slight_smile:
In regards to the other features mention:

  • combining streams => it’s in the backlog, hopefully we’ll get to in it the next weeks
  • deleting branchse => it’s there already but hidden (we’re due to improve this) see this issue
  • uploading files to the viewer/server => this is not on our roadmap, what file formats were you thinking about? We have discussed internally supporting uploading IFC files

Thanks for all the feedback and ideas, they really help us make a better Speckle!

If you’d ever want to share with the rest of the community what you have done or are doing with Speckle we have a showcase category. And if you’d like you can Introduce yourself 🙆!

1 Like

Perfect! I found the way to trim branches that are hiding :laughing:
For versions (or commits), it seems that it is only possible to edit their message, it would be nice to be able to delete (or archive) them in case we have a lot of information flow, and also to be able to sort or search them by their message.

For uploading a model, it would be very cool if it would take the widest range of formats since it would include a wider range of disciplines. But of course, IFC/BCF are the beloved of BIM stakeholders when it comes to collaboration on the cloud or through a “CDE”. I think it would be an important feature since it is not always necessary to open a software to transfer a model, especially in the current construction context.

I’ll certainly go through the showcase one day, I have a master’s project and an upcoming conference where I use speckle and I will be happy to introduce myself soon! :running_man:

Moved this issue from p3 to p1: Feat: remove/hide/move commits · Issue #129 · specklesystems/speckle-server · GitHub - totally valid request!

Searching them by commit message would actually be great. Another great point, I’ll add it to our backlog!

We’re also musing on an IFC uploader function of sorts. It’s possibly a wee bit more tricky to get right, but let’s see. It’s good you brought this up, as it keeps us on our toes!

1 Like

Hello @Walid, in your original post you mention that

it is certainly possible to send different versions simultaneously

…which is pretty much what I am trying to achieve. To be more precise, I would like to use a single sender component to push different parts of the model into separate streams. My attempts so far have been unsuccessful as the sender does create separate streams but pushes all speckle objects into each of them. Am I missing something or is the sender component simply not designed for that? :thinking: Many thanks, Mariela

1 Like

Hello @Mariela_Tsopanova,

I think I misspoke since I contradicted myself in the sentence that followed it. It would be more appropriate to say : “possible to send [data to diffrent streams] simultaneously.”

For now, as @teocomi said:

No matter what the structure of your data is, it will take all the data connected to the node, assign it the first message that is input, and send it to the different streams you listed.

I think there is only this solution for now:

I hope I have helped :slight_smile:


Hey there @Mariela_Tsopanova,

just jumping in to add on the previous answers. It’s true that you will have to create multiple senders to send different data, but you can still make it work simultaneously using the Grasshopper Data Dam component, and setting all send nodes to automatically send on new data.

You can do so on the Send node right-click menu:
Screenshot 2021-08-26 at 08.57.04

Then just use a DataDam to prevent any updates to the sender group until you actually press the play button, like so :point_down:

2021-08-26 08.54.34

You could also hook up the messages to the DataDam so that everything will be passed in at once. :+1:t3:

Do bear in mind that depending on the size of the objects to send to each stream, they will start to send simultaneously but some senders may take longer than others to finish.

Hope this helps!