FormIt + Dynamo
Computational Design in FormIt
Last updated
Computational Design in FormIt
Last updated
FormIt for Windows has Dynamo built-in for incredible computational design workflows.
FormIt 2024 includes Dynamo 2.17!
FormIt 2024.1 fixes a critical issue preventing Dynamo from running when Revit 2024 was also installed.
FormIt 2023 enables running Dynamo graphs without a SendToFormIt node, adds the ability to send FormIt levels to Excel, and adds control of curve and surface faceting via new FormItGroupOptions nodes.
FormIt 2022.1 adds the ability to use familiar FormIt dimensions as inputs, introduces object-level options, and offers an early preview of JavaScript API access. Get it here.
FormIt 2021.3 adds the ability to use multiple SendToFormIt nodes and nested Dynamo graphs.
FormIt 2021 adds the SelectFromFormIt node, and enables always-connected sessions, multi-instance editing, and more.
Learn about the interface and link your Dynamo directories to FormIt.
First time using FormIt + Dynamo? You may need to configure your system first, in order to see the 3D canvas in Dynamo.
Use the Dynamo panel to launch Dynamo, place Dynamo Groups, and edit Dynamo graphs:
The Dynamo panel works just like the Content Library, allowing you to link and manage local directories containing Dynamo files.
Switch between linked directories using the drop-down:
You'll only be able to view .dyn files and subfolders through the Dynamo panel.
Use the Filter bar to filter out Dynamo files and subfolders so you can easily find what you need:
Author and edit graphs in Dynamo, or flex parameters in FormIt without ever seeing the graph. Or both at once!
FormIt supports three types of Dynamo graphs:
Data graph: Data graphs have no SendToFormIt nodes and are used to surface or pass data through FormIt. For example, you can use data graphs to send data to Excel or calculate non-geometric data and display it in a Watch Node.
Geometry graph: These graphs produce geometry immediately and need to be placed into the canvas to see their parameters. After clicking the thumbnail, the geometry will appear on the cursor for placement into the 3D scene. This graph requires at least one SendToFormIt node to be present and receiving geometry at the end of the graph.
Selection graph: These graphs require FormIt selections before running. You'll see a prompt in the upper-left corner of FormIt to indicate what needs to be selected. After providing the selection, the graph will run and generate geometry relative to the selection. This graph requires at least one SendToFormIt node to be present and receiving geometry at the end of the graph.
In the Dynamo panel, click the thumbnail of the Dynamo graph you want to run.
You can use the built-in samples, or link a library of your own Dynamo files.
Placing the geometry into FormIt will embed a copy of the Dynamo graph into the FormIt file.
To generate geometry, a SendToFormIt node needs to be attached to output geometry nodes in the graph.
The geometry from the SendToFormIt node will be available on your cursor for placement.
When the graph has SelectFromFormIt nodes marked as Is Input, FormIt will ask first for the selection (each selection node in vertical order), then generate the geometry in the correct place relative to the selection.
A copy of the original Dynamo file is now embedded into the FormIt Group and is independent of the source graph.
Upon placement, the Properties panel will automatically toggle to reveal the available parameters.
After placing a Dynamo Group, select it and switch to the Properties panel, or simply double-click the Group to automatically switch to Properties.
Any input nodes marked as "Is Input" in Dynamo will be listed here.
SelectFromFormIt input nodes will show up as buttons at the top, and can be used to update the selection that's used to drive the graph.
FormIt supports these input nodes: Number Sliders, Integer Sliders, Boolean Toggles, and Number/String fields.
Make changes to the inputs in FormIt, then click Run. The Run button will turn blue to indicate parameters have been modified, and the graph needs to be run.
Dynamo will run in the background to process the changes and return updated geometry in FormIt.
In FormIt 2022 and newer, the first run from the Properties panel spins up a dedicated Dynamo instance, making subsequent edits much faster.
You can continue using FormIt while Dynamo is running.
Note that all geometry inside each SendToFormIt Group will be deleted and replaced when the Dynamo graph runs.
In FormIt 2023 and newer, you can use Dynamo to send FormIt levels to Excel:
Download the sample Dynamo graph here.
Point the Dynamo palette to the local directory where the Dynamo graph was saved.
Right-click on the thumbnail, and click Edit Embedded Graph.
Create an empty Excel spreadsheet somewhere.
Edit the Spreadsheet Location field to use the path to the Excel spreadsheet.
Edit any other fields you'd like such as Sheet Name.
Close Dynamo and save the graph.
Now you can simply click the example file in the palette, and it'll run in FormIt without needing to generate geometry.
You'll see the Dynamo inputs appear in the Dynamo palette, and you'll see Excel open up to display the results from the graph.
As you make changes to the model, you can click the graph thumbnail again, or the Run button, to update the spreadsheet with the level data from the latest version of the FormIt sketch.
In FormIt 2021 and newer, clicking the Launch Dynamo button in the Dynamo panel will start a connected session with FormIt automatically.
This opens a graph template in Dynamo, and will automatically generate the template geometry in FormIt.
The resulting geometry will appear in a new Group, at the origin of the current Group editing context. It's best to be in the desired Group context before starting Dynamo.
The template includes both FormIt nodes, and some example geometry. Adjusting the sliders will adjust the cube's size in both applications.
From here, you can open different Dynamo graphs, or build something new using these basic components in the template and Save As in Dynamo to a new location.
Existing Dynamo graphs can be edited in two distinct ways: by editing Embedded Graphs that have already been placed in FormIt, or by editing the Source Graph that's saved on your computer.
After placing a Dynamo object into FormIt, its underlying graph is copied and embedded into the current FormIt file. Editing this in Dynamo happens through the Edit Embedded Graph button.
Select the Dynamo Group and switch to the Properties panel, or simply double-click the Group to automatically switch to Properties.
Click the Edit Embedded Graph button.
In Dynamo, you'll notice the file name at the top will now contain "(FormIt)", which means you're editing a graph that is embedded in this FormIt file, and not modifying the Source Graph.
Make sure one or more SendToFormIt nodes is connected to the geometry you want to send to FormIt.
FormIt will display updates to the geometry in realtime as you adjust the graph.
If you don't save changes in Dynamo, FormIt will roll back to the last-saved version of the Dynamo graph.
Note that all geometry inside each SendToFormIt Group will be deleted and replaced when the Dynamo graph runs.
Source Graphs are displayed in the Dynamo panel after linking local directories. These graphs are stored on your computer, and can be edited in Dynamo by clicking the Edit Source Graph button.
Link a directory containing Dynamo files to the Dynamo Panel, then navigate to that location in the panel.
Right click the thumbnail of the Dynamo graph you want to edit (or click the arrow), and select the Edit Source Graph button.
Dynamo will launch with the requested graph opened, and in FormIt, you'll see the geometry from the graph's final output appear.
For graphs that use one or more SelectFromFormIt nodes as an input, you may not see the resulting geometry until the SelectFromFormIt nodes are populated with selections.
The resulting geometry will appear in a new Group, at the origin of the current Group editing context.
It's best to be in the desired Group context before clicking Edit Source Graph.
When finished editing, save and close Dynamo. In FormIt, the source graph has been copied and embedded in the FormIt file.
If you need to make more edits to the Source Graph, delete the embedded copy and follow these steps again.
Starting in FormIt 2023, you can control the faceting of curves and surfaces attached to SendToFormIt nodes by using the FormItGroupOptions nodes SetCurveFacetingCount and SetSurfaceFacetingCount.
These nodes will override the global curve and surface faceting settings, which are defined under Edit -> Preferences -> Units + Accuracy.
This is very useful if your Dynamo graph needs to generate curved objects using specific faceting values, alleviating the need to change the global setting for each Dynamo graph run in the current session.
You can also globally set faceting settings in Edit -> Preferences -> Units + Precision
After adjusting the faceting quality in Preferences, rerun the graph to use the new global faceting settings.
Learn more about curve and surface faceting settings in FormIt.
Harness the power FormIt Groups for better Dynamo geometry organization and incredible workflows.
When selecting geometry for a SelectFromFormIt node, it's useful to store the geometry in a FormIt Group, and select the Group instead.
Doing so gives you the flexibility to change the contents of the selected FormIt Group, then simply re-run the graph that is referencing the Group to see the updated result.
If you select ungrouped geometry, changes to that geometry may result in FormIt asking you to re-select the geometry the next time the graph is run.
When a Dynamo graph is run in FormIt, its geometric results are contained in a FormIt Group.
Each SendToFormIt node in the graph creates a sub-Group to contain the geometry from the node input port.
After generating a Dynamo object in FormIt, the entire graph and its parameters are embedded as a copy in the FormIt file.
When the graph runs, the geometry inside each sub-Group is deleted and regenerated.
Use caution when modifying geometry or painting surfaces inside sub-Groups, as those changes will be lost when the Dynamo graph runs next.
However, if you paint sub-Groups (not geometry inside them) with FormIt materials, those materials will persist between runs. See below.
When using multiple SendToFormIt nodes, you can organize the nodes by material, so you can paint different FormIt sub-Groups with different materials.
In this example, an entire building is generated from simple planes in FormIt. Each building component requiring unique materials gets its own SendToFormIt node:
After applying materials to each of the sub-Groups, the materials persist between Dynamo runs:
You can use the SelectFromFormIt node to select the sub-Group results from one Dynamo graph to drive the results of another graph.
Building on the example above, the glazing output of the building generator graph is used as the selection geometry for the built-in Storefront Curtainwall sample:
When the building shape changes, you can simply select the mullion system Group, and click Run in the Properties panel.
Although the contents of the glazing Group changed, the Group itself didn't, so there's no need to re-select the glazing when re-running the graph.
The above model is available in FormIt 2022 and newer as the "Roof Planes Building" in the Building Masses subfolder of Dynamo Samples.
Combined with FormIt's vast capabilities, you can use Dynamo to create and flex an entirely parametric design - complete with materials and nested logic - in the rich context of a powerful conceptual modeler:
Other than what's outlined above, Dynamo Groups in FormIt operate by the same rules as other Groups:
Placing a new Dynamo object from the Dynamo panel makes a Unique Group, and will not affect any instances of the same object already placed in the sketch.
Copying and pasting Dynamo Groups keeps them identical. Any changes made to one copy's Dynamo graph will also update the geometry in its identical instances, unless they are made Unique.
You can make Dynamo Groups Unique with shortcut MU or through the Context Menu:
The most powerful nodes to send data between FormIt and Dynamo.
To generate Dynamo objects in FormIt, attach the desired geometric node outputs to the geometry input of at least one SendToFormIt node:
FormItGroupOptions is a new (optional) port in FormIt 2022 and is detailed in the FormItGroupOptions Nodes section below.
In FormIt 2021.3 and newer, you can use multiple SendToFormIt nodes to organize your Dynamo results into tidy FormIt Groups and sub-Groups.
The SendToFormIt node respects the Is Output flag, which is checked by default. You can right-click the node to verify:
When checked, the geometry attached to this SendToFormIt node will appear in FormIt, inside a sub-Group.
When unchecked, no geometry will be sent to FormIt, and the corresponding sub-Group (if there is one) will be deleted.
FormIt 2021 and newer offers the ability to select geometry from FormIt for use as inputs in Dynamo graphs:
The name of the SelectFromFormIt node will be used for prompts in FormIt, so you should name it in a way that describes what type of FormIt geometry should be selected:
When the Select From FormIt button is clicked from the Dynamo graph editor or the Properties panel, FormIt will start a selection wizard mode to walk you through selecting geometry:
The SelectFromFormIt node respects the Is Input flag, which is checked by default. This needs to be checked for selection to work in FormIt. Right-click the node to verify.
When Is Input is checked:
The Dynamo panel thumbnail of the graph will indicate that a selection is required:
When running the graph, the FormIt selection wizard will walk you through setting selections for each SelectFromFormIt node, starting at the top of the graph.
After generating the first time, you'll see a button for each SelectFromFormIt node in the FormIt Properties panel.
Clicking these will start the selection wizard, so you can change the selection used to generate the final geometry. The graph will re-run automatically after re-selecting.
Name the SelectFromFormIt node to indicate what type of geometry is expected. For example, "Select Site Boundary (Edges)"
You can select any type of FormIt geometry, but it's often best to contain the selection into a FormIt Group and select that instead of the raw geometry.
If you need to move the results of a selection-based Dynamo graph, it's best to move the selection geometry first, then re-run the graph, which will pick up on the updated selection geometry and reposition itself appropriately.
You can also Group the Dynamo results and the selection, then move the containing Group.
When FormIt geometry is sent to Dynamo, any attributes, Materials, or nested Groups will be lost when returning geometry back into FormIt.
If you're editing a selection-based graph in Dynamo, and the selected geometry in FormIt changes, you'll need to re-select the geometry by clicking the "Select From FormIt" button on the SelectFromFormIt node.
When selecting in FormIt, the active Selection Filter is applied. For example, if you want to select FormIt vertices, you'll have to enable that in the Selection Filter.
A wide array of input options for easy customization of Dynamo graphs in FormIt.
In FormIt 2022.1.0 or newer, you can use the FormItLengthString node to specify dimensions in any supported FormIt unit type (feet-inch, inch, m, cm, mm) regardless of FormIt's unit setting in the active sketch.
As with other supported input nodes, the FormItLengthString will show up in the FormIt Properties palette when marked as Is Input, and when renamed, its new name will show up in FormIt:
Each instance of the FormItLengthString node can be used in any unit type, so a single Dynamo graph could employ a mix of units, as shown above.
In FormIt 2022.1.1 and newer, switching a graph to use FormItLengthString nodes (by placing the first one in a graph) or switching a graph to use raw numbers only (by removing the last FormItLengthString) will change certain behaviors while editing a graph in Dynamo:
When using the SelectFromFormIt node while editing a graph, switching between raw numbers and the FormItLengthString node as above will require re-selecting the geometry for each SelectFromFormItNode, so the results continue to be scaled correctly in FormIt.
After placing the first FormItLengthString node in a graph, all numbers in the graph intended as dimensions (including raw number inputs) will refer to meters (Dynamo's native unit under the hood).
The SendToFormIt node will account for the change and ensure generated geometry in FormIt remains the correct size.
Conversely, removing all FormItLengthString nodes from the graph will switch raw numbers to refer to whatever FormIt's unit settings are (old behavior).
The numeric output of FormItLengthString nodes will also be in meters, but that won't change the size of the geometric results in FormIt:
Standard Dynamo input nodes will display in the FormIt Properties panel when marked as "Is Input" in Dynamo:
Number Slider
Integer Slider
Number
String
Boolean Toggle
You can rename the input nodes (recommended for clarity), and their new name will appear in FormIt:
Different methods to display non-geometric results from Dynamo to FormIt.
Watch nodes marked as "Is Output" will display in the "Watch Node Outputs" section of the Properties panel in FormIt 2022 and newer:
In FormIt 2022.1 or newer, you can show FormIt-side notifications from a Dynamo graph using the UI.ShowNotification node:
In FormIt 2022.1 or newer, you can log additional data directly to the FormIt application console (Script Output window) with the FormIt.ConsoleLog node:
Control how data is sent to FormIt, either at the individual geometry level or at the containing Group level.
FormIt 2022.1 and newer offers the ability to customize how individual Dynamo geometries are sent to FormIt with FormItGeometryOptions nodes.
Specify the Layer for individual geometries inside the generated Dynamo group.
Specify a string attribute for the individual geometries inside the generated Dynamo Group.
FormItGeometryOptions nodes can be used upstream from the SendToFormIt node:
FormIt 2022 and newer offers the ability to customize how the Dynamo group from the SendToFormIt node is generated in FormIt with FormItGroupOptions nodes.
Specify whether the SendToFormIt node sends geometry to FormIt as a Mesh or an Object.
Specify the Layer for the Group created by the SendToFormIt node.
Specify a string attribute for the Group created by the SendToFormIt node.
You can use any combination of FormItGroupOptions nodes in any order by daisy-chaining them together:
FormIt 2022.1 and newer offers access to JavaScript APIs and custom functions from Dynamo via two new nodes:
The CallJSAPI node allows you to invoke FormIt JavaScript APIs directly from Dynamo.
For function names and parameters, take a look at our JavaScript documentation, which is divided into two parts: FormIt API and WSM API (modeling kernel).
CallPluginJS
Conversely, the CallPluginJS node allows you to invoke custom functions from a loaded plugin, or a script snippet that's been executed from the Script Editor window.
To use Dynamo in FormIt, you'll need FormIt for Windows v17.0 or later.
The FormIt + Dynamo integration receives new features and fixes regularly, so it's always best to download the latest update when available.
You'll also need Windows 10. For technical reasons, older versions of Windows are no longer supported.
Troubleshooting
If you have a system with an NVIDIA or AMD graphics card, or multiple cards, you may need to set FormIt and Dynamo to use your high-powered GPU:
C:/Program Files/Autodesk/FormIt/FormIt.exe
C:/Program Files/Autodesk/FormIt/DynamoSandbox/FormItDynamoSandbox.exe
If you have an NVIDIA card, ensure you have the NVIDIA Control Panel installed
If you're in a non-English locale, you may need to set the Windows 10 region settings to English to avoid issues with certain Dynamo nodes:
Search Start for "language" and choose "Language settings"
At the top right of the Language dialog, click "Administrative language settings"
Click the "Change system locale..." button
Choose "English (United States)"
If you're experiencing graphs failing to generate results in FormIt when working with small geometry or numbers, try changing the Dynamo scaling setting to "Small":
Dynamo menu > Preferences > General > Geometry Scaling > Small
Need help with FormIt + Dynamo? Let us know on the forums.
Click the "Link Directory" button in the Dynamo panel, and then click (+) again in the Preferences dialog to select a directory to link to FormIt: