Grasshopper: Deconstruct Speckle Object failing to collect data

Hi guys,

Just noticed this behavior when trying to deconstruct different speckle objects using the Deconstruct Speckle Object.

image

Seems like the DSO component is failing on collecting the data for some object properties.

Getting the data using the Value by Key component works as usual. I’m using grasshopper-2.5.4-systemwide.

1 Like

Hey @vwb!

Thanks for bringing this up! I just fixed some things on the DSO component, for our 2.6 release (coming soon!) so I’ll double check if this is still happening.

Quick update!

Found a fix for this. Turned out to be an edge case of the new DataTree structure we hadn’t caught yet!

Thanks a lot for catching it! :raised_hands:t3:

This will be included in 2.6.0.

As a side note, due to some other problems inthe DSO component, i’ve actually separated it onto a completely new one, so any files you’ve generated using the “systemwide” version may need to be updated manually.

I’d love to have your feedback on how these things break when we release 2.6.0, so we can avoid this as much as possible in the future :slight_smile:

4 Likes

Hey guys, I’m reopening this because bad things are happening with the Deconstruct Speckle Object (DSO) and I’m losing a lot of confidence on it.

My use case is I want to get Room["outline"]["segments"]["elementId"]. I need to disable the conversions, otherwise things get converted to curves, on the outline or segments level. When I do that, there’s blood on my screen.

Am I missing something here?

Using Speckle for Grasshopper 2.6.1

Hey @vwb!

Sorry to hear this!

What’s the error that you’re getting on this? And could you share the stream that is causing this? Or a reproducible example of it?

Meanwhile, I’ll poke around my side of things to see if I can get some clarity on this.

I think I managed to reproduce the issue and found a fix for it.

I’m releasing version 2.6.3 to address this (and an even bigger issue) for all connectors.

Should be hitting your Speckle Manager sometime this morning :wink: Let me know if that does the trick!

The error I was getting was about a null reference in the BeforeSolveInstance method of DSO.

I’ve also added some safeguards so that if this (or anything similar) happens, you should get a more informative message from the node.

Thanks again for taking your time to report it, and for the patience while we fix these things.

2 Likes

Oh nice👌🏼. Thank you man!

2 Likes

FYI, forgot to mention this but I find that the easiest way to grab these nested values is using a python node.

If you don’t need to do anything “speckle specific” you don’t even need to add the references to our libraries.

In this particular case, for a default python node, the code would look like this:

a = [seg["elementId"] for seg in x["outline"]["segments"]]

Of course, that would not take care of conversions for you, but you can always shove the result in a To Native node when needed.

EDIT: The same applies for setting deeply nested values!

1 Like

Great tip. Thanks Alan!

1 Like