# Узлы и провода

## Узлы

**Узлы** Dynamo — это объекты, путем соединения которых создается визуальная программа. Каждый **узел** выполняет ту или иную операцию. Это может быть как простая операция, например хранение числа, так и более сложная, например создание или запрос геометрического объекта.

### Структура узла

Большинство узлов Dynamo состоит из пяти частей. За некоторыми исключениями (например, входные узлы) в большинстве своем узлы имеют следующую структуру.

!

> 1. Имя: имя узла, имеющее формат `Category.Name`.
> 2. Основная часть узла: если щелкнуть ее правой кнопкой мыши, отобразятся параметры, действующие на уровне узла.
> 3. Порты (ввода и вывода): разъемы для проводов, передающих входные данные для узла, а также результаты выполненной узлом операции.
> 4. Значение по умолчанию: щелкните порт ввода правой кнопкой мыши. Для некоторых узлов заданы значения по умолчанию, которые можно использовать или игнорировать.
> 5. Значок переплетения: значение [параметра «Переплетение»](https://primer2.dynamobim.org/ru/5_essential_nodes_and_concepts/5-4_designing-with-lists/1-whats-a-list#lacing), заданное для совпадающих входных данных списка (подробные сведения см. далее).

### Порты ввода/вывода узлов

Порты — это вводы и выводы узлов, играющие роль разъемов для проводов. В порты, расположенные слева, поступают входящие данные, а из портов, расположенных справа, передаются далее результаты выполненной операции.

Каждый порт рассчитан на прием данных определенного типа. Если соединить с портами узла Point.ByCoordinates число, например *2.75*, то операция выполнится успешно и будет создана точка. Но если вместо числа соединить с тем же портом текстовое значение, например *Red*, это приведет к ошибке.

{% hint style="info" %}
Совет. Наведите курсор на порт, чтобы увидеть подсказку о требуемом типе данных.
{% endhint %}

!

> 1. Метка порта
> 2. Подсказка
> 3. Тип данных
> 4. Значение по умолчанию

### Состояния узла

Для демонстрации состояния выполнения операций в узлах визуальной программы в Dynamo используются разные цвета. Иерархия состояний определяется следующим образом: ошибка > предупреждение > информация > просмотр.

Если навести курсор на имя или порты, либо щелкнуть их правой кнопкой мыши, отобразятся дополнительные сведения и параметры.

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

> 1. Соответствующие входные данные: если над входными портами узла отображаются синие вертикальные полосы, это означает, что узел правильно подключен, и в него поступают входные данные нужного типа.
> 2. Несоответствующие входные данные: если над одним или несколькими входными портами узла отображается красная вертикальная полоса, нужно подключить эти порты так, чтобы в них поступали входные данные нужного типа.
> 3. Функция: это узел, выводом которого является функция и порт вывода которого помечен серой вертикальной полосой.
> 4. Выбранный: выбранные узлы выделяются голубой рамкой по периметру.
> 5. Замороженный: замороженными являются полупрозрачные синие узлы, и выполнение операций таких узлов приостановлено.
> 6. Просмотр откл.: серый цвет строки состояния под узлом и значок глаза  указывают на то, что просмотр геометрии для этого узла отключен.
> 7. Предупреждение: желтый цвет строки состояния под узлом указывает на состояние предупреждения. Это значит, что в узле отсутствуют входные данные либо используются неверные типы данных.
> 8. Ошибка: красный цвет строки состояния под узлом указывает на то, что в узле произошла ошибка.
> 9. Сведения: синий цвет строки состояния под узлом указывает на информационное состояние, которое обозначает наличие полезных сведений об узлах. Переход к этому состоянию может быть вызван значением, близким к максимальному значению, поддерживаемому узлом, либо таким использованием узла, при котором может пострадать производительность, и т. д.

#### Обработка узлов с ошибками и предупреждениями

Если визуальная программа содержит предупреждения или ошибки, то Dynamo предоставляет подробную информацию о проблеме. Над именем каждого желтого узла отображается подсказка. Наведите указатель на значок предупреждения ! или ошибки !, чтобы узнать подробности.

{% hint style="info" %}
Совет. Используя информацию из подсказки, проверьте узлы, предшествующие текущему, на наличие ошибок в типе или структуре требуемых данных.
{% endhint %}

!

> 1. Подсказка с предупреждением: не указанные данные или значение Null не могут использоваться как данные типа Double (то есть, число).
> 2. Используйте узел Watch, чтобы просмотреть входные данные.
> 3. Узел Number, предшествующий текущему, передает на выходе текстовое значение Red, а не число.

### Замораживание узлов

В некоторых случаях может потребоваться предотвратить выполнение операций определенных узлов в визуальной программе. Это можно сделать, заморозив узел. Этот параметр доступен в контекстном меню узла.

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

При замораживании узла также замораживаются следующие за ним узлы. Другими словами, все узлы, которые зависят от вывода замороженного узла, также будут заморожены.

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

## Провода

Провода соединяют друг с другом узлы, создавая тем самым связи и обеспечивая поток выполнения операций в рамках визуальной программы. Их можно воспринимать как настоящие электрические провода, передающие заряды (данные) от одного объекта к другому.

### Поток выполнения операций в программе <a href="#program-flow" id="program-flow"></a>

Каждый провод соединяет порт вывода одного узла с портом ввода другого. Такой порядок подключения определяет направление **потока данных** в визуальной программе.

Порты ввода находятся слева от узлов, а порты вывода — справа, поэтому можно сказать, что поток выполнения операций в программе направлен слева направо.

!

### Создание проводов <a href="#creating-wires" id="creating-wires"></a>

Для создания провода нужно щелкнуть сначала порт одного узла, а затем порт другого узла, чтобы установить соединение. В процессе создания соединения провод отображается пунктирной линией, после чего становится сплошным.

Данные всегда проходят по проводам в направлении от вывода к вводу, однако последовательность выбора соединяемых портов не играет роли и может быть любой.

!

### Редактирование проводов <a href="#editing-wires" id="editing-wires"></a>

Зачастую при работе над визуальной программой возникает необходимость в корректировке потока выполнения операций путем редактирования проводов, играющих роль соединительных элементов. Чтобы отредактировать провод, щелкните порт ввода подсоединенного узла. Далее выберите один из следующих вариантов:

* Чтобы изменить соединение с портом ввода, щелкните другой порт ввода.
* Чтобы удалить провод, перетащите его в сторону от узла, а затем щелкните в рабочем пространстве.

!

* Чтобы повторно соединить несколько проводов, щелкните нужные элементы при нажатой клавише SHIFT.

!

* Чтобы дублировать провод, щелкните нужный элемент при нажатой клавише CTRL.

!

#### Провода по умолчанию и выделенные провода <a href="#wire-previews" id="wire-previews"></a>

По умолчанию провода отображаются при просмотре как серые прерывистые линии. При выборе узла все подключенные к нему провода выделяются голубым цветом, как и сам узел.

!

> 1. Выделенный провод
> 2. Провод по умолчанию

**Скрытие проводов по умолчанию**

Если требуется скрыть провода на графике, снимите флажок «Показать соединители» в меню «Просмотреть» > «Соединители».

В данном случае бледно-голубым цветом будут отображаться только выбранные узлы и соединенные с ними провода.

!

#### Скрытие отдельных проводов

Чтобы скрыть только выбранный провод, щелкните правой кнопкой мыши вывод узла и выберите «Скрыть провода».

!
