窓GDLに採光機能を拡張 |
採光規程(建築基準法28条)
(居室の採光及び換気)
第二十八条住宅、学校、病院、診療所、寄宿舎、下宿その他これらに類する建築物で政令で定めるものの居室(居住のための居室、学校の教室、病院の病室その他これらに類するものとして政令で定めるものに限る。)には、採光のための窓その他の開口部を設け、その採光に有効な部分の面積は、その居室の床面積に対して、五分の一から十分の一までの間において居室の種類に応じ政令で定める割合以上としなければならない。ただし、地階若しくは地下工作物内に設ける居室その他これらに類する居室又は温湿度調整を必要とする作業を行う作業室その他用途上やむを得ない居室については、この限りでない。
2居室には換気のための窓その他の開口部を設け、その換気に有効な部分の面積は、その居室の床面積に対して、二十分の一以上としなければならない。ただし、政令で定める技術的基準に従つて換気設備を設けた場合においては、この限りでない。
3別表第一(い)欄(一)項に掲げる用途に供する特殊建築物の居室又は建築物の調理室、浴室その他の室でかまど、こんろその他火を使用する設備若しくは器具を設けたもの(政令で定めるものを除く。)には、政令で定める技術的基準に従つて、換気設備を設けなければならない。
4ふすま、障子その他随時開放することができるもので仕切られた二室は、前三項の規定の適用については、一室とみなす。
採光補正係数用のD/H
建築基準法28条の採光規定の勉強に伴い、ArchiCADの窓GDLに機能を追加してみたので記録しておきます。上記の規定により、採光に有効な部分の面積を求める必要があり、その算出には隣地境界線等までの水平距離(D)と開口部の直上にある建築物の部分までの距離(H)を求める必要があります。
今回は、GDLを少し拡張して、直感的にDとHを設定できるようにしてみました。
まずは下の動画で確認してみてください。
"採光係数D/H": DEFINE STYLE "saiko" "New York", 100, 2, 0 SET STYLE "saiko" DEFINE MATERIAL "vvv" 0, 0.7, 0.3, 0.2,! 表面 RGB [0.0..1.0] 1.0, ! 環境係数 [0.0..1.0] 0.5, ! 拡散係数 [0.0..1.0] 0.0, ! 鏡係数 [0.0..1.0] 0.0, ! 透過係数 [0.0..1.0] 2.0, ! 光沢 [0.0..100.0] 1, ! 透過減衰量 [0.0..4.0] 0.5284, 0.5989, 0.6167,! 鏡面 RGB [0.0..1.0] 0, 0, 0, ! 放射 RGB [0.0..1.0] 0.0 ! 放射減衰量 [0.0..65.5] DEFINE MATERIAL "face" 0, 0.2, 0.5, 0.9,! 表面 RGB [0.0..1.0] 1.0, ! 環境係数 [0.0..1.0] 0.5, ! 拡散係数 [0.0..1.0] 0.0, ! 鏡係数 [0.0..1.0] opacity, ! 透過係数 [0.0..1.0] 2.0, ! 光沢 [0.0..100.0] 1, ! 透過減衰量 [0.0..4.0] 0.5284, 0.5989, 0.6167,! 鏡面 RGB [0.0..1.0] 0, 0, 0, ! 放射 RGB [0.0..1.0] 0.0 ! 放射減衰量 [0.0..65.5] cid=10000 material "vvv" hotspot 0, b/2, 0 hotspot 0, b/2, 0 ,cid, kyokai, 1+128 :cid=cid+1 hotspot 0, b/2, kyokai ,cid, kyokai, 2 :cid=cid+1 hotspot 0, b/2, -1 ,cid, kyokai, 3 :cid=cid+1 lin_ 0, b/2, 0, 0, b/2, kyokai hotline 0, b/2, 0, 0, b/2, kyokai, cid :cid=cid+1 add 0, b/2, kyokai-0.1 CONE 0.1, 0.03, 0, 90, 90 del 1 addy b/2 hotspot 0, target[1][2], 0 ,cid,target[1][1], 1+128 :cid=cid+1 hotspot 0, target[1][2], target[1][1] ,cid,target[1][1], 2 :cid=cid+1 hotspot 0, target[1][2], -1 ,cid,target[1][1], 3 :cid=cid+1 hotspot 0, 0 , target[1][1] ,cid,target[1][2], 1+128 :cid=cid+1 hotspot 0, target[1][2], target[1][1] ,cid,target[1][2], 2 :cid=cid+1 hotspot 0, -1 , target[1][1] ,cid,target[1][2], 3 :cid=cid+1 lin_ 0, 0,target[1][1], 0, target[1][2], target[1][1] hotline 0, 0,target[1][1], 0, target[1][2], target[1][1], cid:cid=cid+1 lin_ 0, 0,kyokai, 0, target[1][2], target[1][1] hotline 0, 0,kyokai, 0, target[1][2], target[1][1], cid:cid=cid+1 hotspot 0, 0,target[1][1] add 0, target[1][2]-0.1, target[1][1] rotx -90 CONE 0.1, 0.03, 0, 90, 90 del 2 add 0, -0.05, target[1][1]+(kyokai-target[1][1])/2 roty 90 if rev then mulx -1 else mulx 1 endif text 0.001, 0, "D="+str((kyokai-target[1][1])*1000, 5, 1)+"mm" del 3 add 0, target[1][2]/2, target[1][1] roty 90 if rev then mulx -1 else mulx 1 endif text 0.001, 0, "H="+str((target[1][2])*1000, 5, 1)+"mm" del 3 add 0, target[1][2], target[1][1]+(kyokai-target[1][1])/2 roty 90 if rev then mulx -1 else mulx 1 endif text 0.001, 0, "D/H="+str(dh, 5, 3) del 3 if refFace then material "face" !参照面 plane 4, 0, -10, kyokai, 0, 10, kyokai, 0, 10, 0, 0, -10, 0 del 1 hotspot 0, 0, 0, cid, opacityCntr, 1+128,opacity :cid=cid+1 hotspot 0, 0, opacityCntr, cid, opacityCntr, 2 ,opacity :cid=cid+1 hotspot 0, 0, -1, cid, opacityCntr, 3 ,opacity :cid=cid+1 endif return
マスタースクリプトにおいて、
request
コマンドを使ってゾーン情報を取得することで、オブジェクトが配置されているゾーンとの連携が可能です。たとえば、以下のように
"Zone_relations"
リクエストを使用してゾーン情報を検索し、その結果を利用して設定を自動化したり、ゾーンごとに異なる表示設定を行うことができます。マスタースクリプト
name="" n = REQUEST ("Zone_relations", "",category_name, code, name, number) if not(name="") then parameters zoneName=name endif
パラメータスクリプトでは、D/Hの計算と透明度を制御する仕組みを書いています。
パラメータスクリプト
parameters dh=(kyokai-target[1][1])/target[1][2] if GLOB_MODPAR_NAME = "kyokai" THEN parameters opacityCntr=opacity*kyokai ELSE parameters opacity=opacityCntr/kyokai ENDIF
採光計算用のページを追加し、各種パラメータをこのページに追加しています。
UIについての詳細はまた改めて記事にしていきたいと思います。
オブジェクト設定内のUIの作成 |
インターフェーススクリプト
ui_page 10000, 2, "採光計算" ui_listfield 1, 10, 5, 420, 220, 0, "", "" ui_listitem 1, 1, "saikoCulc" ui_listitem 2, 1, "kyokai" ui_listitem 3, 1, "target" ui_listitem 4, 1, "refFace" ui_listitem 5, 1, "opacity" ui_listitem 6, 1, "dh" ui_listitem 7, 1, "zoneName" ui_listitem 8, 1, "rev"
まとめ
少し長くなってしまいましたが、アイデア次第でこのような表現も可能となりました。BIM元年と呼ばれる年から10年以上も経過していますが、まだまだ新しいオブジェクトの形が誕生していく気がしています。BIM推進の皆さん、ぜひ協力して盛り上げていきましょう。
なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶArchiCAD GDLプログラミングという本で基礎をしっかり学びましょう!
【お知らせ】
Xのアカウントもぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。