Templates for advanced Dynamo package development using Node Models.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/Essentials Update GeometryCustomPreview.cs Dec 11, 2017
.gitignore Edit .gitignore; cleanup Aug 16, 2017
LICENSE Initial commit Aug 16, 2017



This project provides a Visual Studio template for advanced Dynamo package development using Node Models.



  • AstReusingFunctionCall. This node displays a desirable way to use the AST (Abstract Syntax Tree) where function calls are executed only once and return values are re-used. (Read node summary for detailed explanation.)
  • AstNotReusingFunctionCall. This node displays a non-desirable way to use the AST where function calls are executed multiple times and return values are not re-used. (Read node summary for detailed explanation.)
  • DataBridge. How the data bridge pattern works in order to pass the data connected to input ports (or the data of generated for the output ports) to the NodeModel instance.
  • Error. Throw a custom warning when something fails.
  • Events. Execute a method of a NodeModel on the pre and post graph execution events of the graph.
  • MultiOperation. A node that calls four different functions and returns the resulting values, i.e., a multi-return NodeModel.
  • Multiply. A node that calls a function with two inputs and returns the resulting value.
  • Timeout. Determine the maximum duration a node can run for (and time out if it surpasses it).




These nodes document, in one way or another, my own learning on how to create nodes for Dynamo.

The initial template and samples provided in this project were inspired by DynamoDS/DynamoSamples and teocomi/HelloDynamo. I highly recommend you to take a look at these for further learning.

Jose Luis Garcia del Castillo wrote the Surface function samples.

Big thanks to the Dynamo development team.


DynamoNodeModelsEssentials is licensed under the MIT license. (http://opensource.org/licenses/MIT)


I'm Nono Martínez Alonso (nono.ma), a computational designer with a penchant for design, code, and simplicity.
I host The Getting Simple Podcast, tweet at @nonoesp, and sketch at @sketch.nono.ma. If you use this, I would love to hear about it. Thanks!