# Привязка объекта

Dynamo for Civil 3D содержит эффективный механизм «запоминания» объектов, создаваемых каждым узлом. Этот механизм называется **привязкой объекта**, и он позволяет получать последовательные результаты при каждом запуске графика Dynamo в определенном документе. Во многих случаях подобное поведение программы является желательным, однако в определенных ситуациях пользователям требуется возможность управлять аспектами работы Dynamo более детально. В этом разделе описывается, как работает функция привязки объектов и как ее можно использовать.

## Пример

Рассмотрим данный график, который позволяет создать окружность в пространстве модели на текущем слое.

<figure><img src="https://2422276774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frrl0CzV5yPtxYRNkwD4h%2Fuploads%2Fgit-blob-e2b1bea89c311559c0bda7417fb4664681253b14%2Fc3d-binding-create-circle.png?alt=media" alt=""><figcaption><p>Простой график для создания окружности</p></figcaption></figure>

Посмотрим, что произойдет при изменении радиуса.

<figure><img src="https://2422276774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frrl0CzV5yPtxYRNkwD4h%2Fuploads%2Fgit-blob-a3485e9dc9cb879c33cfb1063ceac8bc53ad9ecf%2Fc3d-binding-change-radius.gif?alt=media" alt=""><figcaption><p>Изменение входного значения радиуса в Dynamo</p></figcaption></figure>

Это функция привязки объекта в действии. По умолчанию программа Dynamo *изменяет* радиус существующей окружности, а не создает новую окружность при каждом новом входном значении радиуса. Это происходит потому, что при каждом запуске графика узел **Object.ByGeometry** «вспоминает», что он создал эту *конкретную* окружность. Кроме того, эта информация сохраняется в Dynamo, чтобы в следующий раз при открытии документа Civil 3D и запуске графика поведение программы было аналогичным.

## Другой пример

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

<figure><img src="https://2422276774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frrl0CzV5yPtxYRNkwD4h%2Fuploads%2Fgit-blob-19950e1944270fd16c07bd53f237b0a406f8949f%2Fc3d-binding-create-text.png?alt=media" alt=""><figcaption><p>Простой график, позволяющий разместить текст в центре выбранной окружности</p></figcaption></figure>

Однако вот что происходит при выборе разных окружностей.

<figure><img src="https://2422276774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frrl0CzV5yPtxYRNkwD4h%2Fuploads%2Fgit-blob-e4f3e9363a32060be51c08abc3de06bc4b890d02%2Fc3d-binding-select-circle.gif?alt=media" alt=""><figcaption><p>Поведение Dynamo по умолчанию при выборе новой окружности</p></figcaption></figure>

Может показаться, что при каждом запуске графика текст удаляется и создается заново. На самом деле программа *изменяет* положение текста в зависимости от того, какая окружность выбрана. Это тот же самый текст, который просто помещен в другое место. Чтобы текст создавался заново каждый раз при запуске графика, необходимо изменить параметры привязки объекта Dynamo так, чтобы данные привязки не сохранялись в программе (см. раздел [#binding-settings](#binding-settings "mention") ниже).

<figure><img src="https://2422276774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frrl0CzV5yPtxYRNkwD4h%2Fuploads%2Fgit-blob-b41e6469b325266db6a00a4ba79687691d922a5f%2FLand_ServicePlacement_BindingSettings.png?alt=media" alt=""><figcaption><p>Параметры привязки объекта</p></figcaption></figure>

Изменив данный параметр, мы получаем нужное поведение.

<figure><img src="https://2422276774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frrl0CzV5yPtxYRNkwD4h%2Fuploads%2Fgit-blob-3182db5e40517d7552d3ed641c65c799110ba4dd%2Fc3d-binding-repeat-placement.gif?alt=media" alt=""><figcaption><p>Поведение при отключенной привязке объекта</p></figcaption></figure>

## Параметры привязки

Dynamo for Civil 3D позволяет изменить поведение привязки объектов по умолчанию с помощью параметров **Binding Data Storage** (Хранение данных привязки) в меню **Dynamo**.

{% hint style="info" %}
Обратите внимание, что параметры хранения данных привязки доступны в **Civil 3D 2022.1** и более поздних версиях.
{% endhint %}

<figure><img src="https://2422276774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frrl0CzV5yPtxYRNkwD4h%2Fuploads%2Fgit-blob-e5764996c24b8d777339f469959f05f21d84cfce%2Fc3d-binding-settings%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>

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

### Параметр 1. No Binding Data Retained (Данные привязки не сохраняются)

Если этот параметр включен, Dynamo будет «забывать» объекты, созданные при последнем запуске того или иного графика. Этот график можно запускать в любом чертеже и в любых условиях, и каждый раз при его запуске будут создаваться новые объекты.

{% hint style="info" %}
**Рекомендации по использованию**

Используйте этот параметр, если требуется, чтобы программа Dynamo «забывала» сделанное при предшествующих запусках графика и каждый раз создавала новые объекты.
{% endhint %}

### Параметр 2. Store in Graph for Dynamo (Сохранять в графике для Dynamo)

Если этот параметр выбран, метаданные привязки объекта будут проиндексированы в графике (файл DYN) при его сохранении. Если закрыть и заново открыть график, а затем запустить его в **том же чертеже**, он должен работать точно таким же образом, что и до закрытия. При запуске этого же графика в **другом чертеже** данные привязки будут из него удалены, и в чертеже будут созданы новые объекты. Это означает, что при открытии исходного чертежа и повторном запуске в нем графика в дополнение к старым объектам будут созданы новые.

{% hint style="info" %}
**Рекомендации по использованию**

Используйте этот параметр, если требуется, чтобы программа Dynamo «запоминала» объекты, созданные при последнем запуске графика в **конкретном чертеже** .
{% endhint %}

{% hint style="warning" %}
Этот параметр оптимален для ситуаций, когда определенный график Dynamo используется только в **конкретном чертеже** и больше нигде. Параметры 1 и 3 больше подходят для графиков, предназначенных для использования в нескольких чертежах.
{% endhint %}

### Параметр 3. Store in Drawing For Dynamo (Сохранить в чертеже для Dynamo)

Этот параметр похож на параметр 2, однако при его выборе данные привязки объекта индексируются не в графике (файл DYN), а в чертеже. Если закрыть и заново открыть график, а затем запустить его в **том же чертеже**, он должен работать точно таким же образом, что и до закрытия. Если запустить этот график в **другом чертеже**, данные привязки будут по-прежнему доступны в исходном чертеже, поскольку они сохраняются в нем, а не в графике.

{% hint style="info" %}
**Рекомендации по использованию**

Используйте этот параметр, если требуется, чтобы программа Dynamo «запоминала» все полученные результаты при запуске определенного графика в **нескольких чертежах** .
{% endhint %}

### Параметр 4. Store in Drawing For Dynamo Player (Сохранить в чертеже для проигрывателя Dynamo)

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

{% hint style="info" %}
Если вы еще не знакомы с проигрывателем Dynamo, см. раздел [dynamo-player](https://primer2.dynamobim.org/ru/dynamo-for-civil-3d/dynamo-player "mention").
{% endhint %}

Если запустить график в основном интерфейсе Dynamo, а затем закрыть и запустить его снова, но уже в проигрывателе Dynamo, то в дополнение к созданным изначально объектам будут созданы новые. Однако после того, как график будет выполнен в проигрывателе Dynamo, данные привязки объектов будут индексированы в чертеже. Таким образом, если запустить один и тот же график несколько раз в проигрывателе Dynamo, то вместо создания новых объектов будут обновляться уже существующие. Если запустить этот же график через проигрыватель Dynamo в **другом чертеже**, данные привязки будут по-прежнему доступны в исходном чертеже, поскольку они сохраняются в нем, а не в графике.

{% hint style="info" %}
**Рекомендации по использованию**

Используйте этот параметр, если требуется, чтобы проигрыватель Dynamo «запоминал» все полученные результаты при запуске определенного графика в нескольких чертежах.
{% endhint %}
