Thursday, April 16, 2015

Dynamo 0.8 Release

By Zach Kron, excerpted from the Dynamo BIM blog...

We have been heads down for a long time now, building the newest release. After many rounds of feedback from users on pre-release builds, we are very excited to get some long awaited functionality out. The list of new toys and capabilities is long and exciting, and there has also been a lot of behind-the-scenes reorganizing of code to enable faster, more stable development. Some of the more evident changes are a significant simplification of units and their interaction with Revit and a more user-friendly interface around the Library UI. Please read the list below and explore the links for a rundown of the changes.

The jump from 0.7 to 0.8 is very different than the change from 0.6 to 0.7 was. While there is a new look and feel, the fundamental changes are improvements to old methods and new tools in addition to old tools. Your 0.7 workflows should continue to work just fine, and generally will be able to be simplified from what they were. If you are already happily working away on 0.7.5, have no fear, you can also install 0.8 side-by-side with 0.7.5 (during side-by-side installation, there is also a one time copy/paste of your existing Packages from the 0.7 to the 0.8 installation folder). We do encourage everyone to upgrade your existing workflows to the new builds to take advantage of the fixes and features. Users with pre-release builds of 0.8 are encouraged to fully uninstall before installing the released 0.8

New Library UI

Perhaps the most obvious change in Dynamo 0.8.0 is in the Library UI, which has a more visually expressive aspect, with icons and enhanced tooltips that we hope will make finding and choosing functions easier and more enjoyable.

There are more projects on the way with search and library, but we hope that this new interface will allow users to more quickly explore the tools that are there and understand the capabilities. Better term matching should also provide a better match between search entries and finding the tool you are looking for.

Unicode or “Special Character” Support

In Dynamo 0.7, workflows with “special characters” common to many languages were impossible. In 0.8.0, users with Æ, ¥, え 㐦, or any number of “Unicode” formatting in their Revit parameters and code blocks should be able to work without difficulty.

Default Inputs, Tooltips, and Lacing over custom nodes

User created custom nodes in 0.7 often required the use of List.Map and List.Combine to use them in most cases. They did not have enough information in them to be able to work with lists of data coming into them as the out-of-the-box nodes did with “Lacing” tools. They also could not have default values applied to them. In 0.8 custom node inputs have a special syntax available on input nodes to allow users to specify the expected data coming in.

This opens up a LOT of capabilities with customs nodes, perhaps the biggest thing being automatic lacing, but general usability will be much better. Existing nodes are unaffected, and users will need to add the special syntax to either new or old nodes.


The way Dynamo interacts with units will significantly change in 0.8. We hope these changes will make using units more intuitive, both when interacting with Revit and modeling purely in Dynamo. The basic idea is that there are no more units in Dynamo! The workflow pictured above would have needed an additional 4 nodes to make it work in 0.7.

We think it makes the most sense to work with numerical (non-united) values in an abstract visual programming language like Dynamo. If your existing graphs use nodes that return united values (such as the SIUnit or Length nodes), they will continue to function, but will show a warning saying they are obsolete and suggesting an alternative. It is best if these nodes are removed from the graph.

Nodes that interact with Revit will use the project unit settings in Revit to return numerical values in Dynamo that match the values that you are using in Revit.

While we have removed the ability to place SIUnit nodes or other tools needed to convert or manipulate united numbers, we have added a couple of convenience methods to work with units in the ways that are comfortable to you. You can find these in the Core-Units section of the library. These may be needed to for existing custom nodes that use Python or otherwise extract data that you want to control the unitization.

Run Automatically

A small change with big implications.  New files created from scratch will execute their workflows automatically, so any initial design moves or changes made in the graph will give immediate feedback to users. We have found this aides tremendously when people first start using the application. It also helps in the creation of larger more complex workflows to limit the accumulation of errors that go undetected. The Dynamo team has wanted to make this switch for a very long time, here are a few reasons why we’ve made this change.
  • Dynamo is an exploratory Language. For many operations, it is important for users to get immediate feedback on the work that they do. This is recognized in many education and computer science circles as being very effective ways to work quickly without accumulating bugs that are difficult to track down later. Unlike code/compile/run types of operations, Dynamo has the opportunity to tighten the loop and give constant feedback on design decisions and constant feedback on code validation.
  • Dynamo is a very different environment for design than many people are used to. One of the things that we consistently see in new users is befuddlement about why they are not seeing any changes in their data when they make changes in the graph. Our hypothesis is that the learning curve will be much more approachable when users have immediate response to early stage graphs.
  • Dynamo is increasingly becoming an application that interacts with more applications than Revit. Revit is relatively slow, but there are many applications that have a faster response time. We want to start pushing for higher performance rather than to the lowest common denominator.
  • Dynamo is increasingly being used for more computation only needing internal executions. As we see users relying on Dynamo geometry, Dynamo list management, and Dynamo data interactions in addition to and sometimes instead of Revit elements, we have the opportunity to give near instant feedback.

New Behavior is:
  • Files Save their run state. Files that have become slow or for users who prefer run auto, there is only a one time change that needs to happen to a file.
  •  Files that crash will automatically be saved in a manual state. Any variation from this is a bug. In the event that this manual state is not created for a crashing file, there is a “plan B” approach: edit the .dyn file in a text editor, changing RunType=”Automatic” to RunType=”Manual”

Periodic Execution

New functionality has been added for nodes that require regular updates. For instance, the “web request” node polls a specified internet address. How often? As often as a user wants to specify.

For most nodes, and many dyn files, this functionality is relevant. It is only enabled when a node is placed in the canvas that requires regular re-execution. Only “Web Request” currently provides this capability out-of-the-box, but keep an eye out for new tools by 3rd part developers on the Package Manager that will do things like regularly listen to hardware devices for updates or run animations.

Code Structure

Revit libraries have been separated out and now live in their own repository.

There has been a refactoring to provide a strong separation between what a Dynamo graph is and how it is displayed. This makes it easier for users to write powerful nodes, and for us to move the Dynamo platform forwards.

Namespace Collisions

Existing Code Block Nodes no longer affected by name collisions with functions that come from installed packages. For instance, Point.ByCoordinates in a Code Block Node was affected by a collision with a Point. Operation in the popular Rhynamo package and would throw an error saying “Warning: Dereferencing a non-pointer. Dereferencing a non-pointer.”

Hardware Acceleration in Revit 2015

Hardware Acceleration was turned off when running in Revit 2015. Graphic speed and clarity is greatly improved

There's more information available on the Dynamo BIM blog.

No comments:

Post a Comment