# Nodes and Wires

## Nodes

In Dynamo, **Nodes** are the objects you connect to form a Visual Program. Each **Node** performs an operation - sometimes that may be as simple as storing a number or it may be a more complex action such as creating or querying geometry.

### Anatomy of a Node

Most Nodes in Dynamo are composed of five parts. While there are exceptions, such as Input Nodes, the anatomy of each Node can be described as follows:

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-9c498c45f4d6de823ffe8137ed8ee95a5b5cb8fd%2Fnodes%20and%20wires%20-%20nodes%20anatomy.jpg?alt=media\&token=249ec1c4-55f2-4c51-abdf-0fe42b843f94)

> 1. Name - The Name of the Node with a `Category.Name` naming convention
> 2. Main body - The main body of the Node - Right-clicking here presents options at the level of the whole Node
> 3. Ports (In and Out) - The receptors for Wires that supply the input data to the Node as well as the results of the Node's action
> 4. Default Value - Right-click on an input Port - some Nodes have default values that can be used or not used.
> 5. Lacing Icon - Indicates the [Lacing option](https://primer2.dynamobim.org/5_essential_nodes_and_concepts/5-4_designing-with-lists/1-whats-a-list#lacing) specified for matching list inputs (more on that later)

### Nodes Input/Output Ports

The Inputs and Outputs for Nodes are called Ports and act as the receptors for Wires. Data comes into the Node through Ports on the left and flows out of the Node after it has executed its operation on the right.

Ports expect to receive data of a certain type. For instance, connecting a number such as *2.75* to the Ports on a Point By Coordinates Node will successfully result in creating a Point; however, if we supply *"Red"* to the same Port it will result in an error.

{% hint style="info" %}
Tip: Hover over a Port to see a tooltip containing the data type expected.
{% endhint %}

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-3ee0b3297842059aaffb1abdcf924ef76cb60b17%2Fnodes%20and%20wires%20-%20nodes%20input%20and%20tooltip.jpg?alt=media\&token=52562b4e-ecfb-47a5-a079-c490267d79f1)

> 1. Port Label
> 2. Tool Tip
> 3. Data Type
> 4. Default Value

### Node States

Dynamo gives an indication of the state of the execution of your Visual Program by rendering Nodes with different color schemes based on each Node's status. The hierarchy of states follows this sequence: Error > Warning > Info > Preview.

Hovering or right-clicking over the Name or Ports presents additional information and options.

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-9460a87ae359d8b0391052e1546c6ccb711be8d9%2Fnodes%20and%20wires%20-%20node%20states.png?alt=media)

> 1. Satisfied inputs - A node with blue vertical bars over its input ports is well-connected and has all of its inputs successfully connected.
> 2. Unsatisfied inputs – A node with a red vertical bar over one or more input ports needs to have those inputs connected.
> 3. Function – A node that outputs a function and has a gray vertical bar over an output port is a function node.
> 4. Selected - Currently selected nodes have an aqua highlight around their border.
> 5. Frozen - A translucent blue node is frozen, suspending the execution of the node.
> 6. Preview off - A gray status bar underneath the node and an eye icon <img src="https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-d4a8ab7ec6b4f3371adae18b5b918352890b25fe%2Fnodes%20and%20wires%20-%20preview%20off.jpg?alt=media&#x26;token=de7a3e4d-03a2-465c-9d4b-02bfb06e6108" alt="" data-size="line"> indicate that geometry preview for the node is switched off.
> 7. Warning - A yellow status bar underneath the node indicates Warning state, meaning the node either lacks input data or may have incorrect data types.
> 8. Error - A red status bar underneath the node indicates that the node is in an Error state.
> 9. Info - Blue status bar underneath the node indicates Info state, which flags useful information about nodes. This state can be triggered when approaching a maximum value supported by the node, using a node in a way that has potential performance impacts, etc.

#### Handling Error or Warning Nodes

If your Visual Program contains warning or errors, Dynamo will provide additional information about the problem. Any Node that is Yellow will also have a tooltip above the Name. Hover your mouse over the warning ![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-fa6234641f9a475ddc5f28de8e8ab8dea030d001%2Fnodes%20and%20wires%20-%20node%20warning%20icon.png?alt=media\&token=534922ab-b0a7-44d7-a4c3-bc5c9c8fdb96) or error ![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-244a104d5b82aeaadcb7401501d593626d3c83fa%2Fnodes%20and%20wires%20-%20node%20error%20icon.png?alt=media\&token=36640123-6d0d-40df-ba5a-15c7ad58d603) tooltip icon to expand it.

{% hint style="info" %}
Tip: With this tooltip information in hand, examine the upstream Nodes to see if the data type or data structure required is in error.
{% endhint %}

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-2fac4ec73781cbaef718b8a356f06eaf8c33d491%2Fnodes%20and%20wires%20-%20nodes%20with%20warning%20tooltip.jpg?alt=media\&token=bc231788-7c6b-4a90-ae24-53c633d4529b)

> 1. Warning Tooltip - "Null" or no data cannot be understood as a Double, i.e., a number
> 2. Use the Watch Node to examine the input data
> 3. Upstream the Number Node is storing "Red," not a number

### Freezing Nodes

In some situations, you may want to prevent the execution of specific nodes in your Visual Program. You can do this by "freezing" the node, which is an option under the node's right-click menu.

<figure><img src="https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-241503a58a486bc67d1c82d5fe661118bf7d333d%2Fnodes-freezing.png?alt=media" alt="" width="312"><figcaption></figcaption></figure>

Freezing a node also freezes the nodes that are downstream of it. In other words, all the nodes that depend on the output of a frozen node will also be frozen.

<figure><img src="https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-ef5760c97c0809f1f81fee246b6f69e598c39ef5%2Fnodes-freezing-animated.gif?alt=media" alt=""><figcaption></figcaption></figure>

## Wires

Wires connect between Nodes to create relationships and establish the Flow of our Visual Program. We can think of them literally as electrical wires that carry pulses of data from one object to the next.

### Program Flow <a href="#program-flow" id="program-flow"></a>

Wires connect the output Port from one Node to the input Port of another Node. This directionality establishes the **Flow of Data** in the Visual Program.

Input Ports are on the left side and the Output Ports are located on the right side of Nodes, hence, we can generally say that the Program Flow moves from left to right.

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-cd8fbd289c284d356a69b825ed6c32302619ff50%2Fnodes%20and%20wires%20-%20flow%20of%20data.jpg?alt=media\&token=8d28de53-a981-417d-9396-4516e2f91a52)

### Creating Wires <a href="#creating-wires" id="creating-wires"></a>

Create a Wire by left-click on a Port subsequently left-click on the port of another Node to create a connection. While we are in the process of making a connection, the Wire will appear dashed and will snap to become solid lines when successfully connected.

The data will always flow through this Wire from output to input; however, we may create the wire in either direction in terms of the sequence of clicking on the connected Ports.

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-149fda204f7d698563520b5cd825f1473bf8c791%2Fnodes%20and%20wires%20-%20creating%20a%20wire.gif?alt=media\&token=4f08f8f1-344f-4b72-a586-1606f4964b2d)

### Editing Wires <a href="#editing-wires" id="editing-wires"></a>

Frequently we will want to adjust the Program Flow in our Visual Program by editing the connections represented by the Wires. To edit a Wire, left click on the input Port of the Node that is already connected. You now have two options:

* Change connection to an input Port, left-click on another input Port

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-8ec926ed381fec90399942f0de4114e8f12232e1%2Fnodesandwires-editwirechangeport\(2\).gif?alt=media)

* To remove the Wire, pull the Wire away and left-click on Workspace

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-0f86bdc6acccad936ca869b93e6819a6acf88d45%2Fnodes%20and%20wires%20-%20edit%20wires%20remove.gif?alt=media\&token=58235c81-363c-4297-bedb-08474fe25400)

* Reconnect multiple wires using Shift+left-click

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-61b2efe3cf5a0d016093c45f6167183ba71913be%2Fnodes%20and%20wires%20-%20edit%20multi%20ports.gif?alt=media\&token=ae665ea5-37e1-43a7-b184-95da231cb899)

* Duplicate a wire using Ctrl+left-click

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-888a7eb663b494df45e78194817f760def6b1fac%2Fnodes%20and%20wires%20-%20duplicate%20wire.gif?alt=media\&token=d60ab931-d433-46f8-975f-2069d8b374ea)

#### Default vs Highlighted Wires <a href="#wire-previews" id="wire-previews"></a>

By default, our Wires will be previewed with a gray stroke. When a Node is selected, it will render any connecting Wire with the same aqua highlight as the Node.

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-e39425871fb48601cff8115b3556f1de920f0aee%2Fnodes%20and%20wires%20-%20default%20vs%20highlighted%20wires.jpg?alt=media\&token=948beef8-fb9d-4d63-979f-c3c3eddec568)

> 1. Highlighted Wire
> 2. Default Wire

**Hide Wires by Default**

In case you prefer to hide the Wires in your graph, you can find this option from View > Connectors > untick Show Connectors.

With this setting, only the selected Nodes and its joining Wires will be shown in faint aqua highlight.

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-5655d0c0649b4b00f702b2833d2d564cfdb318f3%2Fnodes%20and%20wires%20-%20hide%20wires%20setting.gif?alt=media)

#### Hide Individual Wire Only

You can also hide selected wire only by Right-clicking on the Nodes output > select Hide Wires

![](https://1734247194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FY5ZuHF3yuXFWp1C46ZSo%2Fuploads%2Fgit-blob-149e52773339c98343b407b082cb25ddbc498fe1%2Fnodes%20and%20wires%20-%20hide%20selected%20wire.gif?alt=media\&token=60e8de79-75c2-49f7-ad55-b2642bec533a)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://primer2.dynamobim.org/4_nodes_and_wires.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
