Dynamo
Primer for v2.0
日本語
日本語
  • この Web サイトについて
  • はじめに
    • Dynamo とは、その動作の仕組みとは
    • Primer ユーザ ガイド、Dynamo コミュニティ、プラットフォーム
  • Dynamo のセットアップ
  • ユーザ インタフェース
    • ワークスペース
    • ライブラリ
  • ノードとワイヤ
  • 基本ノードと概念
    • ノードの索引
    • 計算設計用のジオメトリ
      • ジオメトリの概要
      • ベクトル、平面、座標系
      • 点群
      • 曲線
      • サーフェス
      • 立体
      • メッシュ
    • プログラムの構成要素
      • データ
      • 数学的方法
      • ロジック
      • 文字列
      • 色
    • リストを使用した設計
      • リストの概要
      • リストの操作
      • リストのリスト
      • N 次元のリスト
    • Dynamo のディクショナリ
      • ディクショナリとは
      • [Dictionary]カテゴリのノード
      • コード ブロックにおけるディクショナリ
      • Revit での使用例
  • カスタム ノードとパッケージ
    • カスタム ノード
      • カスタム ノードの概要
      • カスタム ノードを作成する
      • ライブラリへのパブリッシュ
    • パッケージ
      • パッケージの概要
      • パッケージのケース スタディ - Mesh Toolkit
      • パッケージを開発する
      • パッケージをパブリッシュする
      • Zero-Touch Importing
  • Revit 用の Dynamo
    • Revit との連携
    • 選択
    • 編集
    • 作成
    • カスタマイズ
    • 設計図書の作成
  • Dynamo for Civil 3D
    • Civil 3D の接続
    • スタートアップ
    • ノード ライブラリ
    • サンプル ワークフロー
      • 道路
        • 照明柱の配置
      • 土地
        • サービスの配置
      • ユーティリティ
        • 構造物の名前を変更する
      • 軌道
        • クリアランスのエンベロープ
      • 測量
        • ポイント グループ管理
    • 高度なトピック
      • オブジェクト バインド
      • Python と Civil 3D
    • Dynamo プレーヤ
    • 便利なパッケージ
    • リソース
  • Dynamo in Forma Beta
    • Forma で Dynamo Player を設定する
    • Dynamo Player でグラフを追加、共有する
    • Dynamo Player でグラフを実行する
    • Dynamo コンピューティング サービスとデスクトップ版 Dynamo の違い
  • Dynamo でのコーディング
    • コード ブロックと DesignScript
      • コード ブロックとは
      • DesignScript 構文
      • 省略表記
      • 関数
    • DesignScript を使用するジオメトリ
      • DesignScript ジオメトリの基本
      • ジオメトリ プリミティブ
      • ベクトル計算
      • 曲線: 補間および制御点
      • 移動、回転、およびその他の変換
      • サーフェス: 補間、制御点、ロフト、回転
      • ジオメトリのパラメータ化
      • 交差およびトリム
      • ジオメトリのブール演算
      • Python 点ジェネレータ
    • Python
      • Python Script ノード
      • Python と Revit
      • 独自の Python テンプレートを設定する
    • 言語の変更
  • ベスト プラクティス
    • 見やすいプログラムを作成するためのガイドライン
    • スクリプト作成のガイドライン
    • スクリプト リファレンス
    • プログラムを管理する
    • Dynamo で大規模なデータ セットを効率的に操作する
  • サンプル ワークフロー
    • スタートアップ ワークフロー
      • パラメータを使用する花瓶
      • アトラクタ ポイント
    • 概念インデックス
  • 開発者向け Primer
    • ソースから Dynamo をビルドする
      • ソースから DynamoRevit をビルドする
      • Dynamo での依存関係の管理と更新
    • Dynamo 向けの開発
      • スタートアップ
      • Zero-Touch ケース スタディ - グリッド ノード
      • Zero-Touch ノードで Python スクリプトを実行する(C#)
      • Zero-Touch の詳細を確認する
      • Dynamo ノードの高度なカスタマイズ
      • Dynamo パッケージで COM (相互運用)タイプを使用する
      • NodeModel ケース スタディ - カスタム UI
      • Dynamo 2.x 用のパッケージと Dynamo ライブラリを更新する
      • Dynamo 3.x 用のパッケージと Dynamo ライブラリを更新する
      • 拡張機能
      • Dynamo 2.0+ のカスタム パッケージ編成を定義する
      • Dynamo コマンド ライン インタフェース
      • Dynamo の統合
      • Dynamo for Revit 向けの開発
      • パッケージをパブリッシュする
      • Visual Studio からパッケージをビルドする
      • パッケージとしての拡張機能
    • プル リクエスト
    • テストによる期待
    • サンプル
  • 付録
    • よくある質問(FAQ)
    • ビジュアル プログラミングと Dynamo
    • リソース
    • リリース ノート
    • 便利なパッケージ
    • サンプル ファイル
    • ホスト統合マップ
    • PDF をダウンロード
    • Dynamo のキーボード ショートカット
Powered by GitBook
On this page
  • ジオメトリの生成とテッセレーションの比較
  • メモリ消費量
  • Revit API
Edit on GitHub
Export as PDF
  1. ベスト プラクティス

Dynamo で大規模なデータ セットを効率的に操作する

Previousプログラムを管理するNextサンプル ワークフロー

Last updated 2 months ago

このページでは、Dynamo で大規模なデータセットを効率的に操作するための経験則について説明します。ヒントを参考にすると、グラフのボトルネックを特定し、グラフが時間単位ではなく分単位で実行されるようにすることもできます。

目次:

  • ジオメトリの生成とテッセレーションの比較

  • メモリ使用量

  • Revit API

ジオメトリの生成とテッセレーションの比較

Dynamo では、ジオメトリの作成と描画は、2 つのまったく異なるイベントです。一般に、ジオメトリの作成は、オブジェクトの描画よりもはるかに高速で、メモリの消費量も少なくなります。ジオメトリはスーツを作成する際の寸法一覧で、テッセレーションはスーツそれ自体と考えることができます。スーツの寸法からは、腕の長さや費用などかなり多くのことがわかりますが、ほとんどの場合は、完成したスーツを見て試着し、結果が正しいかどうかを確認する必要があります。同様に、テッセレーションを実行していないジオメトリの場合、境界ボックス、面積、体積を決定し、他のジオメトリと交差させ、SAT や Revit に書き出すことができます。ただし、ほとんどの場合、ジオメトリをテッセレーションして、結果が正しいかどうかを確認する必要があります。

Dynamo グラフに多数のオブジェクトがあり、実行中に速度が低下する場合は、グラフからテッセレーション手順を削除して処理速度を上げることができます。

Dynamo のジオメトリ ノードは常にテッセレーションされます*。そのため、テッセレーションされていないジオメトリを操作するには、Python ノードと ZeroTouch ノードの 2 つのオプションを使用することになります。Python または ZeroTouch ノードからジオメトリ オブジェクトを返さない限り、ジオメトリはテッセレーションされません。たとえば、グラフに複数の点ノード、複数の線分ノード、複数のロフト ノード、複数の厚みノードが接続されている場合、ジオメトリは各ステップでテッセレーションされます。その代わりに、このロジックを Python または ZeroTouch ノードにバンドルして、ノードから最後のオブジェクトのみを返すことができます。

ZeroTouch ノードの使用の詳細については、この手引書の「」セクションを参照してください。

メモリ消費量

ジオメトリをテッセレーションしない場合、余分なジオメトリの蓄積によってメモリのボトルネックが発生する可能性があります。Dynamo のジオメトリ オブジェクト作成時のメモリ消費量は多くはありませんが、少ないわけでもありません。数十万または数百万のオブジェクトを操作している場合、これらが積み重なり、Dynamo や Revit がクラッシュする可能性があります。Dynamo バージョン 2.5 以降では、これは未使用のオブジェクトを破棄することによって暗黙的に処理されますが、2.5 より前のバージョンを使用している場合は、大量のジオメトリを作成しないようにする 1 つの方法として、処理完了時にオブジェクトを破棄するという方法があります。たとえば、それぞれに何十もの Point を必要とする NURBS 曲線を何十万も作成するとします。作成する方法の 1 つに、Dynamo で 2 次元のリストを作成し、NurbsCurve.ByPoints ノードに入力するというものがあります。ただし、そのためには数百万の Point を作成する必要があります。もう 1 つの方法は、Python または ZeroTouch ノードを使用することです。このノードでは、数十個の点を作成して NurbsCurve.ByPoints ノードに入力し、その点を .Dispose() メソッド呼び出しで破棄できます。ZeroTouch ノードの使用の詳細については、この手引書の「」セクションを参照してください。ジオメトリ オブジェクトを作成した後に破棄すると、特定の状況で使用されるメモリの量を大幅に削減できます。Dynamo 2.5 以降のユーザはこの処理が可能ですが、使用事例によって、メモリを削減するタイミングがわかっている場合は、ジオメトリを明示的に破棄することをお勧めします。Dynamo 2.5 で導入された安定性に関する新機能の詳細については、「」を参照してください

Revit API

ZeroTouch または Python ノードで積極的にオブジェクトを破棄しても、メモリやパフォーマンスの問題が解決しない場合は、Dynamo を完全にバイパスし、API を使用して Revit オブジェクトを直接作成しなければならない場合があります。たとえば、Excel ファイルで点の情報を解析し、この情報を使用して API で XYZ 座標やその他の Revit 要素を作成できます。この場合は、Revit が最終的なボトルネックとなります。これは回避することができません。

Dynamo 向けの開発
Dynamo 向けの開発
Dynamo ジオメトリの安定性の向上