久しぶりにダイナモを取り上げます。今回はファミリの座標をEXCELに出力する方法を説明します。
普段のRevitでの作業では座標を意識することは全くないのですが、解析にデータを回したりする場合、特定のファミリの挿入点をCSVやエクセルに出力する必要があります。
今回はダイナモを使って、プロジェクト内部にあるファミリの挿入点をエクセルに出力してみます。
ダイナモの最新バージョンは1.1.0で、
こちらからダウンロードできます。
ダイナモの起動
Revitでサンプルプロジェクトを立ち上げ、ダイナモをスタートします。
(1) [R]-[開く]-[サンプルファイル]で「rac_advanced_sample_project.rvt」を開く。[表示]-[3Dビュー]でアクソメ表示にしておきます。
(2) 2016までは[アドイン]から、2017では[管理]からダイナモを起動し[新規作成]を選択します。
要素をカテゴリで選択する
「家具」のカテゴリにある要素(Element)をすべて選択します。
(1) [Revit]-[Selection]-[Categories]ノードを追加し、「家具」を選択。
(2) [Revit]-[Selection]-[All Elements of Category]ノードを追加して、図のようにつなぐ。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9LsAT2KtTcjK0aT5nkynDoeGxEQmtaSP5SQTwzaJjgvwJXmE4wen6Z7fG8Kb44SPPAGnCgRPCc14Fih_JtBZj1ntI8E1JGRJpinRNFSEPl10G5Q-_NonU8_n7JhGp0U2J9mx_dYJQlMCf/s400/dyn1001.PNG) |
すべての家具を選択 |
(3) 検索ボックスに「Watch」と入力し、Watchノードを追加し、どのような家具が取得できたか確認する。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2l690-KPipAlACLBm2o3U4Ta_oei9KI2EWo6TCmObYBaDpRoXoQkMXbBTs_3w3IhAHZa15J8QTkrjvUVxaGLP4ELUBKWoQkPAMuWw2t0Kg-mEI1JZXXpCH6fNhw7zOpBG9BZpvb6O36Lm/s320/dyn1002.PNG) |
取得した家具を確認する |
ファミリの挿入点を取得する
次に取得した家具ファミリインスタンスの挿入点を取得します。
(1) [Revit]-[Elements]-[Familyinstance]-[Location]ノードを追加
(2) 図のように接続し、Watchノードをつなぎ変えて、座標の状況を確認する。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ9JVluE3uipcpdMFrny0BgFpNYSuZNtLvEj1OwFUD0VM_JNrLcL1dVDtM6ShPXt2ZsrWoYLyTk9W1qhVEEv2DzbxuadljrH-1nwmp5XO-fYGIWMciynH_J9VSxekbQ3NPA8sNce-Y4k_m/s400/dyn1003.PNG) |
座標が取得できた! |
Excelに書き出す
座標が取得できたので、書き出すためのExcelブックを準備します。Excelを立ち上げて、適切な場所に空のブックを保存します。ここではMyDocumentに
座標出力.xlsxという名前で保存して閉じます。
(1) [Office]-[WriteToFile]ノードを追加
(2) <filepath>を指定するために、[Core]-[Input]-[File Path]ノードを追加し、[参照]ボタンをおして、上記で作成したExcelブックを指定。
(3) <sheetName>を指定するため、[Core]-[Input]-[String]を追加し、「Sheet1」とする。
(4) <startRow><startCol.を指定するため、[Core]-[Input]-[Number]を追加し、「0」とする。
(5) <overwrite>を指定するため、[Core]-[Input]-[Boolean]を追加し、「True」を選択。
(6) 図のように接続すると、座標がエクセルに書き出されます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFD0HkoZWjs2ukq_5LSuaD2JOQXJEn1Et2UmfvJTpuBjig9-ADZdhSHIjvAMR8yusbQG2ZJjCV1eDG01lCMzfZHmNC2FrSlAs_cpkuc6PhuiX2U-OqVIhQNkpmixp8xIyN4-p5bU5rU2bw/s400/dyn1004.PNG) |
Excelに座標を出力 |
Excelを見てみると、下の図のように、A列のセルに「Point(X = -7985.799, Y = 29089.041, Z = 0.000)」と出力できました。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5BcJHIUUqeOebYxyuFMiREQF5k2dqe3nuC2qqXfZxIHz9fxo_CSuAcKbAQCtrMF2WgpJNgWreCjS6Vo10mtIQgBPzp_AgFtIaTBmXSlodJf-ZbwXfN_CC_4JV1bjTvv_tCSK15aj1ZmCb/s400/dyn1005.PNG) |
A列のセルに座標が出力されてた |
しかし、やはりX、Y、Zの数字だけをそれぞれA,B,C列に取り込みたいところです。
座標XYZを別々のセルに取り込む
そのためにはまず、X,Y,Zの数字のリストを作る必要があります。上の図の1行目を例にとれば、
-7985.799,29089.041,0.000
というような、数字だけのリストです。
数字だけのリストをつくるには
(1) [Geometry]-[Point]-[X]、[Y]、[Z]ノードを追加し、下の図のようにつなぎます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjoHZYKas6-wQ9K5yYuocKt5Gil7qKjTzHIucYUlT3e62VuFwUhGr9bULHIegorw18X8zt-FEvpYcFxWiBkhmFgzEyrXMEdRJ-tvE59yTd9Ue7egmXSzjP1d6wYSqk6N-xb-mmRmmFKw5-/s400/dyn1006.PNG) |
X,Y,Zノード |
(2) [Core]-[List]-[List.Create]ノードを追加し、[+]の2回クリックし、item2まで作って、x,y,zをそれぞれに接続。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT-jkLFOOZDvAFPOiyeqQy-o64cQHI11xDLRDNFpmQaB9rG991W0D2ukeK2dHc74lQuD-OHOAjoCsNL4vNDqWOZGFJD6heSQAAm1YCcI2KZv3SgX7d3UgXBgQhL7BK96gst-ELzhmqiQi4/s400/dyn1007.PNG) |
List.createノード |
(3) [Watch]ノードを追加して、[List.Create]の<list>につないでみます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkgFmjV4iTuzUWY6nam59BNzr6FKUWnYiSdAMaO3txUr_ri2nlHw6irsELPRE29Rz64s51pzfCTyDz8lvHPumq8jtWa3iqMlSEBrChrVXf_rlI7_MSz2cSAJUCcLHncQ8cGO_vWpl5VVG8/s400/dyn1009.PNG) |
[0]ListはXの、[1]ListはYの、[2]ListはZの値になっている。 |
この状態で、[List.Create]の<list>を[Excel.WriteToFile]の<data>につなぐと、1行目にXの値、2行目にYの値、3行目にZの値がセルに分かれて出力されます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigjeYIZ50L0HedxqdWOCwru3OH8Sxu5SamjQIOkloHjo7pjxrIwVmHYsnmcJWyd4xxwEnupwOjmYmwzEgeGRCgEpRDUXGhzHUNzOjYFcZvLMOc6w9CWAKD6rWKCx5Ap5TaXTKhwimE-y6v/s400/dyn1010.PNG) |
1行目はX、2行目はY、3行目はZ |
ですが、こうではなく、やはりA列にX、B列にY、C列にZの値を出力したいところです。
(4) [Core]-[List]-[Transpose]ノードを追加し、図のようにつなぐ。
すると、下の図のようにExcelに出力されます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbTFbegsPMvq1-MA1TVsuWU5RwsTbm_7eDmlr0VagYdEpxTMrsDmsUN2CPtIxPOcTalaL98IP6NhH_BWdGsmVYOf6zzG9KfFGiBfWRIpWIhoLRD_5K1VWWiVIbRGr01RuZTgXF89a0r-bt/s400/dyn1012.PNG) |
出力された座標 |
ライブラリにこのグラフを置いておきます。このようにDynamoはRevitデータの分析にも大変便利です。