Grasshopper is officially Stable 🦗

Grasshopper Stable 3.6.0 released

@Community We’ve reached a major milestone, and released our first stable version of Grasshopper connector in Release 3.6.0!

As always, you can install the latest release of connectors directly from our app.

What this means

All Speckle connectors are now in stable :partying_face:
Our core Grasshopper workflows are now enabled (recap of workflows below). Any Grasshopper script using components from 3.6.0 onwards will be backwards compatible, meaning there will be no breaking changes to their functionality.

Workflows recap

Design Coordination
Grasshopper is now fully aligned with all other connectors, so you’re always working with the same elements: Collections that organize your Speckle model objects, and geometry and data objects that have the same structure as those from any other connector.

:warning: The legacy grasshopper schema components for Revit, Structural, and other specific applications to create native elements are not included in design coordination.
Please continue using the legacy Grasshopper connector if these are essential to your workflow.

Business Intelligence
This is where Next-Gen connectors shine! Use Grasshopper to run calculations on your models and attach critical properties to objects for filtering in the viewer, building beautiful dashboards in PowerBI, or consuming in your own custom Speckle applications.

Online Presentation
Use passthrough nodes to easily assign colors and materials to geometry, so you can use our best-in-class viewer to share your computational geometry and analysis results.

New in 3.6.0

Data Objects

Working with models in Revit, PowerBI, Archicad, Tekla, Etabs, Civil 3D, and Navisworks?
Now you can use the Speckle Data Object param to directly work with objects from these applications, which often represent more complex elements like Walls that can have multiple pieces of geometry associated with them.

  • Speckle Data Object passthrough node allows you to create or modify data objects

  • Using the Deconstruct node on your data object will expose all object fields that you can see with dev mode in the viewer.

  • Want to load geometry in Revit with a specific category assigned? Just add a builtInCategory property with a revit category string value to your Speckle Data Object, and it will be loaded as a direct shape with that category

Other changes

:warning: We’ve updated our Grasshopper Async component! If you are using this in any of your custom GH toolbars, you’ll need to upgrade to the latest version if you’d like to have the Grasshopper connector installed simultaneously

  • For Grasshopper ↔ Grasshopper aficionados, you can now add planes and vectors to the Properties on any Speckle Geometry.

  • Create Properties node inputs now have a list access setting if you’d like to add list property values to objects.

  • Properties Selector and Query Properties nodes now take Properties as inputs instead of Objects. This will allow you to chain these nodes together if you want to work with properties at various levels of nesting.

  • Query Properties node now has a single output of values instead of variable output lists.

  • You can now add an optional version message when publishing a model.

  • Speckle Object has been renamed in all instances to Speckle Geometry

What’s next

More Grasshopper tutorials are in the pipeline, first and foremost Grasshopper to PowerBI.

We’re working on getting our documentation up to date, so look out for a more detailed breakdown of Speckle Grasshopper nodes and how to use them on our docs page in the following week :smiling_face_with_three_hearts:

13 Likes

Hello,
How can I output the list of value when i created properties with list?

Cheers,
Ray

Hey @Ray_Yong,

You can use the Speckle Properties passthrough component.

Hello @bjoern,
I tried, but it have a different result than yours.


It does show the list on speckle web.

Am i missing something here?

Cheers,
Ray

If i send string/number data in as a list, it gives me the “System.Collections.Generic.List”.

If I send integer data in as a list, it returns me empty.

Filed a bug report for this - most likely we were not accounting for list access in the passthrough node.

p.s. We’ve got quite a few GH tickets in the backlog, and should have some bandwidth to tackle them next week once we wrap up a bigger feature release - thanks for the reports in the meantime, we’ll get around to fixes as soon as we can!

1 Like

Hi @Julius_Ang , @Ray_Yong,

Thanks for the reports on this. As @clrkng mentioned, we weren’t accounting for list access in the passthrough node. Having a mixture of prop types presented some challenges in keeping native access to, for example, lists.

BUT, we have a solution! We’ve just released v3.8.2 which includes a Expand Properties component that dynamically outputs defined properties in a way that’s easier to work with. There is no change w.r.t. using a panel output on the passthrough node as gh doesn’t allow for this mixed-type behaviour in a single output. The below video illustrates using the deconstruct and new expand properties node to achieve the same result. Expand properties is obviously recommended in this case.

Let us know what you think of this!

3 Likes

Hey @bjoern, thanks for the bug fix, it works!

However, when i tried it with query properties, it still output the “generic List” thing.


It will be good if this also able to output a list.

But for now, i can work with the expand properties first.

Cheers,
Ray

1 Like

Thanks for the feedback @Ray_Yong! I’ve fixed this and will be available with the next release - I’ll ping you once that’s in. Hoping the Expand Properties works sufficiently in the interim!

1 Like

thanks @bjoern, one more thing, is there a way to retrieve properties like ID or appID, similar to the query properties. as in i can feed in the exact properties that i want to extract, instead of a deconstruct method?

i found out that the deconstruct component will changed based on the geometry it get, and when it change, it will disconnect the connection previously made. im currently using deconstruct component in an automation script with gh to retrieve appID and ID for diffing. and this deconstruct component is breaking the script most of the time.