ラベル 座標 の投稿を表示しています。 すべての投稿を表示
ラベル 座標 の投稿を表示しています。 すべての投稿を表示

2018年9月15日土曜日

梁の座標

Dynamo!

梁の端点の座標をDynamoを使ってEXCELに出力してみましょう。サンプルのデータは標準で付属している[rst_advanced_sample_project.rvt]を使います。
この構造フレームの両端の座標を

このように出力することが目標です。Dynamoを起動して新規作成を選択しましょう。

構造フレームを選択する



  1. Revit > Selection > Categories で「構造フレーム」を選択。
  2. Revit > Selection > All Elements of Category を選択し1のCategoryとCategoryを結ぶ。

構造フレームの位置(カーブ)を抽出



  1. Revit > Elements > StructuralFraming > Location を追加し、All Elements of Category の ElementsとstructuralFramingを結ぶ。
  2. バックグラウンドに構造フレームの位置を示すカーブが描画される。

カーブの始点と終点の座標を求める


  1. Geometry > Curves > Curve > StartPoint EndPoint を追加。
  2. StructuralFraming.Location の Curveとそれぞれの curve を結ぶ。バックグラウンドのカーブ(直線)の端点に●が表示されます。

XYZの値に分解する

ExcelのセルにX,Y,Zの値をそれぞれ格納するために値を分解します。

  1. Geometry > Points > Point > X,Y,Z を2つずつ追加。
  2. Curve.StartPointとCurve.EndPointのPointをX,Y,ZのPointとつなぐ。

ファミリ名の取得

Excelに出力するときファミリ名とタイプ名があると便利です。

  1. Revit > Elemennts > Element > ElementType を追加し、All Elements of Category の Elementsとelementと結ぶ。

  1. Revit > Elemennts > FamilyType > Family を追加し、ElementTypeとfamilyTypeを接続。
  2. Revit > Elemennts > Family > Name を追加し、Familyとfamilyを接続。これによりファミリの名前のリストを取得できます。

タイプ名の取得


  1. Revit > Elemennts > FamilyType > Name を追加し、Element.ElementTypeのElementTypeとfamilyType を接続。

プロパティの取得

構造フレームのレベルは「参照レベル」という名前のプロパティに格納されています。プロパティの値を取得しましょう。

  1. Input > Basic > String を追加し「参照レベル」と設定。
  2. Revit > Elements > Parameter > ParameterByName を追加し、Stringの > と nameを結ぶ。
  3. All Elements of Category の Elements と elmenet を結ぶ。
参照レベルの値が取得できたか、Listを確認してください。

取得した値のリスト化

以上でEXCELに出力する項目の値はすべて取得しました。次に各セルに値を格納するために、一行分を取り出してリスト化します。


  1. List > Generate > List Create を追加し[+]をクリックしてitem0からitem8まで作成。
  2. item0からitem8までを図のように接続する.

リストの列と行を入れ替える


  1. List > Organize > Transpose を追加し、list とlists を接続。
  2. 作成されたリストを確認。

EXCEL出力する

作成したリストをEXCELにエクスポートします。

  1. ImportExport > Data > ExportExcel を追加。
  2. ImportExport > File System > File Path を追加し、file Pathに接続。
  3. Input > Basic > String を追加し、「梁の座標」と入力し、sheetNameに接続。
  4. Input > Basic > Number を 2つ追加し、startRowとstartColに接続。
  5. Input > Basic > Boolean を追加し、Trueを選択し、overwriteに接続。
  6. 最後に List.Transpose のListsをdataに接続すると、Excelが起動し座標が出力される。

完成したグラフはこちらからダウンロードできます。


めざせ!ダイナモマスター

ダイナモを基礎から習得するには、こちらの Dynamo Primer がベストです。ダイナモの習得に必要な基礎知識、チュートリアルがそろっています。すべてを理解するにはかなりの時間がかかりますが、昼休みに少しずつやってみれば3カ月もすれば、あなたもダイナモマスターに必ずなれます。

頑張りましょう!





2016年10月2日日曜日

ダイナモ白熱教室(10)-ファミリの座標をExcelに出力

久しぶりにダイナモを取り上げます。今回はファミリの座標を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]ノードを追加して、図のようにつなぐ。
すべての家具を選択
(3) 検索ボックスに「Watch」と入力し、Watchノードを追加し、どのような家具が取得できたか確認する。
取得した家具を確認する

ファミリの挿入点を取得する


次に取得した家具ファミリインスタンスの挿入点を取得します。

(1) [Revit]-[Elements]-[Familyinstance]-[Location]ノードを追加
(2) 図のように接続し、Watchノードをつなぎ変えて、座標の状況を確認する。
座標が取得できた!

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) 図のように接続すると、座標がエクセルに書き出されます。
Excelに座標を出力
Excelを見てみると、下の図のように、A列のセルに「Point(X = -7985.799, Y = 29089.041, Z = 0.000)」と出力できました。
A列のセルに座標が出力されてた
しかし、やはりX、Y、Zの数字だけをそれぞれA,B,C列に取り込みたいところです。

座標XYZを別々のセルに取り込む

そのためにはまず、X,Y,Zの数字のリストを作る必要があります。上の図の1行目を例にとれば、
-7985.799,29089.041,0.000
というような、数字だけのリストです。

数字だけのリストをつくるには

(1) [Geometry]-[Point]-[X]、[Y]、[Z]ノードを追加し、下の図のようにつなぎます。
X,Y,Zノード
(2) [Core]-[List]-[List.Create]ノードを追加し、[+]の2回クリックし、item2まで作って、x,y,zをそれぞれに接続。
List.createノード
(3) [Watch]ノードを追加して、[List.Create]の<list>につないでみます。
[0]ListはXの、[1]ListはYの、[2]ListはZの値になっている。
この状態で、[List.Create]の<list>を[Excel.WriteToFile]の<data>につなぐと、1行目にXの値、2行目にYの値、3行目にZの値がセルに分かれて出力されます。
1行目はX、2行目はY、3行目はZ

ですが、こうではなく、やはりA列にX、B列にY、C列にZの値を出力したいところです。

(4) [Core]-[List]-[Transpose]ノードを追加し、図のようにつなぐ。

すると、下の図のようにExcelに出力されます。
出力された座標
ライブラリにこのグラフを置いておきます。このようにDynamoはRevitデータの分析にも大変便利です。