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

2019年9月29日日曜日

タイプ名の一覧をエクセルに出力するには?

ダイナモで簡単にできます!

現在のプロジェクトに設定されている壁タイプの一覧が必要になった場合、ダイナモを使えば簡単にその一覧を取得することができます。
もちろん壁タイプに限らず、床や屋根、構造フレームなどのファミリ名、配管タイプなど、様々な一覧をエクセルに出力することができます。

作り方


  1. [管理]タブ>[ビジュアルプログラミング]パネル>[Dynamo]
  2. 新規作成
  3. 左下の自動を手動に変更。
    自動→手動
  4. 次のノードを追加する。
    • [Revit]>[Selection]>[ElementTypes]
    • [Revit]>[Selection]>[All Elements of Type]
    • [Revit]>[Elements]>[Element]>[Name]
  5. 下の図のように接続する。
    三つのノードを接続
  6. 次のノードを追加する
    • [ImportExport]>[Data]>[ExportExcel]
    • [ImportExport]>[File System]>[File Path]で任意のファイル名を指定
    • [Input]>[Basic]>[String]、値を壁タイプ
    • [Input]>[Basic]>[Number]
    • [Input]>[Basic]>[Boolean]
  7. 下の図のように接続する
    ノードを接続
  8. 実行ボタンをクリックすると、エクセルが立ち上がって結果が表示される。
    壁タイプが出力される

例えば!~線種パターンの一覧

同じグラフを使って様々な要素タイプの名前を一覧出力できます。線種パターンを出力するには
  • [Element Types]にLinePatternElement
  • [String]に線種
    線種パターンを出力する
として実行ボタンを押すだけです。ほかにも様々な要素タイプがあるので試してみてください。

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データの分析にも大変便利です。




2014年9月7日日曜日

ダイナモ白熱教室(4)~エクセル

座標値を編集する

前回取得したCSVファイルをエクセルで編集し、Y座標から1mを引いてして、新しい座標を作成します。
CSVをエクセルで開いて、値を編集する

この座標値を利用して、新たにファミリを配置してみます。

CSVファイルの読み取り

ファイルを読み取るには次の2つのノードが必要です。左の「Search」のところに、テキストを打ち込んで検索すると早いです。

  1. [File Path]ファイル名を指定する
  2. [ImportFromCSV] CSVファイルのインポート
[File Path]のBrowseボタンをおして、CSVファイルを指定し、1の>と2のfilePathを接続します。ここでF5を押して実行してみると、下の図のような数字のリストを取得できていることがわかります。
CSVファイルから座標の値を取得

座標リストの作成

CSVファイルから数値を読み込むと、列ごとにX,Y,Z座標に分かれたリストになっているので、XYZの座標に組み替えて座標のリスト変換します。

  1. [GetItemAtIndex] x3 インデックスを与えて、そのリストを取得
  2. [Number] x3 数字を入力する
1,2それぞれX,Y,Z座標ように3つ用意し、Numberにはそれぞれ0,1,2の数字をいれて、2のindexに接続し、X,Y,Zの座標値のリストを作成します。
X,Y,Zそれぞれの座標値のリストを作成

ファミリの作成

座標値とファミリの名前を指定してファミリを作成します。

  1. [Family Types] ファミリタイプを選択
  2. [FamilyInstance.ByCoodinates] XYZの座標値でファミリインスタンスを作成する

1でファミリ名を選択します。現在のバージョンでは2バイト文字に対応していないのでファミリの名前はあらかじめ半角英数にしておきます。
3つのList.GetItemAtIndexをそれぞれ2のX,Y,Zに接続します。
ファミリタイプと座標値を接続
それではF5を押して実行してみましょう。
ソファの1m前にテーブルが作成された
上の図のような結果になりました。下の図は今回作成した全体の様子です。
全体図
前回と今回でファミリの座標をエクセルに抽出する方法と座標を読み込んでファミリを配置する方法を説明しました。Revitだけでは、ファミリの座標を取得することはできません。それには別途プログラムを使ったカスタマイズが必要だったのですが、ダイナモがあれば比較的容易に座標を活用することができるようになります。Revitを活用した様々な分析に利用できるのではないでしょうか?



2014年6月1日日曜日

RevitとExcel(4) ドアが取り付けられている壁

ホストの情報を得るには?

ドアがどの種類の壁に取り付けられているかを知りたい時があります。耐火壁に防火戸が取り付けられているか?を効率的に把握してみましょう。Revit User Tools最新版のExcel書き出しではファミリインスタンスのホストの情報を出力できます。以下のリンクからダウンロードしインストールしてください。

http://www.rugjapan.com/forum-thread/877.html

ドアの情報を出力

まずドアインスタンスの情報を出力します。
(1) RUTS-Excel-エクスポート拡張版
(2) ドアのインスタンスを選択し、HostにチェックをいれOK。
ドア-インスタンス-Hostにチェック

(3) さらにOKして、エクセルに出力。
HostのGUIDが出力されます。
HostのGUIDが出力される

壁の情報を出力

次に壁インスタンスの情報を出力します。
(1) RUTS-Excel0エクスポート拡張版
(2) 壁のインスタンスを選択し、コメントにチェックを入れます。
壁のインスタンスを出力
(3) さらにOKして、エクセルに出力。
新しいBOOKのシートに壁のインスタンス情報が出力されます。
壁インスタンスのパラメーター出力結果

これらを一つのBookにまとめてそれぞれのシート名にわかりやすい名前を付けておきます。ここではDoorとWallとしておきます。
一つのブックにまとめると扱いやすい

VLOOKUP関数で関連付けを行う

GUIDをキーとしてVLOOKUP関数で壁の情報をドアのシートに表示しましょう。
(1) ドアのシートをアクティブにし、2行目、Host列の右隣の「E2」のセルを選択し、「fx」をクリック。
関数の挿入
(2) VLOOKUP関数を選択
(3) 検索値に「D2」、範囲はWallシートのA列からC列(Wall!A:C)、列番号は「3」、検索方法は「FALSE」を指定します。
VLOOKUP関数の設定

(4) セルE2に壁のタイプ名(Wallシートの3列目、C列の値)が表示されます。

あとは、ハンドルを使ってコピーしてください。ドアのとりついている壁のタイプ名が取得できました。下の図はHost列を非表示にし、E1のタイトル名を入れた状態です。
ドアが取り付けられている壁の情報が表示された状態

並べ替えて分析する

簡単に分析してみましょう。まずドア、壁の順番で並べ替えます。
(1) [ホーム]-[編集]-[並べ替えとフィルター]-[ユーザー設定の並べ替え]
(2) Family Category とType、取り付けられている壁を指定してOK
並べ替えの指定

ドアのタイプごとに取り付けられている壁が表示されました。
並べ替えられて少しわかりやすくなりました。

小計をとってもうすこしわかりやすく表示してみます。
(1) [データ]-[小計]
(2) 図のように設定しOK
小計の設定

下の図の青枠部分をみてください。あるドアは、1時間耐火の内部の壁と、外壁の両方にに取り付けられているということがわかります。これは取り付け位置を間違えたのかもしれません。

取り付ける壁かドアタイプを間違えた可能性が・・・


ドアを出力するときコメントも出力しておけば、こうした問題点をRevitのパラメーターに戻すことができます。

Excelのパワフルな各種分析機能を組み合わせることで、より詳細な分析が可能になります。パラメーターの情報をいろいろな手法で分析するというのはいかにもBIMらしいですね。


2014年5月25日日曜日

RevitとExcel(3)~帖数と坪数

部屋の面積を帖・坪に換算する

住宅の場合、部屋の面積を㎡とともに帖で表記することはよくあることですが、残念ながら帖はRevitの単位にありません。そこでExcelで部屋の帖数を計算し、それをRevitに戻し、なおかつタグに表示してみます。

共有パラメーター「帖」の作成

共有パラメーターとは、複数のプロジェクトやファミリ間共通で使用するパラメーターのことです。共有パラメーターはGUIDという固有の番号を持っているため、名前が一致するだけでは複数のプロジェクト・ファミリで共通して使用することができません。定義方法はとても簡単です。

(1)[管理]-[設定]-[共有パラメーター]を選択
(2)[作成]ボタンをクリックし、任意のフォルダに任意の名前で保存します

任意のフォルダに任意の名前で保存

(3)[グループ]で[新規作成]をクリックし、任意の名前(ここでは「面積情報」)をつけます。
パラメーターグループを追加
(4)[パラメーター]の[新規作成]で名前を「帖」、パラメータータイプを「実数」とします。
名前は帖、パラメータータイプは「実数」
パラメーターのタイプを面積にすると、単位表示をした際「㎡」が付加されることを避けるためです。実数は「単位なし」という意味だと考えてください。

つづいてプロジェクトにパラメーターを追加します。


(1)[管理]-[設定]-[プロジェクトパラメーター]で[追加]をクリック
(2)パラメータータイプで「共有パラメーター」を選択、[選択]ボタンをクリック
共有パラメーター「帖」を追加する
(3)先ほど作成した「帖」を追加します。
(4)カテゴリで「部屋」を選択しOKします。
部屋カテゴリに「帖」パラメーターを追加
以上で共有パラメーター「帖」がプロジェクトに設定されました。

部屋の面積を出力

前回同様、Revit User Group提供のRUTSのExcel書出しを使いますが、書出しの前に単位の設定をしておきます。


(1) [管理]-[設定]-[プロジェクトで使う単位]
(2) [面積]をクリックし、「丸め」を小数点以下の桁数 2、単位記号 なしとしOK



RUTSのExcel書出し(エクスポート拡張版)を用いて、部屋の面積および帖を書き出します。
レベル、名前、面積、帖をチェック

帖のセルに計算式を設定します。1帖=1.652㎡として、小数点以下第2位を四捨五入するようにしてみます。計算式は

=ROUND(F2/1.652,1)


でよいでしょう。桁処理に正確さを期するのであれば、Round関数を二重にかけるなどの処置が必要です。
計算式を設定


この状態で、エクセルからRevitに情報を戻します。

[RUTS]-[EXCEL]-[インポート]


任意の部屋を選択し、帖が表示されていることを確認します。
部屋のプロパティ「帖」が設定されている

タグに帖数を表示する

次にタグに面積と帖数を表示してみましょう。


(1) 任意の部屋タグを選択し、[修正|部屋タグ]の[ファミリを編集]ボタンをクリックします。
(2) ファミリエディタが開いたら、中央の101を選択

(3) [修正|ラベル]の[ラベルを編集]
(4) 既存の「番号」を削除し、左下の「パラメーターを追加」アイコンをクリック
パラメーターを追加をクリック

(5) [選択]ボタンをおして、「帖」を追加します。
帖を→ボタンで追加し、末尾表記を「帖」とする
(6)ラベルを編集ダイアログボックスに戻り、「帖」を追加し、末尾表記に「帖」をいれます。
(7)ファミリエディタで「プロジェクトにロード」をクリック
(8)「既存のバージョンを上書きする」をクリック


帖数をタグに表示することができました。
帖数が表示されている

このようにエクセルと共有パラメーターを組み合わせることで、プロジェクトの状況に応じた様々な属性情報を追加したり、計算したり、表示したりすることができるようになります。

次回はさらにいろいろな応用例をご紹介します。

2014年5月17日土曜日

ExcelとRevit(2)~仕上表と平面図では部屋の呼称を変えたいとき

平面図では「廊下(1)」、「廊下(2)」、仕上表では両方「廊下」

Revitは部屋をあつめて仕上表をつくります。確かに理に適ってはいますが、世の中そう理屈通りにはいかないもので、仕上表という一覧性を考えた場合、複数の部屋の情報を一行にまとめる、という行為はたいていの建物の設計行為の中で発生します。この場合は、部屋という要素に「本名」と仕上表用の「ニックネーム」が必要です。そしてほとんどの部屋ではこの「本名」と「ニックネーム」は同じであるため、パラメーターの値をコピーする必要があります。

使用するパラメーターは?

rac_advanced_sample_project.rvtの平面図、01 - Entry Levelを開くと、下側のウィングにInstructionという部屋が4つほどあります。集計表で部屋を集めるとそのほかにも同じ名前の部屋がたくさんあるので、これに通し番号をつけて、仕上表では一行にまとめる、という作業を実践してみましょう。
Revit集計表 同じ名前の部屋に通し番号(1)などを付けた
ます、本名とニックネームに使用するパラメーターですが、共有パラメーターを使ってもいいですが、今回は「コメント」を使います。
  • 本名------------「名前」
  • ニックネーム-----「コメント」
この「名前」パラメーターに格納されている値を「コメント」にコピーします。ここで前回ご紹介したRUTS2014のExcel書出/読込機能を活用します。

Excelへ書出し

RUTSのExcelパネルの「エクスポート拡張版」を起動します。
「部屋」「Instance」を選択し、「コメント」と「名前」を選択しまます。
部屋の名前とコメントをチェック
「名前」、「コメント」の順番で出力します。
名前、コメントの順でOK
エクセルに部屋の一覧が出力されます。
出力されたExcel

Excelでコメントの情報を編集

名前列の値をコメント列にコピーします。
名前をコメントにコピー

次にエクセルの置換機能をつかって、末尾の(1)や(2)を削除します。ワイルドカードを使えば簡単に(1)などの通し番号を削除できます。
検索文字列にワイルドカード「*」を使って空白スペースに置換する
エクセルでは使い慣れた豊富な関数や機能が自在に使えるので、パラメーター値の編集にはもってこいです。
EXCELは様々な機能で値の編集をサポートしてくれる
この値をRUTSの「インポート」を使ってRevitに戻してやりましょう。
Revitに編集後のパラメーターを戻す
集計表の並べ替えを変更し、仕上表の体裁を整えます。並べ替えの基準をコメントとし、各インスタンスの内訳をオフにします。

コメントを並べ替え方法とし、各インスタンスの内訳をオフ
そうすると、複数の部屋を一つの行で表示することができます。
室名の値はコメントを利用している

平面図では部屋の名前をタグに表示

この手法は一つの部屋に二つの名前を付けるという点で、ちょっと問題があるかもしれませんが、エクセルの活用方法の一つとしてご紹介しました。