Dear Early Adopters,
We have resumed posting pre-release builds of Dynamo on DynamoBuilds.com and on the DynamoBIM.org/download pages. These are the early stage builds that are leading to the Dynamo 2.0 release. Please keep in mind that it is early days for these builds, there are still a number of large moving pieces and, as always, this area should be treated as an active construction site. If you do decide to participate, please wear your hardhat!
Dynamo 2.0 will be a “major” release of Dynamo, and as such will save files to a format that is not compatible with earlier versions. Any files that are opened from the 1.x versions will be copied to the regular backup folder that is accessible from the Dynamo opening screen.
As a major (pre-) release, it can also be installed side-by-side with existing 1.x versions, allowing you to experiment with the early pre-release tools without interfering with your existing workflows. You will be prompted to choose which version you wish to run when first launching Dynamo in Revit. This setting will be saved per-session of Revit. Restarting Revit will enable you to change to a different version of Dynamo.
So, welcome to the work-in-progress, and please send in your feedback to Github issues taking care to note that you are working in the pre-release builds.
Particular areas for feedback
Package Developer Migration
- Please consult the list of API changes for any Zero-Touch or UI node migrations that will be necessary to implement: https://github.com/DynamoDS/Dynamo/wiki/API-Changes. We will be creating a more comprehensive set up migration and upgrade guidelines for package developers soon.
- The new node library features a different organization of many of the functionalities to allow for an easier entry for new users, and hopefully will allow long time users to find things they never knew were there.
- We have a new backing technology for the library, based on web technology to allow us to reuse the interface in other contexts.
- The Library does not yet collapse/minimize. We’re working on it.
- Custom nodes and packages will now appear separately from out-of-the-box nodes in the
Add-onssection of the Library UI. This is still a work in progress and may have interaction issues.
- The Library UI may be displayed blank with Dynamo for Revit on first load.
- WORKAROUND: An application minimize/maximize/restore sequence may restore the view of the Library UI.
Dynamo 2.0 has changed from an XML-based file format to JSON. This is another change to facilitate use and reuse of Dynamo graphs in other, more web friendly environments. One particular feature of this change is the separation of user interface concerns from the business logic of the graph to allow for cleaner re-use of Dynamo graphs in headless or other non-node editing contexts.
It also means that we are saving and opening graphs in a new way, which is kind of a big deal. Please try saving old graphs in the new format, make sure that all the information that you had in the original is preserved when you reopen, create new custom nodes, use old custom nodes, and other experiments with the actual files on disk.
DesignScript Language Changes
We will provide a more in depth discussion of these changes soon. In general, to simplify the language for easier maintainability and increasing legibility, the following changes are underway;
Variables are immutable to disable associative update in code blocks
- In a nutshell, if you use a variable like “x” in a code block, you cannot redefine “x” again in the same code block.
Compile all UI nodes to Static Methods
- Previously there was ambiguity about what function would execute with Functions bearing the same methods (examples; Geometry.Translate and FamilyInstance.Translate). This would lead to problems in lists with heterogeneous data (example; failure to process valid data in lists where the first item is invalid). Prior to this change, FamilyInstance.Translate would take in any geometry and translate. Now, you must be precise about what type of data you use as your input for these type of nodes.
- Disables function overloads which only differ in parameters’ ranks. If there are overloads, the first one wins. More details here: https://github.com/DynamoDS/Dynamo/pull/8140
Disable array promotion with replication
- Functions no longer add another rank of nesting for inputs that are single items. For instance, if you have a list of numbers and a single number in a cross lacing situation, you will now have a flat list rather than a nested list (old behavior).
Support return statements without assignment
- “=” not needed (but is allowed) in either function definitions or imperative code.
New syntax for list@level
- Previous syntax of @-2 is now @L2
Variables in imperative blocks will be local to imperative block scope.
- Not yet implemented. Variable values defined inside of imperative code blocks will not be altered by changes inside of imperative blocks that reference them.
- Not yet implemented. We are in the middle of creating a separate Dictionary data type and separating it out from aspects that are currently part of existing 1.3 List functionality.
- There is new functionality with Python Scripting nodes, which allows the editor window to stay open while executing the code, multiple editor windows to be open, title in the editor matching the node’s title, and a Run button to re-execute code. https://github.com/DynamoDS/Dynamo/pull/8182
- Custom template loading: https://github.com/DynamoDS/Dynamo/pull/8122
New Node Behavior
- Color Picker
- Date/Time Picker
- ImportExcel: Now has an option to show or not show Excel when executed
- Expanded file operations nodes: https://github.com/DynamoDS/Dynamo/pull/8069
- Changes to lacing options: https://github.com/DynamoDS/Dynamo/pull/7399
As part of an ongoing effort to simplify the User Interface and increase the maintainability of the code, several functionalities that appear to be unused or undesirable have been removed.
- Preview Upstream
- Saved pin state: The Preview Bubble pin state is not persisted in 2.0 graphs. Graphs saved in 2.0 will always open with preview bubbles closed.
- NewtonRootFind1DNoDeriv and NewtonRootFind1DWithDeriv are removed from Dynamo core libraries.
- Coming soon: Dynamo Selected Revit Model Curves and Detail curve no longer automatically render in geometry previews. This is by design to make consistent with other Revit elements and prevent certain crashes. Users can still use Element.Geometry and Element.Curve to visualize the curves.
- Dynamo Sandbox is not currently available but will be added back to the installer soon.
- The DynamoSamples “SampleLibraryUI” library will not function correctly when loaded as a package
- Dynamo Player is not yet available for Dynamo 2.0. If you start Dynamo from Revit in 2.0 in the version selector, Dynamo Player will be greyed out. If you pick Dynamo 1.3 from the version selector, you will be able to use Player as before.
- WORKAROUND: None in 2.0 yet. Still available in 1.3
- If the network drive pointed to by “Manage Node and Package paths” is > 1TB in size loading Dynamo may take a minute or more, irrespective of actual package size.
- WORKAROUND: Replace the share with a smaller one containing the packages.
- The Sample files under Help are not yet provided by the installer.
- WORKAROUND: Use those provided by a 1.3 installation or download from these sites:
- The Getting Started pages are missing from the application startup sequence.
- Upgrading a 1.3 file with the SiteLocation node will remove the node.
- Dynamo for Revit does not support the AForge library (as demonstrated in the DynamoPrimer examples for ZeroTouch node integrations) and gives a crash.
- Geometry.IntersectAll node may fail to return a valid intersection in geometry with spheres
- Upgraded graphs with nodes set to “Longest” lacing option may not function properly.
- WORKAROUND: Manually change lacing option on these nodes
- When used in a upgraded 1.x files, several TSpline nodes gives an erroneous warning when hooked up to valid inputs and no geometry is rendered.
- BevelEdges, BridgeFacesToFaces, ExtrudeEdges, ExtrudeFaceAlongCurve, FillHole, SubdivideFaces, WeldVertices, UnweldEdges, UnweldVertices, TSplineEdgeInfo
- Removing a semi-colon from a Code Block Node line may throw an exception in a multi-line code block node that is connected to another node.
- Toggling the freeze state can cause a node to be executed twice after editing a Code Block Node.
- Due to the addition of the
Add-onssection of the browser and the separation of out-of-the-box nodes from packages/custom nodes, the custom node creation method needs to be updated to match new interaction models. We are actively working to fix this.