# オブジェクト バインド

Dynamo for Civil 3D には、各ノードで作成されたオブジェクトを「記憶する」ための非常に強力なメカニズムが含まれています。このメカニズムは**オブジェクト バインド**と呼ばれ、これにより、Dynamo グラフは同じドキュメントで実行されるたびに一貫した結果を生成することができます。これは多くの状況で非常に望ましいことですが、Dynamo の動作をより詳細にコントロールしなければならない場合もあります。このセクションでは、オブジェクト バインドの仕組みと、その利点について説明します。

## 例

現在のレイヤでモデル空間に円を作成するこのグラフについて考えてみましょう。

<figure><img src="/files/s9skEpAq3TYgjepRGq0m" alt=""><figcaption><p>円を作成するための単純なグラフ</p></figcaption></figure>

半径が変更されるとどうなるかに注目してください。

<figure><img src="/files/NSTSfIisnf4iIuopEboQ" alt=""><figcaption><p>Dynamo で半径の入力を変更する</p></figcaption></figure>

これが実際のオブジェクト バインドです。Dynamo の既定の動作では、半径の入力が変更されるたびに新しい円が作成されるのではなく、円の半径が *修正* されます。これは、グラフを実行するたびに、**Object.ByGeometry** ノードが *特定の* 円を作成したことを「記憶」するためです。さらに、Dynamo はこの情報を保存するので、次に Civil 3D ドキュメントを開いてグラフを実行すると、まったく同じ動作が実行されます。

## 別の例

次に、Dynamo の既定のオブジェクト バインド動作を変更する例を見てみましょう。たとえば、円の中央にテキストを配置するグラフを作成するとします。ただし、このグラフの目的は、繰り返し実行でき、選択した円に毎回新しいテキストを配置できるようにすることです。グラフは次のようになります。

<figure><img src="/files/KlpsYrT4TVTyTXpqcaYn" alt=""><figcaption><p>選択した円の中心にテキストを配置する単純なグラフ</p></figcaption></figure>

ただし、別の円を選択すると、実際にはこのようになります。

<figure><img src="/files/z47NqIQ8cMFCLd7m7G77" alt=""><figcaption><p>新しい円を選択したときの Dynamo の既定の動作</p></figcaption></figure>

グラフを実行するたびにテキストが削除され、再作成されているように見えます。実際には、選択した円に応じてテキストの位置が *修正* されています。つまり、同じテキストが、別の場所に配置されているだけです。毎回新しいテキストを作成するには、バインド データが保持されないように、Dynamo のオブジェクト バインド設定を修正する必要があります(以下の「[#binding-settings](#binding-settings "mention")」を参照してください)。

<figure><img src="/files/1sEo2YG6zRBjBSRTGMS0" alt=""><figcaption><p>オブジェクト バインド設定</p></figcaption></figure>

この変更を行うと、求めている動作が得られます。

<figure><img src="/files/j9DoCr1xldulCc65iRBH" alt=""><figcaption><p>オブジェクト バインドが無効になっている場合の動作</p></figcaption></figure>

## バインド設定

Dynamo for Civil 3D では、**Dynamo** メニューの **\[バインド データ ストレージ]** 設定を使用して、既定のオブジェクト バインドの動作を変更することができます。

{% hint style="info" %}
\[バインド データ ストレージ]オプションは、**Civil 3D 2022.1** 以降で使用できることに注意してください。
{% endhint %}

<figure><img src="/files/rSfOSXiDpgHArHlAwLDP" alt=""><figcaption></figcaption></figure>

すべてのオプションは既定で有効になっています。各オプションの機能の概要を次に示します。

### オプション1: バインド データを保持しない

このオプションを有効にすると、Dynamo は最後にグラフを実行したときに作成したオブジェクトを「忘れる」ようになります。したがって、グラフは、どのような状況でも任意の図面で実行でき、毎回新しいオブジェクトを作成します。

{% hint style="info" %}
**使用する状況**

このオプションは、前回の実行で行った操作をすべて Dynamo が「忘れて」、毎回新しいオブジェクトを作成する場合に使用します。
{% endhint %}

### オプション2: Dynamo のグラフに保存する

このオプションを選択すると、オブジェクト バインド メタデータが保存時にグラフ(.dyn ファイル)にシリアル化されます。グラフを閉じて再度開き、**同じ図面**で実行すると、すべてが、グラフを閉じる前と同じように動作するはずです。**別の図面**でグラフを実行すると、グラフからバインド データが削除され、新しいオブジェクトが作成されます。これは、元の図面を開いてグラフを再度実行すると、古いオブジェクトに加えて新しいオブジェクトが作成されることを意味します。

{% hint style="info" %}
**使用する状況**

このオプションは、**特定の図面** で最後に作成したオブジェクトを Dynamo に「記憶」させたい場合に使用します。
{% endhint %}

{% hint style="warning" %}
このオプションは、**特定の図面** と Dynamo グラフの間で 1:1 の関係を維持できる場合に最適です。オプション 1 と 3 は、複数の図面で実行するように設計されたグラフに適しています。
{% endhint %}

### オプション3: Dynamo の図面に保存する

これは、オブジェクト バインド データがグラフ(.dyn ファイル)ではなく図面内でシリアル化される点を除き、オプション 2 と同様です。グラフを閉じて再度開き、**同じ図面**で実行すると、すべてが、グラフを閉じる前と同じように動作するはずです。**別の図面**でグラフを実行すると、バインド データはグラフではなく図面に保存されるため、元の図面でも保持されます。

{% hint style="info" %}
**使用する状況**

このオプションは、**複数の図面**で同じグラフを使用し、Dynamo にそれぞれのグラフで行ったことを「記憶」させる場合に使用します。
{% endhint %}

### オプション4: Dynamo プレーヤの図面に保存する

このオプションで最初に注意する点は、メインの Dynamo インタフェースでグラフを実行する場合に、グラフと図面の相互作用に影響を与えないことです。このオプションは、Dynamo プレーヤを使用してグラフを実行する場合に *のみ* 適用されます。

{% hint style="info" %}
Dynamo プレーヤを初めて使用する場合は、「 [Dynamo プレーヤ](/ja/dynamo-for-civil-3d/dynamo-player.md) 」セクションを参照してください。
{% endhint %}

メインの Dynamo インタフェースを使用してグラフを実行し、その後閉じて、次に Dynamo プレーヤを使用して同じグラフを実行すると、以前に作成したオブジェクトの上に新しいオブジェクトが作成されます。ただし、Dynamo プレーヤでグラフを一度実行すると、図面内のオブジェクト バインド データがシリアル化されます。したがって、Dynamo プレーヤでグラフを複数回実行する場合、新しいオブジェクトを作成するのではなく、オブジェクトが更新されます。**別の図面**で Dynamo プレーヤを使用してグラフを実行した場合、バインド データはグラフではなく図面に保存されるため、元の図面で保持されます。

{% hint style="info" %}
**使用する状況**

このオプションは、複数の図面で Dynamo プレーヤを使用してグラフを実行し、各グラフで行ったことを「記憶」させる場合に使用します。
{% endhint %}


---

# 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/ja/dynamo-for-civil-3d/advanced-topics/object-binding.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.
