【Dynamo for Revit】Excelからデータを読み込みジオメトリを作成する

3次元設計

前回は、はじめてDynamoを使用し球を作成しました。

【Dynamo for Revit】はじめてのDynamo-球を作成する
Revitの学習を進めながら、併せてDynamoの試用も進めています。 「Dynamo」は、ビジュアルプログラミングツールで、設計やタスクの自動化を行うことができるアプリケーションです。RevitやCivil 3Dと併せて使用が可能で...

今回は、Excelからデータを読み込み、その値をもとに球のジオメトリを作成してみたいと思います。

読み込むExcel

読み込むのは、上記のExcelです。

位置を指定するXYZと、半径を指定するRの値の一覧表です。

 

Excelデータを読み込むプログラムの作成

Excelデータを読み込むプログラムを作成します。

読みんだデータをもとに、球のジオメトリを作成しますが、前回作成したデータを流用します。

【Dynamo for Revit】はじめてのDynamo-球を作成する
Revitの学習を進めながら、併せてDynamoの試用も進めています。 「Dynamo」は、ビジュアルプログラミングツールで、設計やタスクの自動化を行うことができるアプリケーションです。RevitやCivil 3Dと併せて使用が可能で...

ImportExport-Data-ImportExcel

のノードを追加します。

 

ノードが追加されました。

ImportExcelは、Inputとして

  • file
  • sheetName
  • readAsStrings
  • showExcel

が必要です。

 

ImportExport-File System-File Path

ノードを追加します。

 

File Pathノードの「参照」をクリックして、読み込むExcelのパスを指定します。

Excelのパスが指定されました。

 

続いて、「sheetName」を指定します。

シート名は固定なので、作業スペースでダブルクリックし、Code Blockを追加します。

値をシート名の「座標」と指定しました。

 

readAsStrings:Excelのデータを文字列として読み込む

に関しては、座標値なのでいいえ。

showExcel:Excelを開く

に関しては、開く必要はないのでいいえを指定します。

上記2つはBoolean型のため、

Input-Basic-Boolean

より、Booleanノードを2つ追加します。

 

ImportExcelに必要なInputが揃ったので、ノードを接続します。

 

接続したところ、警告が表示されました。

Data.ImportExcelには引数タイプ(System.IO.FileInfo, string, bool, bool)が必要ですが、(string, string, bool, bool)で呼び出されました。

一つ目の引数「file」の型が、System.IO.FileInfoのところ、Stirng型で入力されていることが原因のようです。

 

File Pathノードの後に、

ImportExport-File System-File From Path

を追加します。

 

File From Pathノードにより、Stirng型からSystem.IO.FileInfo型になり、警告が消えました。

これで、Excelからデータを読み込むプログラムが完了しました。

 

配列を整形するプログラムの作成

Excelから読み込んだデータは、配列として入力されます。

読み込んだ座標データをもとに球を作成するわけですが、処理しやすいように配列を整形します。

読み込んだデータは上記のようになっています。

まず、タイトル行が不要なため、配列を1行削除する処理を追加します。

 

List-Modify-DropItems

ノードを追加します。

 

DropItemsノードは、Inputとして配列と削除する行数が必要です。

Code Blockを追加して、削除する行数として1を指定します。

 

ノードを接続します。

不要だったタイトル行が削除されていることがわかります。

 

引き続き、処理がしやすいように配列の行と列を入れ替えます。

List-Organize-Transpose

ノードを追加します。

 

Transposeノードに接続することで、座標データの列と行の入れ替えが完了しました。

これで、配列の整形は完了です。

 

読み込んだデータをもとに、球のジオメトリを作成するプログラム

データの準備が完了したので、読み込んだデータをもとに球のジオメトリを作成するプログラムに接続します。

前回使用したプログラムを流用します。

前回、ByCenterPointRadiusの入力値であるradius(半径)はNumber Sliderを使用しましたが、今回は数値を読み込むため、Code Blockに変更しておきます。

 

XYZ値とR値を配列から抜き出します。

Code Blockの値を、

  • X:IN[1]
  • Y:IN[2]
  • Z:IN[3]
  • R:IN[4]

とそれぞれ変更します。

変更すると、球が複数作成されました。

Excelから取得した配列をもとに、座標値と半径が指定された球ジオメトリが作成されます。

 

今回作成したDynamoプログラム

作成したDynamoプログラムは以下の通りです。

今回はここまでとします。

タイトルとURLをコピーしました