Dynamo
Primer for v2.0
English
English
  • About
  • Introduction
    • What is Dynamo & How Does It Work?
    • Primer User Guide, Dynamo Community & Platform
  • Setup for Dynamo
  • User Interface
    • Workspace
    • Library
  • Nodes and Wires
  • Essential Nodes & Concepts
    • Index of Nodes
    • Geometry for Computational Design
      • Geometry Overview
      • Vector, Plane & Coordinate System
      • Points
      • Curves
      • Surfaces
      • Solids
      • Meshes
    • The Building Blocks of Programs
      • Data
      • Math
      • Logic
      • Strings
      • Color
    • Designing with Lists
      • What's a List
      • Working with Lists
      • Lists of Lists
      • n-Dimensional Lists
    • Dictionaries in Dynamo
      • What is a Dictionary
      • Dictionary Nodes
      • Dictionaries in Code Blocks
      • Revit Use-Cases
  • Custom Nodes & Packages
    • Custom Nodes
      • Custom Node Introduction
      • Creating a Custom Node
      • Publishing to Your Library
    • Packages
      • Package Introduction
      • Package Case Study - Mesh Toolkit
      • Developing a Package
      • Publishing a Package
      • Zero-Touch Importing
  • Dynamo for Revit
    • The Revit Connection
    • Selecting
    • Editing
    • Creating
    • Customizing
    • Documenting
  • Dynamo for Civil 3D
    • The Civil 3D Connection
    • Getting Started
    • Node Library
    • Sample Workflows
      • Roads
        • Light Pole Placement
      • Land
        • Service Placement
      • Utilities
        • Rename Structures
      • Rail
        • Clearance Envelope
      • Surveying
        • Point Group Management
    • Advanced Topics
      • Object Binding
      • Python and Civil 3D
    • Dynamo Player
    • Useful Packages
    • Resources
  • Dynamo in Forma Beta
    • Set Up Dynamo Player in Forma
    • Add and Share Graphs in Dynamo Player
    • Run Graphs in Dynamo Player
    • Dynamo compute service differences with Desktop Dynamo
  • Coding in Dynamo
    • Code Blocks and DesignScript
      • What's a Code Block
      • DesignScript Syntax
      • Shorthand
      • Functions
    • Geometry with DesignScript
      • DesignScript Geometry Basics
      • Geometric Primitives
      • Vector Math
      • Curves: Interpolated and Control Points
      • Translation, Rotation, and Other Transformations
      • Surfaces: Interpolated, Control Points, Loft, Revolve
      • Geometric Parameterization
      • Intersection and Trim
      • Geometric Booleans
      • Python Point Generators
    • Python
      • Python Nodes
      • Python and Revit
      • Setup Your Own Python Template
    • Language Changes
  • Best Practices
    • Graph Strategies
    • Scripting Strategies
    • Scripting Reference
    • Managing Your Program
    • Efficiently Working With Large Data Sets In Dynamo
  • Sample Workflows
    • Getting Started Workflows
      • Parametric Vase
      • Attractor Points
    • Concept Index
  • Developer Primer
    • Build Dynamo from Source
      • Build DynamoRevit from Source
      • Managing and Updating Dependencies in Dynamo
    • Developing for Dynamo
      • Getting Started
      • Zero-Touch Case Study - Grid Node
      • Executing Python Scripts in Zero-Touch Nodes (C#)
      • Going Further with Zero-Touch
      • Advanced Dynamo Node Customization
      • Using COM (interop) types in Dynamo Packages
      • NodeModel Case Study - Custom UI
      • Updating your Packages and Dynamo Libraries for Dynamo 2.x
      • Updating your Packages and Dynamo Libraries for Dynamo 3.x
      • Extensions
      • Defining Custom Package Organization for Dynamo 2.0+
      • Dynamo Command Line Interface
      • Dynamo Integration
      • Developing For Dynamo For Revit
      • Publish a Package
      • Build a Package from Visual Studio
      • Extensions as Packages
    • Pull Requests
    • Testing Expectations
    • Examples
  • Appendix
    • Frequently Asked Questions
    • Visual Programming and Dynamo
    • Resources
    • Release Notes
    • Useful Packages
    • Example Files
    • Host Integration Map
    • Download PDF
    • Dynamo Keyboard Shortcuts
Powered by GitBook
On this page
  • Installing a Package
  • Installing Package Folder - DynamoUnfold
  • Browsing and Viewing Package Information
  • Dynamo Package Manager Website
  • Where are Packages Files Stored Locally?
  • Setting up a Shared Location for Packages in an Office
  • Loading Packages with Binaries from a Network Location
  • Going Further with Packages
Edit on GitHub
Export as PDF
  1. Custom Nodes & Packages
  2. Packages

Package Introduction

PreviousPackagesNextPackage Case Study - Mesh Toolkit

Last updated 2 months ago

Dynamo offers a vast number of features out of the box and also maintains an extensive package library that can significantly extend Dynamo’s capability. A package is a collection of custom nodes or additional functionality. The Dynamo Package Manager is a portal for the community to download any package that has been published online. These toolsets are developed by third parties to extend Dynamo's core functionality, accessible to all, and ready to download at the click of the button.

An open-source project such as Dynamo thrives on this type of community involvement. With dedicated third-party developers, Dynamo is able to extend its reach to workflows across a range of industries. For this reason, the Dynamo team has made concerted efforts to streamline package development and publishing (which will be discussed in more detail in the following sections).

Installing a Package

The easiest way to install a package is by using the Packages menu option in your Dynamo interface. Let's jump right into it and install a package now. In this quick example, we'll install a popular package for creating quad panels on a grid.

In Dynamo, go to Packages > Package Manager...

In the search bar, let's search for "quads from rectangular grid". After a few moments, you should see all of the packages which match this search query. We want to select the first package with the matching name.

Click Install to add this package to your library, then accept the confirmation. Done!

Notice that we now have another group in our Dynamo library called "buildz". This name refers to the developer of the package, and the custom node is placed in this group. We can begin to use this right away.

Use Code Block to quickly define a rectangular grid, output the result to a Polygon.ByPoints Node, subsequently a Surface.ByPatch Node to view the list of rectangular panels you have just created.

Installing Package Folder - DynamoUnfold

The example above focuses on a package with one custom node, but you use the same process for downloading packages with several custom nodes and supporting data files. Let's demonstrate that now with a more comprehensive package: Dynamo Unfold.

As in the example above, begin by selecting Packages > Package Manager...

This time, we'll search for "DynamoUnfold", one word. When we see the packages, download by clicking on Install to add Dynamo Unfold to your Dynamo Library.

In the Dynamo Library, we have a DynamoUnfold Group with multiple categories and custom nodes.

Now, let's take a look at the package's file structure.

  1. First, go to Packages > Package Manager > Installed Packages.

  2. Then, click Show Root Directory to open the root folder for this package.

This will take us to the package's root directory. Notice that we have 3 folders and a file.

  1. The bin folder houses .dll files. This Dynamo package was developed using Zero-Touch, so the custom nodes are held in this folder.

  2. The dyf folder houses the custom nodes. This package was not developed using Dynamo custom nodes, so this folder is empty for this package.

  3. The extra folder houses all additional files, including our example files.

  4. The pkg file is a basic text file defining the package settings. We can ignore this for now.

Opening the "extra" folder, we see a bunch of example files that were downloaded with the install. Not all packages have example files, but this is where you can find them if they are part of a package.

Let's open up "SphereUnfold".

After opening the file and hitting "Run" on the solver, we have an unfolded sphere! Example files like these are helpful for learning how to work with a new Dynamo package.

Browsing and Viewing Package Information

In the Package Manager, you can browse for packages by using the sorting and filtering options in the Search for Packages tab. There are several filters available for host program, status (new, deprecated, or undeprecated), and whether or not the package has dependencies.

By sorting the packages, you can identify highly rated or most downloaded packages, or find packages with recent updates.

You can also access more detail on each package by clicking View Details. This opens a side panel in the Package Manager, where you can find information such as versioning and dependencies, website or repository URL, license information, etc.

Dynamo Package Manager Website

Where are Packages Files Stored Locally?

If you would like to see where your package files are kept, in the top navigation click on Dynamo > Preferences > Package Settings > Node and Package File Locations, you can find your current root folder directory from here.

By default, packages are installed in a location similar to this folder path: C:/Users/[username]/AppData/Roaming/Dynamo/[Dynamo Version].

Setting up a Shared Location for Packages in an Office

For users who are asking if it is possible to deploy Dynamo (in any form) with pre-attached packages: The approach that will solve this issue and allow for control at a central location for all users with Dynamo installs is to add a custom package path to each installation.

Adding a network folder where the BIM manager or others could supervise the stocking of the folder with office approved packages

In the UI of an individual application, go to Dynamo -> Preferences -> Package Settings -> Node and Package file locations. In the dialog, press the "Add Path" button and browse to the network location for the shared package resource.

As an automated process, it would involve adding information to the configuration file that is installed with Dynamo: C:\Users\[Username]\AppData\Roaming\Dynamo\Dynamo Revit\[Dynamo Version]\DynamoSettings.xml

By default, the configuration for Dynamo for Revit is:

<CustomPackageFolders>

<string>C:\Users\[Username]\AppData\Roaming\Dynamo\Dynamo Revit\[Dynamo Version]</string>

</CustomPackageFolders>

Adding a custom location would look like:

<CustomPackageFolders>

<string>C:\Users\[Username]\AppData\Roaming\Dynamo\Dynamo Revit\[Dynamo Version]</string>

<string>N:\OfficeFiles\Dynamo\Packages_Limited</string>

</CustomPackageFolders>

The central management for this folder can also be controlled by simply making the folder read only.

Loading Packages with Binaries from a Network Location

Scenario

An organization might want to standardize the packages installed by different workstations and users. A way to do this, could be to install these packages from Dynamo -> Preferences -> Package Settings -> Node and Package file locations, selecting a network folder as the install location, and get workstations to add that path to Manage Node and Package Paths.

Problem

Workaround

Going Further with Packages

The Dynamo community is constantly growing and evolving. By exploring the Dynamo Package Manager from time to time, you'll find some exciting new developments. In the following sections, we'll take a more in-depth look at packages, from the end-user perspective to authorship of your own Dynamo Package.

Next to DynamoUnfold, select the options menu .

Another way to discover Dynamo packages is to explore the website. Here, you can find package dependencies and host/version compatibility information provided by Package Authors. You can also download the package files from the Dynamo Package Manager, but doing so directly from Dynamo is a more seamless process.

While the scenario works properly for packages that contain only custom nodes, it might not work for packages containing binaries, like zero-touch nodes. This issue is caused by the .NET framework places over loading assemblies when they come from a network location. Unfortunately, using the loadFromRemoteSources configuration element, as suggested in the linked thread, is not a possible solution for Dynamo, because it is distributed as a component rather than an application.

One possible workaround is to use a mapped network drive pointing to the network location, and have workstations reference that path instead. The steps to create a mapped network drive are described .

Dynamo Package Manager
security measures
here
Package Manager Site