2015年7月4日土曜日

ダイナモ白熱教室(5)~点

久しぶりにダイナモを取り上げます。先日ダイナモのサイトをみたところ、バージョンが0.8.1に上がっていましたので、これを使って話を進めます。
バージョン0.8.1が使えます

今回は大量の点をメッシュ状に作成し、これらをつないで面を作成するというプロセスを実験してみます。

原点を中心に50m×20mの点をつくってみる


原点(0,0,0)を中心としてX方向50m、Y方向20mの点を任意のピッチで作成してみます。

まず、Numberノードを2つ追加し、それぞれ名前をWx、Wyとし、値を50、20とします。

X座標は 最小値-25(-(50/2))から最大値25(50/2)です。さらにNumberノードを追加し、「min..max..#res」 (minからmaxの間をres分割した数字のリストを作成する)とすると、ノードの左側に変数として、min、max、resが並びます。
Numberノード
さらに「*」を2つ、「Number」を2つ、Integer Sliderを一つ追加します。二つのNumberノードを「0.5」「-0.5」とし、IntegerSliderの値を50程度にし、下の図のようにそれぞれを接続します。

Watchノードを終端のNumberノードに接続し、内容をチェックします。これがX座標のリストになります。
Watchノードでチェックする

Yについても同じことを繰り返します。0.5、-0.5、IntegerSliderはXY共通で使えます。*2つと終端のNumberノードを選択し、コピーペーストして、Wyをつなぎなおします。


座標の作成

このXとYの座標リストを使って点を作成します。「Point.ByCoodinate」を追加し、XYをつなぎます。

バックグラウンドに座標が現れます。さらにPoint.Coordinatesノードを右クリックし、「レーシング」-「外積」を選びます。

IntegerSliderを動かして、変化を観察してください。

コードブロックを使ってみる

コードブロックを使えば、もう少しグラフをすっきりさせることができます。コードブロックはプログラムを記述するノードなのですが、リストを作成するぐらいであればだれでも気楽に使えます。

画面をダブルクリックすることで、コードブロックを作成します。そして、以下のように記述します。文末には必ず「;」が必要です。

-(a/2)..(a/2)..#res;


そして、既存の0.5、-0.5、*、式をかいたNumberノードを削除し、下の図のようにつなぐことで同じ結果を得ることができます。
コードブロックですっきり
次回はZ座標を加えてみます。

2015年6月28日日曜日

集計表~用途別面積表

階別・用途別の面積表

前回は、住戸タイプの各階別の分布を集計表を使って調べましたが、今回は同様に面積を部屋用途ごと、階ごとに集計してみましょう。
階別・用途別に面積表を作成する

面積用途を作成する

まず、前回の住戸タイプ同様、面積用途を表す集計キーを作成します。

(1) [表示]-[集計]-[集計表/数量]
(2) カテゴリで「部屋」、集計キーを選択し、下の図のように設定します。
集計キー 「面積用途」 を作成
(3) [パラメーターを追加]を選択し、「面積用途番号」を作成します。前回同様、このパラメーターの型は整数にすることが重要です。
パラメータータイプは「整数」

(4)フィールドタブと並べ替えタブは以下のようになります。
面積番号を上位にする

面積番号で並べ替える

面積用途

[データ行を挿入]をクリックして、使用する面積用途を追加します。
面積用途を追加

カラースキーム

次に平面図で面積用途を各部屋に設定しますが、このとカラースキームを使うと便利です。平面図のビューを開き、ビューのプロパティ[カラースキーム]をクリックします。
カラースキームをクリック
カテゴリから「部屋」を選択し、リストからなにかを選んで複製し、名前をつけます。
既存を複製して名前をつける

タイトルを設定し、色から「面積用途」を選択します。面積用途がリストされるので、必要に応じて色を変えてOK。
面積用途の色を編集する

平面図が面積用途ごとに色分けされます。部屋を選択し、プロパティ「面積用途」を変更します。
平面図を色で確認しながら面積用途を設定する
このときビュープロパティで「カラースキームの場所」を「前景」にしておけば、色が階段などで白抜きになることがありません。

面積表の作成

各部屋に面積用途が設定できたら、集計表を作成します。前回の応用ですので、よく注意して設定してみてください。

まず、[表示]-[集計]-[集計表/数量]で集計表を作成します。カテゴリは部屋を選び、今度はそのままOKで次に進みます。

使用可能なフィールドからまず、「レベル」「面積」「面積用途番号」を選択します。

次に、「計算値」を押してください。前回を思い出してください。ここではif文を使って条件を設定するのですが、ちょっと注意が必要です。面積を求めるのですから以下のように設定します。
タイプは「面積」、計算式は「if(面積用途番号=1,面積,0)」
この計算式は、「もし、部屋の"面積用途番号"が1ならば、その部屋の"面積"を返し、そうでなければ0を返しなさい」という意味です。

同様にほかの計算式も以下のように設定します。



最後のフィールドとして、合計値を設定します。

並べ替えタブではレベルごとに並べ替えられるように、次のように設定します。
並べ替えタブの設定
書式では二つ重要なポイントがあります。
面積と面積用途番号を「非表示」にする
専用・共用・便所・設備・合計の位置合わせを右に、合計を計算にチェックを入れる
以上の設定で以下のような集計表が完成します。
階別・用途別面積表

2015年6月21日日曜日

集計表~階別のタイプ分布

住戸タイプの分布を調べる

集合住宅の各フロアに○○タイプの部屋がいくつあるのかを下の図のように集計表を使って調べてみましょう。
階別住戸タイプ分布

キーとなるテクニックは次の二つです。

  • 集計キー
  • 計算式

集計キーを作成

以下の手順で住戸タイプの一覧を作成します。

(1) [表示]-[集計]-[集計表]
(2) カテゴリは「部屋」、集計表の名前は「住戸タイプ一覧」、集計キーをチェックして、キー名を「住戸タイプ」とします。(名前はなんてもよい)
集計キーを作成
(3) [フィールド]タブで[パラメーターを追加]をクリック
(4) [名前]に「住戸タイプ番号」、パラメータータイプを「整数」にします。

パラメータータイプを「整数」にする。
(5) [フィールド]タブで、「住戸タイプ番号」、「キー名」の順に並べ替え、[並べ替え/グループ化]タブで先頭の並べ替え方法を「住戸タイプ番号」にし[OK]。
並べ替え方法を変更

集計キーを作成する

各住戸タイプの名称をキーに割り当てます。

(1) [集計表/数量を修正]-[行]-[挿入]-[データ行]で住戸タイプの数だけ行を追加します。
必要なだけデータ行を追加
(2)住戸タイプ番号に数字を、キー名にタイプ名を記入します。
住戸タイプに数字、キー名に名前

集計キーを部屋に割り当てる

作成した集計キー「住戸タイプ」は部屋のパラメータとなるので、集計表や平面図などから、住戸を表す部屋に割り当てます。
部屋に集計キーを割り当てる
集計表を使っても割り当てることができます。
集計表で割り当てるのも効率的

階別の住戸タイプ分布の集計表を作成

キーの割り当てが終わったら、集計表を作成します。

(1) [表示]-[作成]-[集計]-[集計表/数量]
(2) カテゴリは「部屋」、任意の名前を設定。
(3) [フィールド]タブで、「レベル」と「住戸タイプ番号」を追加し、[計算値]をクリックします。
レベルと住戸タイプ番号を追加し「計算値」をクリック

(4) 計算値の名前を「Aタイプ」(住戸タイプの名前)とし、タイプを「整数」(住戸タイプの戸数なので整数が良い)、計算式を次のように設定しOK。

                                               if(住戸タイプ番号=1,1,0)
計算式を設定
これは、「もし住戸タイプ番号が1ならば、戸数として1を、そうでなければ0を返す」という意味です。

(5)同様にBタイプ、Cタイプの計算値を設定します。
Bタイプの住戸タイプ番号は2
Cタイプの住戸タイプ番号は3
(6)戸数合計を追加します。同様に[計算値]をクリックし、下の図のような設定にします。
戸数合計の計算値
(7)並べ替え/グループ化のタブで下の図のように並べ替えを設定します。
並べ替えの設定
(8)書式タブで、Aタイプ、Bタイプ、Cタイプ、戸数合計のフィールドの[合計を計算]をONにします。また、住戸タイプ番号は「非表示」にします。
「合計を計算」を忘れずに!
以上で下の図のような集計表が完成します。
完成した住戸分布集計表

集計キーを作成したのは、計算式のif文が、現在のところ数値とYes/Noに関するの判定しかできないからです。

属性情報はBIMのかなめです。集計表をうまく利用して仕事の効率を高めましょう。




2015年6月14日日曜日

ボードの高さを変えるには?

壁の拡張レイヤ

LGSの壁を断面・展開図に表示するとき、「スタッドの上端はスラブまでだけど、GBは天井まで」ということはよくあります。例えば、次のようなLGSの壁タイプを作成し
壁のアセンブリ

普通に断面を切ると、壁全体がスラブ-スラブで作成されます。

ボードを高さを変更してみる
この状態から、GBのレイヤを天井まで下げてみましょう。

壁タイププロパティで断面を調整

(1) 壁タイププロパティの構造の編集をクリックし、アセンブリを編集ダイアログボックスを開く。
(2) ダイアログ左下の[プレビュー]をクリック。
(3) ダイアログ左下のビューを[断面図:タイプ属性を修正]を選択

以上の手順で、下の図のようになります。サンプルの高さを変更すると見やすくなります。

次に、マウスのホイールボタンを使って、プレビューの上部を拡大します。
ダイアログ右下の[修正]クリックし、GBの上端の水平線をクリックすると、「かぎ」のマークが現れます。


この鍵のロックを外します。
ロックを外す

同様にすべてのレイヤのロックを外し、OKで編集を終了します。

断面を修正

断面図で壁を選択すると三角形の形状ハンドルが現れるので、これをドラッグしてボードの高さを変更します。
ボードの高さを変更
この場合はGBレイヤを拡張しましたが、LGSのレイヤのロックを外しても同じです。

制限事項

この機能は拡張レイヤ(extended layer)と呼ばれる機能ですが、制限事項もあります。この「ロック外し」は隣り合うレイヤでなければならないので、下の図のように左右のGBの高さが同じの場合は有効なのですが、

高さが異なる場合は対応できません。

厳密に高さを合わせたいのであれば、パーツを使うことになります。




2015年5月1日金曜日

ファミリの一括処理(2)

複数のファミリのパラメーターの値を設定するには?

まず、実際に一つのファミリファイルを開いて、ファミリパラメーターの値を設定します。たとえば、「製造元」というタイプパラメーターに「Revit Peeler」と入れて、保存して終了します。次の手順でファミリファイルを開き、パラメーターの値を変更して保存して閉じる、を実行してみてください。

(1)ファミリを開く
(2)[作成]タブ-[プロパティ]-[ファミリタイプ]
(3)識別情報の「製造元」に「Revit Peeler」を設定しOK

(4)[アプリケーションマーク(左上のR)]-[閉じる]で保存してファイルを閉じる。

ここで前回ちょっとご紹介したジャーナルファイルを開いてみます。ジャーナルファイルは一般に

C:\Users\(ユーザー名)\AppData\Local\Autodesk\Revit\Autodesk Revit 2015\Journals

にあるテキストファイルです。この大量のテキストファイルの中から、日付が最新のファイルを開いてみてください。このファイルは先ほどのRevit上の操作を記録したものです。ちょっとややこしいのですが、検索機機能を利用して「Revit Peeler」の文字を探してみてください。

検索で見つかったあたりをよく見てください。「Jrn.」で始まる分がRevitでの操作を表しています。まず(2)でファミリタイプのダイアログボックスを開いたのですが、これは・・・

Jrn.Command "Internal" , "このファミリの定義済みタイプを修正 , ID_FAMILY_TYPE"

です。Jrn.Commandはコマンドを起動することを意味しています。
次に(3)で「製造元」のプロパティを「Revit Peeler」にしました。これはテキスト分の最後の「Revit Peeler」があるヶ所です。

Jrn.Grid "Control; Modal , ファミリ タイプ , Dialog_Family_FamilyType; Control_Family_TypeGrid"  , "EditIfValid" , "製造元" , "ValueCol" , "Revit Peeler"

1行目の最後の「_(アンダーバー)」は次の行に文章が続いていることを示しています。

そしてOKボタンを押すのは・・・・

 Jrn.PushButton "Modal , ファミリ タイプ , Dialog_Family_FamilyType" _
         , "OK, IDOK"

そして大事なことは、この変更をファイルに反映させることで、これは・・・

Jrn.Data "Transaction Successful"  _
        , "ファミリ タイプ"

です。この4つの文を使って、前回説明したContentBatchUtilityのUpgrade_RFA.txtを改造してみましょう。

Upgrade_RFA.txtの編集


Upgrade_RFA.txtをテキストエディタで開き、Sub upgrade(namepath, file)の行を探してください。これはいわゆる「サブルーチン」であり、すべてのファイルに繰り返されるジャーナル文を示しています。この中の

Jrn.Data "File Name" _
          , "IDOK", namepath


Jrn.Command "Internal" , " , ID_REVIT_SAVE_AS_FAMILY"
の間に上記の4つの文をコピー&ペーストしてください。完成形は

Sub upgrade(namepath, file)

Jrn.Command "Menu", "Open an existing project , 57601 , ID_FILE_OPEN"
  Jrn.Data "File Name" _
          , "IDOK", namepath


Jrn.Command "Internal" , "このファミリの定義済みタイプを修正 , ID_FAMILY_TYPE"

Jrn.Grid "Control; Modal , ファミリ タイプ , Dialog_Family_FamilyType; Control_Family_TypeGrid" , "EditIfValid" , "製造元" , "ValueCol" , "Revit Peeler"

Jrn.PushButton "Modal , ファミリ タイプ , Dialog_Family_FamilyType" , "OK, IDOK"
Jrn.Data "Transaction Successful"  , "ファミリ タイプ"


 Jrn.Command "Internal" , " , ID_REVIT_SAVE_AS_FAMILY"
  Jrn.Data "File Name"  , "IDOK", namepath

  Jrn.Command "Menu" , "Close the active project , ID_REVIT_FILE_CLOSE"


End Sub

となります。これを保存して、前回の手順に従ってこのファイルリストを作成し、Upgrade_RFA.txtをデスクトップのRevitアイコンにドラッグドロップしてみてください。複数のファミリファイルのパラメーターの値を連続して変更することができます。