WORKS&TOPICS
WORKS&TOPICS
2025.11.24
BIM DAILY
Archicad数式エディタでALVS!②
前回に続きましてやっていこうと思います、ALVS数式エディタ試作回②です!
前回、建具の幅、高さ、開口面積までプロパティで作成しましたが、ここからまだまだありますね…。「第何回まで引っ張る気だ?」という声が聞こえてきそうなので今回は画像少な目でいきます。
今回進める作業
- 手入力のプロパティを設定
- オプションセットの準備
- 簡単な数式部分から設定
おそらく一番面倒な部分が「採光補正係数」です。用途地域ごとの計算式や緩和条件など設定で長くなりそうなので、こちらは次のALVS③に回します!そして次をALVS最終回としたいと思います。
手入力のプロパティを設定
・室名などの一覧表に必要な情報。「文字列」
設置階はプロパティ【設置フロア】からでいいかと思います。
・水平距離、開口部中心迄の高さ
単位を「メートル」にしたいので、データタイプは「文字列」(小数点の統一が面倒な為)
・室面積
面積は小数点以下第2位まで、一覧表にしたときに都合がいい為データタイプは「数値」
オプションセットの準備
今回選択にするもの
・窓の形式【引き違い、FIX、外倒し、竪辷り出し等々…】
・必要面積係数(採光に必要な面積の用途による割合)【1/7、1/5、1/10、1/20】
・d/h×(用途地域による採光補正係数の計算式)【D/H×6-1.4,8-1、10-1】
・ALVS対象(一覧表に載せるかどうかの選択)
窓の形式は天窓以外(今回天窓までは含めていない為)の種類を追加していきます。
d/h×の部分は6-1.4,8-1、10-1の3種類。もしくは住居系地域、工業系地域、商業系地域としてもいいかもしれません。今回はわかりやすく前者です!
まずは簡単な数式部分から
ではここから数式の部分に入りたいと思いますが、改めてデータタイプについてです
「文字列」と「数値」に分けている理由を少し掘り下げます。
例えば今回だと
・面積-小数点第2位
・水平距離、中心高さ、開口部(W,H)-小数点第3位
・有効面積、K(計算値)-小数点第6位
必要な桁が違う場合、データタイプ「数値」だとすべての桁が統一されてしまいます。さらに最大で小数点以下4位までが限界です。有効面積は第6位まで表示したいのでこの場合数値では表示が不可能です。
ROUNDUPで切り上げにして小数点第2位まで表示したいのに、ここの設定が優先されてしまうため「1.25」と表示したいんところが「1.2500」と表示されてしまうので不便です。
<逆に全て「文字列」ではだめなのか?>
最初はすべて文字列で作成する予定でしたが、一覧表で合計を出したい場合に文字列は計算できません。一覧表で計算しないのであればすべて「文字列」で問題ありません!
ではここから数式の部分に入りたいと思います。
まずデータタイプのおさらいも兼ねまして、使用する関数です。
・STR:数値→文字列
・STRTONUM:文字列→数値
・STRCALCUNIT:単位のある数値→文字列
・ROUNDUP:切り上げ(数値のみ)
・ROUNDDOWN:切り捨て(数値のみ)
対応しているデータタイプに注意が必要になります。文字列にそのままROUNDUPなど使用してエラー、単位のある数値に注意が必要です。基本的に「文字列」を使用するようにすると、非効率ですが毎回同じ変換処理をかけるのでデータタイプで混乱することは少なくなるかと思います!
まずは簡単な数式部分から
前回も簡単な部分で建具の開口面積をサラッと書きましたが、見返してみたら画像が小さくてわかりにくかったですね、すみません。以下、青文字はプロパティ名になります。
赤:数値→文字列 緑:文字列→数値
有効開口面積
STR ( STRTONUM ( 開口部(W)) * STRTONUM ( 開口部(H) ), 6 )
開口部2つは現在「文字列」なのでそのままでは計算できません、STRTONUMで数値にします。数値に変換後計算をし、STRで「文字列」に変換という流れです。
後ろの方に「,6」がついていますが、こちらは小数点第何位まで表示させるかの設定になります。指定しない場合STRはデフォルトで小数点第2位までの表示です。データタイプは「文字列」です。
採光上有効な面積
ROUNDDOWN ( STRTONUM ( K ) * STRTONUM ( 有効開口面積(L) ), 2 )
係数(K)と有効開口面積を開口面積と同じように計算。STR→ROUNDDOWNになっていますがそれ以外は同じ形ですね。不利側で取りたいので小数点第2位で切り捨てにしています。
ROUNDDOWNのデータタイプは「数値」ですのでプロパティのデータタイプを間違えないように注意が必要です。
換気必要面積
ROUNDUP ( 室面積(A)/ 20, 2 )
室面積は「数値」のためシンプルです。こちらも計算後に小数点第2位までの表示設定ですが、不利側が切り上げとなりますのでROUNDUPです。データタイプは「数値」です。
変換したときのちょっとした疑問を検証
データタイプを「数値」にすると最大で小数点4位までと書きましたが、文字列にしたときは小数点6位まで表示できる。小数点はどこで丸められているのでしょう?表示されている値のみで考えると。
STR 【第6】( STRTONUM ( 開口部(W)【第4】) * STRTONUM ( 開口部(H) )【第4】, 6 )
仮に数値を小数点無しにした場合、計算の時点で丸められていると文字列にした時、小数点以下はそもそも計算上出ませんのでこれは考えにくい。そうすると、表示されるタイミングで削っているが考えやすいです。
文字列の場合もどうなっているのか?ということで、上記画像が検証結果です。
上から順に
・計算した値を小数点第6位まで(文字列)
・文字列から小数点第12位まで表記したもの
・少数点10位まで計算した場合の計算値
・K(計算値)をデータタイプ「数値」で小数点2位まで
・上のデータタイプ「数値」から「文字列」小数点10位表示にしたもの。
「文字列」にした場合は一度切り捨てたデータは消滅しています。
一方「数値」は、小数点第2位までの表記でも実際はデータとして数値が存在していることがわかりますね。
「数値」表示段階で削り、データ上は存在。
「文字列」変換段階で削り、データ上は削ったぶんは消滅。
となるようです。
まとめ
ここまでで、ALVS対象、室名、室面積、水平垂直距離、d/h×、窓形式、開口部W、D、有効開口面積、採光有効面積、換気必要面積までが準備完了しました。
今回は切りよくここまで!
次回、最終回となりますALVS③は条件分岐しながら計算していく面倒な部分が中心となります。採光補正の用途別計算、用途による緩和も自動計算したい!居室の種類による必要面積、窓の形式による換気有効開口面積をやっていきたいと思いますのでよろしくお願いいたします!
