Hi there!
This may seem simple but there’s a couple of things to pick apart here:
MAGENTA BOX → Create Speckle Object
doesn’t just convert the geometry, it creates a new object that holds the geometry (converted to Speckle) on the given property. The resulting object is not convertible for grasshopper and not considered “displayable” by the viewer, it just provides structure.
BLUE BOX → This directly Converts the geometry into a Speckle object (not wrapped, if you input a mesh you get a Speckle Mesh out). Additionally, it get’s extended with custom properties as expected; but Grasshopper does not support metadata attached to geometry objects, so once that “Speckle Mesh” that holds extra metadata get’s converted back to a “Grasshopper mesh”, the extra metadata automatically gets lost (don’t worry, you can still access it, just not the way you’re doing so here).
As you’ve discovered, the viewer considers all geometry “selectable” and will show it’s metadata which will include the information you attached. You’re only loosing it on the conversion that’s happening after receive.
Do note that the vast majority of components that perform Speckle conversions will try their best to convert things to speckle when possible, so if you input a Grasshopper mesh, we convert it to Speckle for you and attach the speckle equivalent.
The same goes for outputs, if we’re about to output a Speckle mesh but we know it can be converted to Grasshopper, we do so by default.
You can change this behaviour in every node that performs conversions by right-clicking it and selecting “Do not convert”. This way the information stays in it’s “Speckle form” and still contains the metadata you attached.
Once there, you can extract your extra properties and convert the mesh to Grasshopper as 2 separate parallel steps (if you don’t see the “To Speckle/To Native” nodes i suggest you activate them on the Speckle 2 top-level menu → Show/Hide components → Show dev components"
Possible solution
I suspect what you’re after is to have the MAGENTA strategy also be selectable in the viewer to see it’s properties. For that, you just need to name the property that holds the “displayable geometry” with a specific name: displayValue
and set it as List access.
This will turn this
Into this
I’m aware these is somewhat of a power-move that is not really very well documented… but it is the basis for the selection behaviour of every object in Speckle (walls, beams, floors, all follow the same pattern, placing the meaningful displayable geometry in a displayValue
property.
I would discourage you from using the BLUE BOX strategy
Blue box strategy is lossy, as many applications do not support nor recognise this. It is only useful in rare cases and usually you’re better of following the “displayValue” strategy, as “displayable objects” have higher chance of being supported in other apps gracefully.