この Wiki では、Dynamo API を使用して開発を行う方法や、各種のライブラリやツールに関する情報を参照できます。
https://github.com/DynamoDS/Dynamo/wiki
このブログでは、Dynamo の新機能や新しいワークフローなど、Dynamo 開発チームによるさまざまな最新情報を参照できます。
プログラミング言語の主要な目的は、ロジックや計算を使用して各種の処理を表現することです。この目的に加えて、Dynamo のテキスト言語(旧 DesignScript)は、設計意図を表現する目的で開発されました。一般的に、計算による設計作業は実験的な試みだと考えられていますが、Dynamo はその取り組みをサポートするためのツールです。Dynamo は、設計上の繰り返し処理を通じて、コンセプト デザインから最終的な詳細設計まで対応できる柔軟で扱いやすい言語となることを目指しています。このマニュアルは、プログラミングの経験も建築設計のジオメトリに関する知識もないユーザ向けに構成されています。このマニュアルには、プログラミングと建築設計のジオメトリという 2 つの専門分野に関するさまざまなトピックが記載されています。
http://dynamobim.org/wp-content/links/DesignScriptGuide.pdf
Dynamo Primer は、オートデスクの Matt Jezyk 氏と Dynamo 開発チームによって開始されたオープン ソース プロジェクトです。Dynamo Primer の初版は、Mode Lab によって開発されました。リポジトリをフォークし、コンテンツを追加し、プル リクエストを送信して、開発プロジェクトに参加してください。
https://github.com/DynamoDS/DynamoPrimer
このページでは、Zero-Touch インタフェースを使用して C# で Dynamo のカスタム ノードを開発するプロセスについて説明しています。ほとんどの場合、C# の静的メソッドとクラスは、修正せずにそのまま読み込むことができます。ライブラリで関数だけを呼び出す必要があり、新しいオブジェクトを構築する必要がない場合は、静的メソッドを使用する非常に便利です。Dynamo で DLL をロードすると、クラスの名前空間が除去され、すべての静的メソッドがノードとして表示されます。
https://github.com/DynamoDS/Dynamo/wiki/Zero-Touch-Plugin-Development
Python は、インタプリタ形式の、インタラクティブなオブジェクト指向のプログラミング言語です。この言語には、モジュール、式、動的型付け、高レベルな動的データ型、クラスが組み込まれています。Python は、強力な性能と非常にわかりやすい構文を兼ね備えています。Python には、システム コール、ライブラリ、さまざまなウィンドウ システムに対応するインタフェースが用意されています。C や C++ でさらに機能を拡張することもできます。また、プログラミング可能なインタフェースを必要とするアプリケーションの拡張言語として使用することもできます。Python は、高い可搬性を誇る言語です。多くの UNIX 系 OS、Mac OS、Windows 2000 以降の OS で動作します。次の Python 入門ガイドには、Python の学習に役立つ入門用チュートリアルやリソースのリンクが記載されています。
https://www.python.org/about/gettingstarted
AForge.NET は、画像処理、ニューラル ネットワーク、遺伝的アルゴリズム、ファジー論理、機械学習、ロボット工学など、コンピュータ ビジョンと人工知能の分野における開発者と研究者のために設計されたオープンソースの C# フレームワークです。
http://www.aforgenet.com/framework/
MathWorld は、Eric W. Weisstein 氏監修のもと、多数の寄稿者の協力によって作成されたオンライン数学リソースです。1995 年に初めてオンラインで公開されて以来、MathWorld は数学界と教育界の両方で、数学に関するさまざまな情報を提供してきました。その情報は、あらゆる教育レベルにわたる雑誌や書籍で幅広く参照されています。
このブログでは、Revit プラットフォームを中心として、お勧めの活用法が紹介されています。
このノートブックは、設計ワークフローにおける Revit API の学習と適用について、他のリソースでは紹介されていない情報を補完するためのリソースです。
http://wiki.theprovingground.org/revit-api
RevitPythonShell を使用すると、IronPython インタプリタを Autodesk Revit と Autodesk Vasari に追加できます。 このプロジェクトは Dynamo よりも前に開始されており、Python 開発に関する参考資料として活用できます。RPS プロジェクト:
https://github.com/architecture-building-systems/revitpythonshell
開発者のブログ:
http://darenatwork.blogspot.com/
業界を牽引する BIM の専門家によって作成された、Revit API ワークフローの信頼できるカタログです。
設計作業では、多くの場合、設計要素間の視覚的な関係、システム的な関係、幾何学的な関係を決定するという作業が発生します。通常、こうした関係は、ルールに従って概念から具体的な成果を生み出すワークフローによって構築されていきます。私たちは、アルゴリズムを意識することなく、アルゴリズムに従って毎日の業務を行っています。たとえば、入力、処理、出力という基本的なロジックに従い、段階的に業務を行っています。プログラミングでアルゴリズムを定式化することにより、こうした方法で業務を継続的に行うことができるようになります。
アルゴリズムは非常に便利な手法ですが、誤って理解される場合もあります。アルゴリズムは、予想もできない素晴らしいものを生み出す可能性を秘めていますが、決して魔法ではありません。実際に、アルゴリズム自体は非常に単純なものです。具体的な例として、折り鶴について考えてみましょう。最初に正方形の紙を用意します。これを一連の手順に従って折っていくと、折り鶴が出来上がります。この場合、紙が「入力」、折る手順が「処理」、出来上がった折り鶴が「出力」になります。
では、折り鶴のどこにアルゴリズムがあるのでしょうか。アルゴリズムは一連の抽象的な手順であり、テキストとグラフィックスのどちらでも表現することができます。
テキストによる手順の説明:
正方形の紙を用意し、色が付いている面を表にして置きます。対角線で 2 つ折りにしてから元に戻します。次に、もう一方の対角線で 2 つ折りにしてから元に戻します。
紙を裏返し、白い面を表にして置きます。正方形の両辺を 2 つ折りにして、折筋をつけてから元に戻します。次に、別の方向に 2 つ折りにしてから元に戻します。
ここまでにつけた折筋を使って、紙の上部の 3 つの角を下の角に合わせ、正方形に折りつぶします。
手前の 2 つの三角形の両側下辺を中心線に合わせて折り、元に戻します。
上の角を中央に合わせて、折筋をつけてから元に戻します。
手前の袋の部分を開いて持ち上げながら、両端を中央へ向かって押しつぶし、折筋をつけます。
紙を裏返して、手順 4 ~ 6 を繰り返します。
上の頂点を中央に合わせて折ってから元に戻します。
反対側でも同じ手順を繰り返します。
左右の「脚」を上に向かって折り、折筋をつけてから元に戻します。
上の手順でつけた折筋に沿って、左右の「脚」を中割り折りします。
一方を中割り折りして鶴の頭を作り、羽の部分を引き下げて開きます。
これで折り鶴が出来上がりました。
グラフィックスによる手順の説明:
どちらの手順に従って折っても、折り鶴が出来上がります。実際に折ってみると、アルゴリズムに従って折り鶴を作ったことになります。唯一異なるのは、定式化された一連の手順を読む方法です。これが、プログラミングを行う理由になります。コンピュータ プログラミング(通常は、省略してプログラミングといいます)とは、一連の処理を実行可能なプログラムとして定式化する行為のことです。上記の鶴の折り方をコンピュータで読み取って実行できる形式に変換した場合、プログラミングを行っていることになります。
プログラミングで最初に直面する重要な課題は、コンピュータと効率的なコミュニケーションを行うために、特定の抽象化形式を使用しなければならないということです。その抽象化の形式として、JavaScript、Python、C などのプログラミング言語が使用されています。先ほどの鶴の折り方のように反復可能な手順を作成できれば、後はそれをコンピュータ用に翻訳するだけで済みます。近いうちに、コンピュータで折り鶴を作るだけでなく、それぞれ微妙に異なる多数の折り鶴を作ることもできるようになるでしょう。これがプログラミングの能力です。どんなタスクをコンピュータに割り当てても、遅延やヒューマン エラーを発生させることなくタスクを繰り返し実行することができます。
ビジュアル プログラミングとは
下のリンクをクリックして、サンプル ファイルをダウンロードします。
すべてのサンプルファイルの一覧については、付録を参照してください。
折り鶴の作り方を記述するタスクを割り当てられたとしたら、どのようにしてそのタスクを実行しますか。この場合、グラフィックスで手順を記述する方法、テキストで手順を記述する方法、グラフィックスとテキストを組み合わせて手順を記述する方法が考えられます。
グラフィックスで手順を記述する場合、またはグラフィックスとテキストを組み合わせて手順を記述する場合、ビジュアル プログラミングが最適な方法です。通常のプログラミングとビジュアル プログラミングのどちらの場合も、基本的なプロセスは同じです。どちらも同じ定式化の枠組みを使用しますが、ビジュアル プログラミングの場合は、視覚的なグラフィカル ユーザ インタフェースを使用して、プログラムの指示や関係を定義します。この場合、構文に従ってテキストを入力するのではなく、事前にパッケージ化されたノードを相互に接続します。ここで、同じアルゴリズムを使用して、ビジュアル プログラミングとテキストによるプログラミングを比較してみましょう。「指定された点を通過する円弧を描画する」という命令を、ノードを使用してプログラミングする場合の例と、コードを使用してプログラミングする場合の例を示します。
ビジュアル プログラミング:
テキスト プログラム:
このアルゴリズムの結果は、次のようになります。
このように、ビジュアル プログラミングには、視覚的に理解しやすいという特徴があります。そのため、最初から簡単にプログラミングを実行することができ、設計者にとっても便利な仕様になっています。Dynamo はビジュアル プログラミングの範疇に分類されますが、アプリケーション内でテキストを使用してプログラミングを行うこともできます。これについては、後で説明します。
このセクションでは、Dynamo の理解をさらに深めるための追加のリソースを紹介します。さらに、重要なノードの索引、便利なパッケージのコレクション、この手引で使用しているサンプル ファイルのリポジトリも記載します。他にも必要なリソースがある場合は、このセクションに追加してください。Dynamo Primer は、オープン ソースのドキュメントです。
このセクションでは、Dynamo コミュニティで人気のあるパッケージをいくつか紹介します。これ以外にも便利なパッケージがあれば、リストに追加してください。Dynamo Primer は、オープンソース型のドキュメントです。開発者の皆様の積極的な参加をお待ちしています。
archi-lab には、Dynamo と Revit との対話機能を大幅に拡張する 50 個超のカスタム パッケージが含まれています。archi-lab パッケージには、基本的なリスト操作用のノードから、Revit 用の高度な Analysis Visualization Framework ノードまで、さまざまなノードが含まれています。archi-lab は Dynamo Package Manager で入手できます。
BimorphNodes は強力なユーティリティ ノードを集めたもので、汎用性があります。パッケージの特徴は、きわめて効率的な干渉検出とジオメトリの交差ノード、ImportInstance (CAD)の曲線変換ノード、そして、Revit API での制限を解決するリンクされた要素のコレクタにあります。利用可能なすべての範囲のノードについては、BimorphNodes Dictionary を参照してください。BimorphNodes は Dynamo Package Manager で入手できます。
Bumblebee は、Dynamo で Excel ファイルを読み書きする際の機能を大幅に向上させる、Excel と Dynamo の相互運用性プラグインです。
Clockwork は、Dynamo ビジュアル プログラミング環境用のカスタム ノードが集まったものです。Clockwork には、Revit に関連する多数のノードに加え、リスト管理、算術演算、文字列処理、単位変換、ジオメトリの操作(主に、境界ボックス、メッシュ、平面、点、サーフェス、UV、ベクトル)、パネル作成など、さまざまな用途のノードが豊富に用意されています。
DataShapes は、Dynamo スクリプトのユーザ機能を拡張するためのパッケージです。このパッケージにより、Dynamo プレーヤの機能が大幅に拡張されます。詳細については、https://data-shapes.net/ を参照してください。このパッケージを使用すれば、Dynamo プレーヤで高度なワークフローを作成できます。
DynamoSAP は、Dynamo 上に構築された、SAP2000 用のパラメトリック インタフェースです。このプロジェクトにより、設計者とエンジニアは Dynamo で SAP モデルを駆動し、SAP 上の構造システムを生成的なアプローチで作成して解析することができます。このプロジェクトでは、付属のサンプル ファイルで説明されているように、一般的なワークフローが事前に用意されています。これらのワークフローにより、SAP における多くの一般的なタスクを自動化できます。
このライブラリを使用すると、ユーザ自身がサーフェスとポリサーフェスのジオメトリを展開できるようになり、Dynamo と Revit の機能が拡張されます。ユーザはこのライブラリを使用して、最初にサーフェスを平らな Tessellate トポロジに変換し、次に Dynamo の ProtoGeometry ツールを使用して Tessellate トポロジを展開することができます。このパッケージには、いくつかのサンプル ノードと、基本的なサンプル ファイルも含まれています。
Illustrator または Web からベクター アートを .svg 形式で読み込むことにより、手作業で作成したイラストを Dynamo に取り込み、パラメトリック操作を行うことができます。
Energy Analysis for Dynamo を使用すると、Dynamo 0.8 でパラメトリック エネルギー モデリングと建物全体のエネルギー解析ワークフローを実行できます。また、Autodesk Revit でエネルギー モデルを設定し、そのモデルを Green Building Studio に送信して DOE2 エネルギー解析を行ったり、解析結果を詳しく分析することもできます。このパッケージは、Thornton Tomasetti の CORE studio で開発されています。
ノードの集まりである Firefly を使用すると、Dynamo で Arduino マイコンなどの入出力デバイスと通信を行うことができます。データがリアルタイムに処理されるため、Web カメラ、携帯電話、ゲーム コントローラ、センサなどを使用して、ディジタルの世界と現実の世界を連携させるためのさまざまなプロトタイプを作成できます。
Genius Loci は、Dynamo 用ノードを集めたものです。Revit ユーザに役立つノードで構成されています。リンク ファイルや Revit ドキュメントとの連携などの機能があります。パッケージをインストールしてご確認ください。
Mantis Shrimp は、Grasshopper ジオメトリや Rhino ジオメトリを Dynamo に簡単に読み込むことができる、相互運用性プロジェクトです。
Dynamo Mesh Toolkit には、メッシュ ジオメトリを操作するための便利な各種ツールが用意されています。このパッケージには、外部のファイル形式からメッシュを読み込む機能、既存の Dynamo ジオメトリ オブジェクトからメッシュを生成する機能、頂点と接続に関する情報からメッシュを手動で作成する機能が含まれています。また、このツールキットには、メッシュ ジオメトリの修正や修復を行うためのツールが含まれています。
🧐 MONOCLE
Monocle は、Dynamo 2.0.x. 用のビューの拡張機能です。Monocle には、パッケージの識別やグラフのクリーンアップなど、有用なツール セットが含まれています。Monocle は、Dynamo UI に機能を追加することを目的としていますが、Dynamo に初めから組み込まれているのかと思えるほどシームレスに追加されています。Monocle は Dynamo Package Manager で入手できます。
Dynamo ユーザは、Optimo で各種の高度なアルゴリズムを使用して、自分で定義した設計上の問題を最適化できます。また、問題の目的と適応度関数を定義することができます。
Rhynamo ノード ライブラリを使用すると、Rhino 3DM ファイルを Dynamo 内で読み書きすることができます。Rhynamo は、McNeel の OpenNURBS ライブラリを使用して、Rhino のジオメトリを Dynamo で使用できるジオメトリに変換します。これにより、Rhino と Revit 間でジオメトリやデータを柔軟に交換するための新しいワークフローが作成されます。このパッケージには、Rhino コマンド ラインへの「ライブ」アクセスが可能なサンプル ノードも含まれています。
Rhythm は、Dynamo を使用した Revit プロジェクトを順調に進めるために役立つノードをセットにしたものです。基本的な機能は十分です。主に C# で構築された Rhythm はオープン ソースで、Revit ノード、コア ノード、およびビュー拡張機能を Dynamo に追加します。Rhythm は Dynamo Package Manager で入手できます。
SpringNodes は、Dynamo と Revit との連携機能を改善することを主な目的としています。さらに、BIM に重点を置いたワークフローを高速化する上で役立つ手段となることを目指しています。多くのノードは IronPython または DesignScript を使用しており、それぞれに特有の構文と機能を理解するための出発点として適しています。SpringNodes は Dynamo Package Manager で入手できます。
ARCHI-LAB
BIMORPH NODES
BUMBLEBEE FOR DYNAMO
CLOCKWORK FOR DYNAMO
DATA|SHAPES
DYNAMO SAP
DYNAMO UNFOLD
DYNASTRATOR
ENERGY ANALYSIS FOR DYNAMO
FIREFLY FOR DYNAMO
GENIUS LOCI
MANTIS SHRIMP
MESH TOOLKIT
OPTIMO
RHYNAMO
RHYTHM
Spring Nodes