This blog is Part 2/2 of a two part blog series covering the Dynamo Core 2.12 release: Please read Part 1/2 first

TL:DR

Node Autocomplete now has a new UI, works with custom nodes and output ports and has an updated layout algorithm, a reimagined and modern Menu UI, introduction of a Preferences panel to capture all user-defined settings, large improvements to package management, the introduction of graph properties, new OpenXML nodes that mean you don’t need Excel installed, geometry improvements to documentation, memory optimization and long-standing bugs. As usual, there is a whole bunch more so please do check out the release notes!

 

So, what else is fresh in Dynamo Core 2.12?

 

An almost complete Node Autocomplete

We have been putting in the hours on Node Autocomplete to bring it up to scratch. We’re close to allowing it to graduate from an experimental feature… so close! We now have a fancy new Node Autocomplete UI to match our upcoming Dynamo Visual Refresh styling (Ooh teaser) that gives breathing room to the contents, persists until action is taken, is named appropriately and contains a link to further documentation on how Node Autocomplete works in the documentation browser. Explaining things like how to access it, how the ranking mechanism works and how the auto-layout mechanism works, we’ve beefed up the entire experience. Pretty cool stuff!

To compliment this fancy new paint job, Node Autocomplete has a new triggering mechanism of double left-click on a node port and persists until you take specific action; easier, more discoverable, more natural. We had to figure out a few interesting interactions to get this working, but see it as a much cleaner way to invoke going forward!

 

  • [ 1 ] Link to additional documentation on Node Autocomplete in the documentation browser
  • [ 2 ] Revamped Node Autocomplete dialog window that persists until you take specific action (Placing a node or exiting the dialog)
  • [ 3 ] Ports where you trigger Node Autocomplete now do via a double left-click action
  • [ 4 ] Extended documentation in the documentation browser, covering key concepts to explain the ranking mechanism, auto-wiring, auto-layout and more.

New Node Autocomplete dialog window

 

For new and intermittent users, we have added a dedicated Note Autocomplete entry to the carousel window in the Dynamo Getting Started Tour, explaining to new users exactly what the feature is and does, gently introducing it to you. Now it won’t come as a complete surprise and is much more discoverable.

For those of you who care deeply about how things look, the layout algorithm for Node Autocomplete has been significantly improved when placing new nodes so things are a little less… jumpy. We still have some work to do on this, but it’s in a much better spot than previously.

The search feature of Node Autocomplete now not only uses the node name, but Search also uses the node’s keywords and descriptions in the search key. This means the results coming back are more nuanced and better reflect the node you are trying to find. Powerful stuff!

And finally, enabling Node Autocomplete on output ports means you are no longer limited to building graphs from the end backwards (Rock on orthodox graph building folk – we got you). We have also ensured that Node Autocomplete works with Custom Nodes providing you have appropriately set your object types inside of your input and output nodes, enabling you to do some pretty powerful things and then share those with your peers.

For all you superstar custom node authors out there, the way to get your custom node working is to `specify the object type for each port`, making sure that you also specify the rank or depth of the information you want that port to ingest or spit out (i.e. A single item, a list of items, or a arbitrarily ranked list). The following steps will help you get your custom nodes singing and playing nice with Node Autocomplete! Hurrah for learning.

 

  • [ 5 ] Any name can be given to input ports
  • [ 6 ] You must specify the object type that your input port accepts in order for it to work with the object type matching of Node Autocomplete, otherwise it will fall back to the default input port set of node options
  • [ 7 ] You must retain the object type as output port name. In future releases output ports will use the same affordance as input ports**

** There is one known issue with output ports specifically for Custom Nodes engaging with Node Autocomplete, where the algorithm parses the output port name rather than the output port object type. A fix is targeted for the Dynamo Core 2.13 release.

Custom Node changes to play nice with Node Autocomplete

And looking to the future, we still have a fair bit of work to do on finishing Node Autocomplete. We are targeting the enabling multi-output ports, fixing the custom node bug (above) and introducing machine learning ranking that will take into account your graph context when suggesting appropriate nodes.

Proper graph properties!

Bringing Dynamo into the 21st century and finally making use of our “description” field in the dynamo file, you can now set graph properties in our brand new Graph Properties View Extension that help you annotate your graph, empower offices to standardize and let graph authors get all the credit they deserve for building epic automations.

Empower downstream consumers of your graph to better understand it through a Description, or if more visually inclined set an awesome thumbnail Image (They do speak a thousand words after all), provide a resolution path should something go wrong with the Author Name and link out to verbose graph documentation with the Learn more URL. If this basic set isn’t enough, then you can also add as many Custom Properties as you wish, defining both the Property Name and a field for the Property Value. You can use this to demarcate things such as associated files, or the creation date, or FYI’s… the world is your oyster! Cool for an individual user, even cooler for an office looking to standardize!

 

  • [ 8 ] Access the Graph Properties from the Extensions menu
  • [ 9 ] Set a verbose Description for your graph so that others can understand your workflow intent
  • [ 10 ] Set a thumbnail Image graphic, logo or screenshot of the graph which is stored as a Base64 string to represent the image. Picture’s speak a thousand words! Or, in this case, really long strings form pictures that then speak a thousand words…
  • [ 11 ] Put in the Author's Name so that subsequent users can understand who authored the graph to send kudo’s or ask questions of!
  • [ 12 ] Add in links to further documentation with the Learn more URL, noting that only valid links are able to be put here. Oh hello error message my old friend
  • [ 13 ] Should the above not fully suffice, you can add as many Custom Properties to the graph as you wish. Name them with the pencil edit button, or delete them with the cross and simply type into the value field whatever you want to
  • [ 14 ] All of these new graph properties are serialized (Saved basically) into the .DYN file in two primary places; Under the heretofore unused Description key and under a series of new keys; Thumbnail, GraphDocumentationURL, ExtensionWorkspaceData and Author.

Graph Properties View Extension

Making Python ever better

We have added support to the Migration Assistant for two new methods; clr.AddReferenceToFleAndPath() and clr.AddReference() so that they now correctly migrate when upgrading from IronPython2 to CPython3. No longer will you have to manually figure out the difference here – braincell win.

CPython3 has some differences to IronPython2, and one such difference was making it harder for graph authors to import/reload their own custom CPython3 modules in the same was as IronPython2, so we added a CPython3 reset button to the Preferences Panel that enables the reload of CPython3 modules and also marks the graph dirty via the HasUnSavedChanges flag. Simply put, this means you can make changes to any of your externalized CPython3 modules and have your current Dynamo session reload those. Side note… I said CPython3 and IronPython2 waaaaay to many times in this paragraph. Accurate, but so repetitive. Whoops.

And last, but certainly not least, we also added Python Dependency information onto the Package Manager, so you can see what packages require which Python engine to run. Hurrah for information! This dependency will scan all incoming packages for Python nodes and add that dependency information to the package metadata, surfacing it inside our new Dependencies tag that replaces the old set of host information.

 

  • [ 15 ] New Dependencies tag collects all package dependencies: Host information as set by package author, and automatically scans for Python dependencies upon package upload (Note: Scanning PM to assign to historical packages is in the works)
  • [ 16 ] Reset CPython button under the Python tab in the Preferences Panel allows you to reload modules on the fly

Dependency information tag and CPython3 reset button

 

API Changes and Smaller Buckets of Work

To go hand in hand with the Graph Properties work above, we have made some additional API changes, including adding documentation for exceptions thrown by the UpdateModelValue API (To help you better avoid some Dynamo crashing scenarios), adding in a new Linting API  that includes a Linter manager (Where a Linter is the automated checking of your source code for programmatic and stylistic errors), handling subscription to an active linter and any linting issues in the graph. Note, this linter is currently not accessible to Extension Authors, but will be made so in a future release! Rockin’. The ability to have better control over graph opening and closing operations as part of any extension has also been improved through work done on the ReadyParams API.

We have also enabled the NTML authenticator (A Windows Challenge/Response authentication protocol used on networks that will authenticate a user without sending that user’s password) which will support users behind a proxy environment to use the Dynamo Package Manager. Simply put, if you are working for a large scale office and had issues with Dynamo playing nice over your network, then this should help! We have also added an expander to the Workspace References Extension to collect all the packages in preparation for work underway on collecting not just package information, but all references required to have your graph run if you send it on to another person.

 

Awesome, so where can I grab Dynamo 2.12?

Dynamo 2.12 can be explored right now through the dynamobuilds.com website or the Github build page – available in the Sandbox version of Dynamo, and will be made available in our host integrations at a future date.

 

If you’re curious, you can also read our ‘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.12, 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