Welcome to 2020 and a new release of Dynamo!

After a couple of months of development time, today we ship the Dynamo Core 2.5 release! This release is a larger release that targeted many fixes for our yearly product release cycle for the Hosts of Dynamo (Revit, Civil 3D etc.), some keeping the lights on work (Retention of geometry and the background preview!) through component upgrades and work around stability, performance and clarity.

 

TL:DR

A slew of new enhancements to the performance and stability of Geometry, memory leak fixes, unresolved package loading improvements, clarity to the Package Manager and its features and a massive speed gain when dealing with large graphs in the context of pushing data to Revit. Also the final polish to our Workspace References extension and a bunch of bug fixes, API additions and general improvements.

 

 

What’s new with Dynamo 2.5? 

We have cleaned up the Workspace References extension, including a shiny new rename from the old Workspace Dependency Viewer. The feature has been brought out of it’s preview state by cleaning up margins and UI rough edges, enhancing tooltips with a specific target towards clarity, adding in refresh capability and finally the extension will now alert you if Dynamo requires a restart to finish installing a package. Workspace References is now considered complete for Phase 1!

    1. Consistently named access to the Workspace References extension with toggle.
    2. Renamed extension to Workspace References. Removed ViewExtension suffix.
    3. Addition of manual refresh button to extension (Always running would incur a performance hit that is too big a cost!)
    4. Removal of the Preview Banner as extension has moved out of the preview state.

Workspace References Extension

We have made a significant performance improvement (In many orders of magnitude!) to Dynamo4Revit when using a graph with large node counts that makes changes to the Revit Document. We’re talking about a run duration difference in a sample graph of 456 nodes going from 23 seconds to ~20 milliseconds! Absolutely awesome change and a huge shoutout to Craig Long on the Refinery team for implementation of this.

 

Stability of Dynamo Geometry (LibG) has been improved where users should no longer see hangs with large amounts of geometry when memory usage does not increase and, for the C# and Python users amongst you, LibG will no longer require manual disposal of Geometry which is no longer needed (Geometry that goes out of scope). Expect to see a more stable Dynamo and safer ways to utilize Dynamo’s geometry. Geometry Disposal is still, however, required when you are using threads so take note Developers!

 

Integration Documentation has been added to the Dynamo Github repo that shows you how to integrate Dynamo into other applications via a Dynamo Custom Entry Point, explains in detail how Element Binding works and what problems trace tries to solve and explores what Selection Nodes are how to start thinking about them. These are the first three documents – expect more to come in the future!

Dynamo Integration Documents

For the Package Manager UI, our focus was on Clarity, done by removing the downvote button to reduce confusion and promote positive reinforcement, changing the filter button into text to make finding this functionality easier after engaging in customer feedback, and greying out the deprecate buttons for packages one does not own. The aim here was to reduce confusion of existing features with light-touch work.

  1. Changed the Filter icon to Filter by text to enhance discoverability.
  2. Removal of downvote button to promote positive reinforcement and reduce confusion.
  3. Both the Deprecate and Remove deprecation buttons are now greyed out for any package that you do not own.

Package Manager Improvements

Packages installed during a Dynamo session that contain ZeroTouch nodes in the unresolved state will be resolved without reopening the graph! No more time consumed by having to save, close and re-open your graph just to get the package working. Hurrah for time savings. We have also improved the messages from Unresolved Nodes to be much more helpful and point to the real assembly or type name of that missing node. Instead of simply pointing to DynamoCore you should now have much more information to help you understand the problem. Hurrah for self-help!

Unresolved node error messages

Python int64 types can now be operated with much easier. Expect your REALLY large numbers (Those with 20 or more digits) to change into BigIntegers! Mmm fancy.

Python Numerical Support

We have added a new Equals node with tolerance to DynamoCore that allows you, the user, to control how tolerant it will be! It lets you choose how well the node will play nice with things input into it. For all of those weird cases where the existing Equals node didn’t work and you didn’t know why please read Aparajit Pratap’s awesome blog post on how to Compare Numbers in Dynamo … and enjoy the new node that should resolve them! This has been installed side-by-side with the existing tolerance node, so there will be no effect to existing graphs.

 

Equals Node with tolerance input

Dynamo’s Geometry has been upgraded to the latest version of our Geometry kernel. This means you can leverage your favourite geometric aspects of Dynamo while also leveraging new features, bug fixes and better performance.

 

As we look to strengthen the foundations of Dynamo in a series of on-going work focused at raising the bottom line on performance and stability – improving the many layers of Dynamo (VM, UI, views, interaction model, rendering etc.), we have cleaned up many viewModel and view memory leaks which means Dynamo’s views will no longer eat more and more system resources over time, and have also made a small performance improvement in preparing data for the rendering of geometry. Expect more work to be done here in the not-to-distant future!

 

We have done a bunch more work on API changes including, but not limited to allowing the user to specify a specific ASM path for Dynamo Geometry, exposure of ViewModelCommandExecutive to allow View Extension authors access to more commands, and the addition of the DummyNodesReloaded event to the WorkspaceModel to allow for in-session loading of packages.

 

 

Where can I get Dynamo 2.5?

Currently you can get Dynamo 2.5 through the dynamobuilds.com website or the Github build page – available in the Sandbox version. In the not-to-distant future you can expect to see Dynamo 2.5 (or beyond!) show up in our host integrators (Revit, Civil 3D, FormIt, Alias, Advance Steel).

 

 

Release Notes

In order to keep a semblance of propriety to this blog post we’ve skipped a few things! For more information on other minor features, bug fixes, and known issues in Dynamo 2.5, go check out our release notes.

A big shout-out to everyone who contributed to the release and the entire Dynamo community for continuing to support our work. As always, please let us know if you have any feedback or suggestions!

 

The Dynamo Team