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に編集後のパラメーターを戻す
集計表の並べ替えを変更し、仕上表の体裁を整えます。並べ替えの基準をコメントとし、各インスタンスの内訳をオフにします。

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

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

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


2014年5月10日土曜日

パラメーターをエクセルに書き出すには

エクセルへパラメーター値をエクスポート

パラメーターをエクセルに出力するには、集計表を作成しこれを「書出し」→「レポート」→「集計」を使って、タブやカンマ、スペースで区切ったテキストファイルを作成します。そしてこれをエクセルで読み込めばいいのですが、これではすこし面倒ですし、一方通行、つまり出力しかできません。もっとダイレクトにエクセルと連携できないでしょうか?

RUTS2014を使ってみよう!

私の所属するRevit User Group JapanではRevitのアドオンソフトであるRUTS2014(無償)を公開しています。このアドオンソフトでは要素のパラメーターをダイレクトにエクセルへ書き出したり、編集後の値を読み込んだりする機能が提供されています。
ダウンロードは以下のアドレスにアクセスし、会員登録(無料)を行ってください。
http://www.rugjapan.com/
そして「専門部会フォーラム」の「開発部会」へ移動します。
開発部会をクリック!
「RUTS2014○○」となっている最新のタイトルをクリックします。
RUTS2014のタイトルをクリック!
添付されているZIPファイルをダウンロードして解凍し、インストールしてください。ただし64bit版のみですのでご注意ください。
64bit版のみです

Excelへ書き出すには?

インストールすると、「RUTS」タブが現れ、たくさんのツールがあることがわかります。このなかで、エクセルへの書き出しができるツールは「Excel」パネルにあります。
Excelパネルのプルダウンメニュー
このなかの「エクスポート拡張版」をクリックしてみましょう。ダイアログボックスで「部屋」「Instance」を選択すると、右側に部屋インスタンスのパラメーターのリストが表示されるので、出力したいパラメーターにチェックを入れOKを押します。
カテゴリ、インスタンス(タイプ)、パラメーターを選択
次にエクセルでの並び順を指定します。
順番を指定
この時、「設定保存」を押すと、この設定が保存されて再利用できます。再利用の際は一つ前のダイアログボックスで「設定読込」ボタンをおして保存されたファイルを開きます。
あとはOKを押せばエクセルにプロパティ情報を出力することができます。
エクセルにパラメーターの値が出力された

エクセルで編集た値を戻す

出力されたエクセルでパラメーターの値を変更し、Revitのパラメーターに戻すことができます。たとえば、床や壁、天井の仕上げを変更してみます。
仕上げの値を編集したExcel
そして、RevitでRUTSタブ-Excelパネル-インポートを選択すると、取り込みを行います。取り込みが完了したら、エクセルのセルは灰色になっています。
取り込みが成功したセルは灰色になる
Revitのパラメーターを確認してみると・・・
パラメーターの値が更新されている

一旦エクセルにパラメーターの値を出力すれば便利なエクセルの関数をいろいろとつかえ、その結果をRevitのパラメーターに戻すことができますし、その値をタグに表示するようなこともできます。仕上表もエクセルで編集すればより簡便な入力ができますね。



2014年4月19日土曜日

コンピューターは小数の計算が苦手

桁処理の意外な結果

前回の面積表で、「小数点以下第6位」を切り捨てにしてみたところ、次のような結果になりました。
計算間違い?
7.1256000000は7.1256になるべきですが、答えは7.1255になっています。その次の値もおかしいですね。なぜこのようなことになるのでしょうか?

表示と本当の数字は違う

この面積、実は内部の値として

7.1255999999994㎡

の場合があります。これが丸め処理されて、表示値は「7.1256」となっていたというわけです。確かにこの値を小数点以下第6位で切捨てすれば、7.1255になるのは当然です。表示されている値はすでに「丸め」処理が行われた数字なのです。

しかし、なぜこのような端数が生じるのでしょうか?

コンピューターでは数字を2進数で保持します。ところがほとんどの小数は2進数で正確に表すことができません。これは0または1(=2進数)を基礎とした計算を基本とするコンピューターの宿命なのです。

エクセルでも誤差はある

エクセルを開いて、セルに

=0.3-0.2-0.1

と打ち込みます。当然「0」となります。ところが

=0.3-0.2-0.1-0

エクセルでも誤差が発生する

と打ち込むと、「-2.77556E-17」と表示されます。これが「誤差」です。皆さんが全幅の信頼を置いているエクセルでさえ、誤差は発生するのです。

コンピューターの倍精度浮動小数点と呼ばれる値には長年誤差が付きまとっています。金融界ではこのような誤差は致命的なので、この誤差を回避する様々な手法が開発されています。

誤差を回避するには

こうした誤差を回避するために、一般に丸め処理(=誤差修正)が行われていますが、これは表示上だけであり、実際に保持されている数字は変わらないので、このような問題が生じます。これを回避するにはどうすればいいでしょうか?方法は二つあります。

  • 丸め処理を複数回行う
  • 微小値を加える

前者の方法を用いて、前回の手法をすこし改造してみます。最初の面積を実数化した後に、面積値を一旦小数点以下第8位あたりで四捨五入し、表示値=内部保持値の状態を作り出したうえで、任意の桁で処理を行えばいいでしょう。

前回の面積表と同様、面積値を実数化した後に、小数点以下第8位で四捨五入するため10000000倍します。


計算式:(面積 / 1 m²) * 10000000
この時点で一部誤差が発生していることが確認できます。次にこれを「round(x)」関数を用いて四捨五入します。

計算式:round(実数×10000000)

結果を1000で除して、切捨て処理をします。

四捨五入÷1000の計算式:四捨五入/1000
切捨の計算式:rounddown(四捨五入÷1000)
最後に10000で割って、面積化の手順を踏めば誤差を修正した面積を取得できます。

切捨処理÷10000の計算式:切捨処理/10000
結果の計算式:切捨処理÷10000 * 1 m²

まとめると次のような式となります。
(rounddown(round((面積 / 1 m²) * 10000000) / 1000) / 10000) * 1 m²

誤差を修正

コンピューターの演算は有限桁数で行っているため、必ず誤差が発生します。

エクセル 小数 誤差

で検索してみると多数の事例や回避方法を見つけることができますのでご確認ください。

一般に皆さんがコンピューター上で見ている少数は、ほとんどすべての場合ある程度の桁で「丸め処理」が行われた表示上の数字です。コンピューターが内部に保持している値はもっと複雑な値であることをお分かりいただけたでしょうか?