Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Dynamo の多くの優れた使用事例の 1 つは、コリドー モデルに沿って個別のオブジェクトを動的に配置することです。多くの場合、オブジェクトはコリドーに沿って挿入されたアセンブリとは独立した位置に配置する必要があります。これは、手動で行うにはきわめて面倒な作業です。コリドーの水平ジオメトリまたは垂直ジオメトリが変更されると、大量の再作業が必要になります。
外部ファイル(この場合は Excel)からデータを読み込む
ディクショナリ内のデータを編成する
座標系を使用して位置/尺度/回転をコントロールする
ブロック参照を配置する
Dynamo でジオメトリを視覚化する
このグラフは Civil 3D 2020 以降で実行できます。
まず、以下のサンプル ファイルをダウンロードし、DWG ファイルと Dynamo グラフを開きます。
Excel ファイルを Dynamo グラフと同じフォルダに保存することをお勧めします。
このグラフのロジックの概要を以下に示します。
Excel ファイルを読み込み、データを Dynamo に読み込む
指定したコリドー基線から計画線を取得する
目的の測点でコリドー計画線に沿って座標系を生成する
座標系を使用してモデル空間にブロック参照を配置する
以上です。
このサンプル グラフでは、Excel ファイルを使用して、Dynamo が照明柱のブロック参照を配置するために使用するデータを保存します。表は次のようになります。
Dynamo を使用して外部ファイル(Excelファイルなど)からデータを読み込む方法は、特にデータを他のチーム メンバーと共有する必要がある場合に最適です。
Excel データは、次ように Dynamo に読み込まれます。
データが得られたら、列(Corridor、Baseline、PointCode など)で分割して、グラフの残りの部分で使用できるようにする必要があります。これを行う一般的な方法は、List.GetItemAtIndex ノードを使用して、必要な列のインデックス番号を指定することです。たとえば、[Corridor] 列はインデックス 0、[Baseline] 列はインデックス 1、などです。
問題なさそうですね?しかし、このアプローチには潜在的な問題があります。Excel ファイルの列の順序が将来変更されたらどうなるでしょうか?あるいは、2 つの列の間に新しい列が追加されたら?その場合は、グラフが正しく機能しなくなり、更新が必要になります。Excel の列ヘッダーを キー として、残りのデータを 値 として使用して、データをディクショナリに入れることで、グラフを将来も使用できるように保証します。
ディクショナリを初めて使用する場合は、「Dynamo のディクショナリ」セクションを参照してください。
これにより、Excel で列の順序を柔軟に変更できるため、グラフの柔軟性が向上します。列ヘッダーが同じであるかぎり、キー(列ヘッダー)を使用してディクショナリからデータを取得できます。これを次に実行します。
これで Excel データが読み込まれ、準備ができたので、このデータを使用して、コリドー モデルに関する情報を Civil 3D から取得しましょう。
コリドー モデルを名前で選択します。
コリドー内の特定の基線を取得します。
基線内の計画線をポイント コードにより取得します。
ここで、Excel ファイルで指定した測点値でコリドー計画線に沿って座標系を生成します。これらの座標系は、照明柱のブロック参照の位置、回転、および尺度を定義するために使用されます。
座標系を初めて使用する場合は、「ベクトル、平面、座標系」 セクションを参照してください。
基線のどちら側に座標系があるかに応じて座標系を回転するために、ここでコード ブロックを使用します。これは複数のノードのシーケンスを使用して実現できますが、これは単に書き出すほうが簡単である良い例です。
コード ブロックを初めて使用する場合は、「コード ブロックと DesignScript」 セクションを参照してください。
あと少しです。ブロック参照を実際に配置するために必要なすべての情報が揃いました。まず、Excel ファイルの BlockName 列を使用して必要なブロック定義を取得します。
ここから、最後の手順としてブロック参照を作成します。
グラフを実行すると、コリドーに沿ってモデル空間に新しいブロック参照が表示されます。これが素晴らしいところで、グラフの実行モードが[自動]に設定されている状態で Excel ファイルを編集すると、ブロック参照が自動的に更新されます。
グラフの実行モードの詳細については、「ユーザ インタフェース」 セクションを参照してください。
以下に、Dynamo プレーヤを使用してグラフを実行する例を示します。
Dynamo プレーヤを初めて使用する場合は、「Dynamo プレーヤ」セクションを参照してください。
コンテキストを提供するために、Dynamo でコリドー ジオメトリを視覚化すると便利です。この特定のモデルでは、モデル空間で既に抽出されたコリドーのソリッドが存在するため、Dynamo に取り込んでみましょう。
しかし、他にも検討する必要があることがあります。ソリッドは比較的重いジオメトリ タイプであるため、この操作によってグラフの速度が低下します。ソリッドを表示するかどうかを、簡単に 選択 できる方法があれば便利です。解決策は非常に単純で、 Corridor.GetSolids ノードの接続を解除するだけですが、これによってすべての下流ノードに警告が生成されてしまう点が少々面倒です。この状況では、ScopeIf ノードが役に立ちます。
Object.Geometry ノードの下部にグレーのバーがあることに注目してください。これは、ノードのプレビューがオフになり(ノードを右クリックしてアクセス可能)、GeometryColor.ByGeometryColor が、背景プレビューでの表示優先順位に関して他のジオメトリとの「競合」を回避できることを意味します。
ScopeIf ノードを使用すると、基本的にノードのブランチ全体を選択的に実行できます。test 入力が false の場合、ScopeIf ノードに接続されたすべてのノードは実行されません。
Dynamo の背景プレビューの結果は次のとおりです。
このグラフの機能を拡張する方法について、いくつかのアイデアを示します。
Excel ファイルに 回転 列を追加し、それを使用して座標系の回転を駆動します。
必要に応じて照明柱がコリドー計画線から外れるようにするため、Excel ファイルに 水平オフセットまたは垂直オフセット を追加します。
Excel ファイルで測点値を使用する代わりに、開始測点と標準間隔を使用して、Dynamo で直接 測点値を生成します。
道路、鉄道、土地、ユーティリティ、測量、GIS...。
土木インフラは、これらすべてが含まれますが、それだけではありません。このセクションでは、Dynamo に習熟し、Dynamo for Civil 3D の可能性を最大限に引き出すための、実践的で関連性の高いサンプル グラフをいくつか紹介します。各グラフには、作成に使用されたロジックの詳細な説明が含まれています。これにより、そのロジックを 使用 できるだけでなく、理解 できるようになります。
さらに、これらのサンプルは、強力なグラフを構築するための実績のあるベスト プラクティスを具体化しています。サンプルを使用して作業する際に、強力で柔軟性があり、保守が可能なグラフを構築する方法についてのアイデアについて、「」セクションを読むことをお勧めします。
Excel ファイルで指定した測点値でコリドーに沿って照明柱のブロック参照を配置します。
ミッションが達成されました。
クリアランス検証のための運動学的エンベロープの開発は、鉄道設計の重要な部分です。Dynamo を使用すると、複雑なコリドー サブアセンブリを作成して管理する代わりに、エンベロープのソリッドを生成してこのジョブを実行できます。
コリドー計画線を操作する
座標系間でジオメトリを変換する
ロフトによりソリッドを作成する
レーシング設定を使用してノードの動作をコントロールする
このグラフは Civil 3D 2020 以降で実行できます。
まず、以下のサンプル ファイルをダウンロードし、DWG ファイルと Dynamo グラフを開きます。
このグラフのロジックの概要を以下に示します。
指定したコリドー基線から計画線を取得する
コリドー計画線に沿って目的の間隔で座標系を生成する
プロファイルの Block ジオメトリを座標系に変換する
プロファイル間でソリッドをロフトする
Civil 3Dでソリッドを作成する
以上です。
最初の手順は、コリドー データを取得することです。コリドー モデルを名前で選択し、コリドー内の特定の基線を取得します。次に、基線内の計画線をそのポイント コードで取得します。
ここで、指定した開始測点と終了測点の間に、コリドー計画線に沿って座標系を生成します。これらの座標系は、車両プロファイルの Block ジオメトリを コリドーに位置合わせするために使用されます。
座標系を初めて使用する場合は、「ベクトル、平面、座標系」 セクションを参照してください。
ノードの右下隅にある小さな XXX に注目してください。これは、ノードのレーシング設定が [直積] に設定されていることを意味します。これは、両方の計画線に対して同じ測点値で座標系を生成するために必要です。
ノード レーシングを初めて使用する場合は、「リストの概要」 セクションを参照してください。
ここで、計画線に沿って車両プロファイルの配列を何らかの方法で作成する必要があります。これから行う作業では、Geometry.Transform ノードを使用して、車両プロファイルのブロック定義からジオメトリを変換します。これは視覚化が難しい概念なので、ノードを確認する前に、次のグラフィックスでこれから起こる動作を示します。
基本的に、単一の Block 定義から Dynamo ジオメトリを取得し、移動または回転しながら、計画線に沿って配列を作成します。いいですね。ノード シーケンスは次のようになります。
これにより、ドキュメントから Block 定義を取得します。
これらのノードは、Block 内のオブジェクトの Dynamo ジオメトリを取得します。
これらのノードは、基本的にジオメトリの 変換元 の座標系を定義します。
最後に、このノードはジオメトリを変換する実際の作業を行います。
このノードの 最長 レーシングに注目してください。
Dynamo では、次のようになります。
とっておきの朗報です。大変な作業は終わりました。次に行う必要があるのは、プロファイル間にソリッドを生成することだけです。これは、Solid.ByLoft ノードを使用して簡単に行うことができます。
結果は次のようになります。これらは Dynamo ソリッドです。これらを Civil 3D で作成する必要があります。
最後の手順は、生成されたソリッドをモデル空間に出力することです。見やすくするために、色付けもします。
以下に、Dynamo プレーヤを使用してグラフを実行する例を示します。
Dynamo プレーヤを初めて使用する場合は、「Dynamo プレーヤ」セクションを参照してください。
このグラフの機能を拡張する方法について、いくつかのアイデアを示します。
各トラックに対して異なる測点範囲を個別に使用する機能を追加します。
小さなセグメントにソリッドを分割し、クラッシュを個別に解析できるようにします。
エンベロープ ソリッドがフィーチャと交差するかを確認し、クラッシュするソリッドに色を付けます。
車両の縦断ブロックを使用して、コリドーに沿ってクリアランスのエンベロープ 3D ソリッドを生成します。
ミッションが達成されました。
パイプ ネットワークにパイプと構造物を追加する場合、Civil 3D はテンプレートを使用して名前を自動的に割り当てます。通常、初期の配置時にはこの値で十分ですが、設計が進行するにつれて、必然的に名前を変更する必要が出てきます。さらに、要求される命名パターンは多数あります。たとえば、パイプ配管内で最も下流の構造物から始めて構造物に順番に命名したり、現地の関係機関のデータ スキーマに沿った命名パターンに従ったりすることです。この例では、Dynamo を使用して、あらゆるタイプの命名方法を定義して、一貫して適用する方法を示します。
バウンディング ボックスを操作する
List.FilterByBoolMask ノードを使用してデータをフィルタする
List.SortByKey ノードを使用してデータを並べ替える
テキスト文字列を生成および修正する
このグラフは Civil 3D 2020 以降で実行できます。
まず、以下のサンプル ファイルをダウンロードし、DWG ファイルと Dynamo グラフを開きます。
このグラフのロジックの概要を以下に示します。
レイヤ別に構造物を選択する
構造物の位置を取得する
構造物をオフセットでフィルタし、測点で並べ替える
新しい名前を生成する
構造物の名前を変更する
以上です。
最初に、作業する構造物をすべて選択する必要があります。これを行うには、単純に特定のレイヤ上のすべてのオブジェクトを選択します。つまり、異なるパイプ ネットワークから構造物を選択できます(同じレイヤを共有していると仮定します)。
このノードを使用すると、構造物と同じレイヤを共有する可能性のある不要なオブジェクト タイプを誤って取り出すことがなくなります。
構造物が取得できたので、空間内での構造物の位置を特定し、位置に応じて構造物を並べ替えられるようにする必要があります。これを行うには、各オブジェクトのバウンディング ボックスを利用します。オブジェクトのバウンディング ボックスは、オブジェクトのジオメトリ範囲を完全に含む最小サイズのボックスです。バウンディング ボックスの中心を計算することで、構造物の挿入位置に非常に近い値が得られます。
これらの挿入位置を使用し、選択した Alignment を基準にして構造物の測点とオフセットを取得します。
ここでは、少し面倒な作業を開始します。この段階では、指定したレイヤ上のすべての構造物の大きなリストを取得し、それを並べ替える Alignment を選択しました。問題は、名前を変更したくない構造物がリストに含まれている可能性があることです。たとえば、構造物が対象となる特定の経路に含まれていない場合があります。
選択された Alignment
名前を変更する構造物
無視する必要がある構造物
そのため、Alignment からの特定のオフセットよりも外にある構造物は対象に含めないように、構造物のリストをフィルタする必要があります。これは、List.FilterByBoolMask ノードを使用して行うのが最適です。構造物のリストをフィルタした後、List.SortByKey ノードを使用して、測点値で並べ替えます。
リストを初めて使用する場合は、「リストの操作」 セクションを参照してください。
構造物のオフセットがしきい値より小さいかどうかを確認する
Null 値を false に置き換える
構造物と測点のリストをフィルタする
構造物を測点で並べ替える
最後に、構造物の新しい名前を作成する必要があります。使用する形式は <alignment name>-STRC-<number>
です。ここに、必要に応じてゼロを追加して数値に埋め込むための追加ノードがいくつかあります(例: 「1」を「01」に)。
最後に、構造物の名前を変更します。
以下に、Dynamo プレーヤを使用してグラフを実行する例を示します。
Dynamo プレーヤを初めて使用する場合は、「Dynamo プレーヤ」 セクションを参照してください。
Dynamo の 3D バックグラウンド プレビューを利用して、最終的な結果だけでなく、グラフの中間出力を視覚化すると便利です。簡単に行える方法の 1 つは、構造物のバウンディング ボックスを表示することです。さらに、この特定のデータセットにはドキュメントにコリドーがあるため、コリドー計画線ジオメトリを Dynamo に取り込んで、構造物が空間内のどこに位置するかを確認することができます。グラフがコリドーを持たないデータセットで使用されている場合、これらのノードは何も実行しません。
これで、オフセットによる構造物のフィルタ処理がどのように機能するかを理解できるようになりました。
このグラフの機能を拡張する方法について、いくつかのアイデアを示します。
特定の Alignment を選択するのではなく、最も近い Alignment に基づいて構造物の名前を変更します。
構造物に加えて パイプの名前も変更します。
経路に基づいて構造物の レイヤを設定します。
一般的な住宅開発のエンジニアリング設計には、汚水管、雨水排水、飲料水などの地下ユーティリティの使用が含まれます。この例では、Dynamo を使用して、配水本管から特定の区画にサービス接続を描画する方法を示します。これは、サービス接続を必要とするすべての区画で一般的であり、すべてのサービスを配置するには非常に面倒な作業が発生します。Dynamo を使用すると、必要なジオメトリを正確に自動的に描画したり、現地の関係機関の標準に合わせて調整できる柔軟な入力を提供したりすることで、プロセスをスピードアップすることができます。
ユーザ入力に Select Object ノードを使用する
座標系を使用する
Geometry.DistanceTo や Geometry.ClosestPointTo などのジオメトリ操作を使用する
ブロック参照を作成する
オブジェクト バインド設定をコントロールする
このグラフは Civil 3D 2020 以降で実行できます。
まず、以下のサンプル ファイルをダウンロードし、DWG ファイルと Dynamo グラフを開きます。
このグラフのロジックの概要を以下に示します。
排水本管の曲線ジオメトリを取得する
ユーザ選択の区画線の曲線ジオメトリを取得し、必要に応じて反転する
サービス メーターの挿入点を生成する
サービス メーターの位置に最も近い配水本管上の点を取得する
モデル空間でブロック参照と線分を作成する
以上です。
最初の手順では、Dynamo に配水本管のジオメトリを取得します。Lines または Polylines を個別に選択するのではなく、特定のレイヤ上のすべてのオブジェクトを取得し、Dynamo のポリカーブとしてそれらを結合します。
Dynamo の曲線ジオメトリを初めて使用する場合は、「曲線」 セクションを参照してください。
次に、選択した区画線のジオメトリを Dynamo に取り込んで、作業できるようにする必要があります。このジョブに適したツールは Select Object ノードで、グラフのユーザは、Civil 3D で特定のオブジェクトを選択できます。
また、発生する可能性のある潜在的な問題にも対処する必要があります。区画線には始点と終点があります。つまり、方向があります。グラフで一貫した結果を生成するには、すべての区画線の方向が一貫している必要があります。この条件はグラフ ロジックで直接考慮できるため、グラフの弾力性が向上します。
区画線の始点と終点を取得します。
各点から配水本管までの距離を測定し、どちらの距離が大きいかを特定します。
望ましい結果は、線分の始点が配水本管に最も近くなることです。そうでない場合は、区画線の方向を反転します。それ以外の場合は、元の区画線を返します。
次に、サービス メーターが配置される場所を決定します。通常、配置は現地の関係機関の要件によって決定されるため、さまざまな条件に合わせて変更できる入力値を指定します。点を作成するための参照として、区画線に沿って座標系を使用します。これにより、区画線に対するオフセットを、その向きに関係なく、非常に簡単に定義できます。
座標系を初めて使用する場合は、「ベクトル、平面、座標系」 セクションを参照してください。
次に、サービス メーターの位置に最も近い点を配水本管上で取得する必要があります。これにより、サービス接続が配水本管に対して常に垂直になるようにモデル空間にサービス接続を描画できます。Geometry.ClosestPointTo ノードは最適な対処法です。
これは配水本管のポリカーブです
これらは、サービス メーターの挿入点です
最後の手順は、モデル空間にオブジェクトを実際に作成することです。以前に生成した挿入点を使用してブロック参照を作成し、次に、配水本管上のポイントを使用してをサービス接続に線分を描画します。
グラフを実行すると、モデル空間に新しいブロック参照とサービス接続線が表示されます。入力をいくつか変更して、すべてが自動的に更新されるのを確認してください。
1 つの区画線にオブジェクトを配置した後に、別の区画線を選択すると、オブジェクトが「移動」することがあります。
これは Dynamo の既定の動作で、多くの場合に非常に便利です。ただし、複数のサービス接続を順番に配置し、元の接続を変更するのではなく、Dynamo に実行ごとに新しいオブジェクトを作成させたい場合があるかもしれません。この動作は、オブジェクト バインドの設定を変更することでコントロールできます。
詳細については、オブジェクト バインド セクションを参照してください。
この設定を変更すると、Dynamo は各実行で作成されるオブジェクトを「忘れる」ようになります。次に、Dynamo プレーヤを使用してオブジェクト バインドをオフに設定した状態でグラフを実行する例を示します。
Dynamo プレーヤを初めて使用する場合は、「Dynamo プレーヤ」 セクションを参照してください。
このグラフの機能を拡張する方法について、いくつかのアイデアを示します。
各区画行を選択する代わりに、複数のサービス接続 を同時に配置します。
入力を調整して、水道メーターの代わりに、下水管の掃除口 を配置します。
切り替えを追加 して、区画線の両側ではなく特定の側に単一のサービス接続を配置できるようにします。
Civil 3D で COGO ポイントとポイント グループを使用して作業することは、多くのデータの一貫処理のプロセスの中核となる要素です。Dynamo はデータ管理に関して非常に優れています。この例では、その潜在的な使用例の 1 つを示します。
リストの操作
List.GroupByKey ノードを使用して類似オブジェクトをグループ化する
Dynamo プレーヤでカスタム出力を表示する
このグラフは Civil 3D 2020 以降で実行できます。
まず、以下のサンプル ファイルをダウンロードし、DWG ファイルと Dynamo グラフを開きます。
このグラフのロジックの概要を以下に示します。
ドキュメント内のすべての COGO ポイントを取得する
COGO ポイントを説明でグループ化する
ポイント グループを作成する
概要を Dynamo プレーヤに出力する
以上です。
最初に、ドキュメント内のすべてのポイントグループを取得し、次に各グループ内のすべての COGO ポイントを取得します。これにより、ネストされたリスト、つまり「リストのリスト」が得られます。これは、List.Flatten ノードを使用してリスト全体をフラット化する場合に、後で操作が簡単になります。
すべての COGO ポイントを取得できたので、説明に基づいてグループに分類する必要があります。これは、まさに List.GroupByKey ノードが行う処理です。基本的に、同じキーを共有する項目をグループ化します。
大変な作業は終わりました。最後の手順は、グループ化された COGO ポイントから新しい Civil 3D ポイント グループを作成することです。
グラフを実行しても、ジオメトリを操作していないため、Dynamo の背景プレビューには何も表示されません。グラフが正しく実行されたかどうかを確認する唯一の方法は、ツールスペースを確認するか、ノード出力のプレビューを確認することです。ただし、Dynamo プレーヤを使用してグラフを実行する場合は、作成したポイント グループの概要を出力することで、グラフの結果に関するフィードバックを増やすことができます。必要な操作は、ノードを右クリックして[出力]に設定することだけです。この場合、名前を変更した Watch ノードを使用して結果を表示します。
以下に、Dynamo プレーヤを使用してグラフを実行する例を示します。
このグラフの機能を拡張する方法について、いくつかのアイデアを示します。
ポイントのグループ化を、未処理の説明ではなく 完全な説明 に基づいて行うように修正します。
選択した他の 定義済みカテゴリ (「グラウンド ショット」、「モニュメント」など)によってポイントをグループ化します。
特定のグループのポイントに対して TIN サーフェスを自動的に作成します。
Alignment の測点に基づいて、パイプ ネットワーク構造物の名前を順番に変更します。
ミッションが達成されました。
水道メーターのブロック参照を区画線から指定したオフセットに配置し、配水本管に垂直に各サービス接続の線分を描画します。
ミッションが達成されました。
一意の COGO ポイントの説明ごとにポイント グループを作成します。
リストを初めて使用する場合は、「」 セクションを参照してください。
Dynamo プレーヤを初めて使用する場合は、「」セクションを参照してください。
ミッションが達成されました。