皆様こんにちは
AMDlabの秋山です。
Dynamo開発をしていると、既存のノードだけでは対応できず、カスタムノードの導入やcodeblockノード、Pythonスクリプトノードを使用して、コーディングしてオリジナルのノードを作成する必要が出てきます。
今回お話するZeroTouch Nodeもその一つです。つい最近、弊社でもZeroTouch Nodeを利用した開発を行いました。ZeroTouch Nodeを使用することでDynamoの世界がより広がったので今回の記事では、簡単なプログラムをZeroTouch Nodeで作ってみようと思います。
ZeroTouch Nodeとは
C#によって書かれたコードをコンパイルすることで実行速度が向上するカスタムノードです。建築業界のように大量のデータや大容量データを扱う場合に特に有効です。また、ZeroTouch NodeはDLLとして配布されるため、共有が簡単である点と、テキストベースのコーディングになるので可読性がビジュアルプログラムよりもよくなります。
さらに、外部ライブラリやAPIとの連携が可能になるので、Dynamoプロジェクト内で様々な外部ツールやサービスを利用することができます。この外部連携に関しては、まさに今回開発したプログラムで効果を発揮しました。
ステップ1: 必要なソフトウェアのインストール
- Visual Studioのインストール:
ステップ2: 開発環境の設定
- Visual Studioで新しいプロジェクトを作成:
- 参照の追加:
ステップ3: コーディング
- 今回は、2つのノードを作成します。C#でクラスとメソッドを定義します。
- 1つ目は、2つの数値を入力として受け取り、それらの合計を返すシンプルな関数を使用したノードを作成します。
12345678910namespace CustomMathNodes{public static class MathOperations{public static double AddTwoNumbers(double a, double b){return a + b;}}}
- 1つ目は、2つの数値を入力として受け取り、それらの合計を返すシンプルな関数を使用したノードを作成します。
-
- 2つ目は、一辺の長さを入力として受け取り、その寸法の正方形をつくるノードを作成します。ジオメトリの作成には、Dynamoが提供する
Autodesk.DesignScript.Geometry
ネームスペースを使用します。12345678910111213using Autodesk.DesignScript.Runtime;using Autodesk.DesignScript.Geometry;namespace GeometryDynamo{public static class GeometryCreator{public static Rectangle CreateSquare(double sideLength){return Rectangle.ByWidthLength(sideLength, sideLength);}}}
- 2つ目は、一辺の長さを入力として受け取り、その寸法の正方形をつくるノードを作成します。ジオメトリの作成には、Dynamoが提供する
ステップ4: コンパイルとDLLの生成
- Visual Studioでプロジェクトをビルドします。ビルドが成功すると、指定したプロジェクトフォルダ内の「bin\Debug」または「bin\Release」ディレクトリにDLLファイルが生成されます。
ステップ5: Dynamoにインポート
- Dynamoを開き、[ファイル] タブから「ライブラリを読み込む」を選択し、生成したDLLファイルを選択してインポートします。
- インポート後、新しいノード(カスタムノード)として「AddTwoNumbers」と「CreateSquare」が利用可能になります。
いかがでしょうか?
Revitでアドイン開発をするように、Dynamoのカスタムノードを作成することができました。
次回は、ZeroTouch NodeでRevitエレメントを参照するお話をしていきます。
COMMENTS