There’s a lot happening this week in the world of Generative Design for AEC at Autodesk. Aside from the Space Analysis package we announced, there’s interesting news from both the Dynamo and Refinery teams.
The Dynamo team has kicked off their daily build process once again, this time focusing on Dynamo Sandbox builds. This is very interesting news for me, and probably for other people working on GD projects outside of Revit: I use Dynamo Sandbox to do the majority of my GD-related studies – usually by starting the executable found at %programfiles%\Dynamo\Dynamo Core\2\DynamoSandbox.exe that’s installed with Dynamo for Revit. It’ll be interesting to see how Refinery’s support for Sandbox builds will evolve: right now I’m using Dynamo for Revit 2.0.2, for instance, while the daily builds are of 2.3.
Not to be left out, the Refinery team has just posted a new version via the Beta portal. v0.4.44 is an interesting release, as you can see from the announcement. One thing I noticed straightaway is the UI performance is way better: I run Windows inside a Parallels VM on an aging MacBook Pro, so I often had to wait some time for Refinery’s React-based UI to refresh (although I have a sneaking suspicion that much of the previous lag related to UX “enhancements” I’ve made in my own fork of the Refinery codebase). Anyway – the UI is much snappier now, which is very cool.
It’s also really nice to see some of the filtering improvements, allowing you to drill down into interesting areas of the design space. Here’s a how the parallel coordinates view can be used to filter to a subset of solutions to the campus layout example shared in the last post:
Switching across to the scatterplot we can see the filtering gets applied there, too. Very cool!
That’s on the front-end… on the back-end – which, for now, is still running on the computer running Dynamo, rather than somewhere in the cloud – there are also significant performance improvements. These derive primarily from an upgrade in the version of Dynamo used. As mentioned last time, the version of Dynamo being run by Refinery’s server component is now Dynamo 2.2. While it brings quite a performance leap over the prior version being used (2.0), you need to be aware there may be a migration impact that’s greater than the client version increase (from Refinery v0.4.26 to v0.4.44) might lead you to believe.
When debugging the campus layout example, for instance, we found it contained two main issues that needed addressing. The first was a bug in the graph where we used DesignScript to get an item from a list that wasn’t actually a list. (Basically we flattened a list of lists earlier in the graph – to improve the logic of the data being passed through – but then forgot to clean up some indexing code further on.) In Dynamo 2.0 this over-indexing just works – due to array promotion – while in 2.2 it (rightly) results in an error. The other issue related to cleaning a list of any null values that were returned by a geometric operation that had failed (in this case PolyCurve.ByJoinedCurves). Cleaning the list before passing it on caused the graph to keep working.
The trick to know is that you can use Dynamo 2.1 to test your graph, should you find Refinery doesn’t generate meaningful results (geometry + outputs). Fixing it there should let Refinery server (using Dynamo 2.2) to run the graph properly. In time we need to have Refinery report this kind of issue directly, of course. But at least this is a way to get unblocked in the meantime.