前回は
project2
コマンドと cutplane
コマンドを使い、切断面を2Dに投影する方法を工夫しました。その際、切断面の高さを "cutElevation" というパラメータで任意に設定できるようにしました。今回は、ArchiCAD の平面図の切断面設定に連動させる方法に取り組みます。ArchiCAD の「ドキュメント」タブから、以下の画像のような設定が可能です。平面図の切断面設定画面 |
GLOB_CUTPLANES_INFO
平面図の切断面設定を呼び出すには、GLOB_CUTPLANES_INFO
というグローバル変数を使用することで取得できます。GLOB_CUTPLANES_INFO
は長さ4の配列で、以下の順序で値が取得されます:
- 切断面の高さ
- 切断面の最高レベル
- 切断面の最低レベル
- ライブラリ部品のローカル座標系の絶対限度
GLOB_HSTORY_ELEV
GLOB_CUTPLANES_INFO
に関連して、GLOB_HSTORY_ELEV
というグローバル変数も覚えておくと便利です。これは、配置されているフロアの高度を取得するために使用できます。GLOB_ELEVATION
GLOB_ELEVATION
では、オブジェクトの配置フロアからの高さを取得することができます。
これらを図示すると、以下のようになります。
3Dスクリプト
unid = 1 material mat add 0, 0, cutZ !切断面 cutplane del 1 add 0, 0, underZ !下限表示範囲 cutplane 1,1,0,1 del 1 gosub "desk" if dis_chair then hotspot 0, chair_pos[2], chair_height, unid, chair_pos[1], 1+128 :unid = unid+1 hotspot chair_pos[1], chair_pos[2], chair_height, unid, chair_pos[1], 2 :unid = unid+1 hotspot -1, chair_pos[2], chair_height, unid, chair_pos[1], 3 :unid = unid+1 hotspot chair_pos[1], 0 , chair_height, unid, chair_pos[2], 1+128 :unid = unid+1 hotspot chair_pos[1], chair_pos[2], chair_height, unid, chair_pos[2], 2 :unid = unid+1 hotspot chair_pos[1], -1 , chair_height, unid, chair_pos[2], 3 :unid = unid+1 add chair_pos[1], chair_pos[2], 0 gosub "chair" endif cutend cutend end
マスタースクリプト
if GLOB_VIEW_TYPE = 2 then cutZ = GLOB_CUTPLANES_INFO[1] underZ = GLOB_CUTPLANES_INFO[3] else cutZ = height + 1 underZ = -1 endif
スクリプト
上記のようなコードを書くことで、平面図の切断面設定と連動した2D表現が可能になります。さらに、表示上限の設定や線タイプの設定などを加えていくことで、建築図面で求められる形により近づけることができ、情報をより工夫して伝達できるようになるでしょう。
なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶArchiCAD GDLプログラミングという本で基礎をしっかり学びましょう!
また、ココナラでのサポートサービスも始めましたので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へ【お知らせ】
Xのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore
世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。