No Unique Application ID When Sending Speckle Blocks Through Grasshopper

Hi Speckle Team,

I’ve run into an issue when sending Speckle blocks from Grasshopper.

It seems that when I send blocks (using the standard Speckle components), the objects do not retain a unique applicationId. This makes it very difficult to perform accurate diffs between versions, as I can’t reliably track which object is which across commits.

Has anyone else encountered this problem? Or is there something I might be missing in how the applicationId should be assigned when sending blocks?

Would really appreciate it if someone could take a look or point me in the right direction.

Cheers,
Ray

Grasshopper requires you to synthesise an applicationId if you expect to rely on it.

You can then add it as a prop by key…value

1 Like

Hey Jonathan, Thank you for your reply, it works, but not on Gen 3 connector, when i try to add it as a prop, it won’t overwrite the applicationId generated by gen 3 connector. Any workaround for Gen 3 connector?

Hi @Ray_Yong , I’ll look into enabling applicationId overrides in the new Grasshopper connector - do you need this id to be a specific one you assign, or are you happy with us assigning one as long as it maintains a consistent id for change tracking?

Hey @clrkng, ideally it would be the guid of the object, because i was trying to reference the object across few streams. If the ID can be consistent throughout multiple stream, it is also ok.

Ok, I might have a quick solution then, if you’re already working with model objects instead of creating new blocks in grasshopper.

I can push an update to allow our passthrough nodes (for Speckle Object, Speckle Block Instance, and Speckle Block Definition) to preserve an incoming model object guid. You should be able to change any other input on these passthrough nodes without changing the application id.

If this is what you’re looking for, I can push a new release soon with the update

1 Like

Thank you for your prompt reply. This sounds like exactly what i wanted. Also, if i pull a stream from speckle, and send it to another stream, will the application id or id change?

No, the application Id should not change in the case of re-publishing a loaded model, as long as the loaded model objects already have application Ids

1 Like

I’ve now released a hotfix for this: if you install our new Grasshopper connector version 3.5.1, the application ids are now persistent when you use passthrough nodes :slight_smile:

1 Like

Thanks Claire, I have another question regarding this, how can i update the geometry after streaming in my object, while keeping its application id? Is this possible?

Yes this is possible: you can use the Speckle Object passthrough node to do so.

Make sure you input your original object as the first parameter (a model object, or another existing speckle object), and you can input a different geometry into the second geometry input. This will leave the input object applicationId unchanged.