ArchiCAD GDLを学習 〜机の2D表現①〜

2024年8月26日月曜日

GDL project2

t f B! P L
前回は3Dスクリプトを中心に進めていましたが、3Dスクリプトだけでは平面に何も表示されない状態になります。GDLでは、3Dスクリプトを使用して3Dパースや断面図を記述し、2Dスクリプトを使って平面図を表現します。したがって、今回は前回の続きとして2D表現の作成に取り組みたいと思います。

PROJECT2コマンド

2Dスクリプト
PROJECT2 3,270,3
最も手っ取り早い方法は、上記のproject2コマンドを使用することです。このコマンドは、3Dスクリプトに記述した内容を指定したメソッドで2Dに投影してくれます。投影方法や角度、メソッドを指定することで、以下の画像のように3Dオブジェクトを上から見た状態で2Dに投影できます。この段階でも、すでに十分見栄えが良いです。さらに、ここにホットスポットの設定などを追加することで、より使いやすいオブジェクトになりますので、引き続きコードを追加していきます。
2D投影
project2コマンドを用いた投影
!机の4つ角
hotspot2 0, 0
hotspot2 width, 0
hotspot2 width, depth
hotspot2 0, depth

!椅子の中心
unid = 2000
hotspot2 0	   ,chair_pos[2], unid, chair_pos[1], 1+128	:unid=unid+1
hotspot2 chair_pos[1] ,chair_pos[2], unid, chair_pos[1], 2	:unid=unid+1
hotspot2 -1	   ,chair_pos[2], unid, chair_pos[1], 3	:unid=unid+1

hotspot2 chair_pos[1],0		  , unid, chair_pos[2], 1+128	:unid=unid+1
hotspot2 chair_pos[1],chair_pos[2], unid, chair_pos[2], 2	:unid=unid+1
hotspot2 chair_pos[1],-1	 , unid, chair_pos[2], 3	:unid=unid+1
2Dホットスポットの書き方は、3Dの場合とほとんど同じで、上記のように記述します。これにより、机の4つの角には黒いホットスポットが、椅子の中心にはピンクのホットスポットが追加されます。

PROJECT2{3}コマンド

次に、2Dで常に椅子を非表示にしたい場合の例を作成してみましょう。この場合、通常のproject2コマンドでは対応できないため、project2{3}コマンドを使用します。このコマンドではパラメータを追加することができます。つまり、椅子を消すには、"dis_chair" というパラメータの値を 0(false)に設定するという考え方です。このパラメータは、3Dスクリプト内の if 文で椅子の表示・非表示を制御しているため、それをproject2{3}コマンドでコントロールしているというイメージを持てれば問題ありません。コードは以下のように記述します。

2Dスクリプト
PROJECT2{3} 3,270,3,1+2+4+8,parameters dis_chair = 0

!机の4つ角
hotspot2 0, 0
hotspot2 width, 0
hotspot2 width, depth
hotspot2 0, depth

3Dスクリプト
unid = 1
material mat

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

end 
次回も、2Dスクリプトでの表現方法について考えていきたいと思います。

なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶArchiCAD GDLプログラミングという本で基礎をしっかり学びましょう!

また、ココナラでのサポートサービスも始めましたので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へ


【お知らせ】
Xのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore

世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。

検索

GDLオブジェクト

UI (4) ユニーク (1) ラベル (2) 仮囲い (6) 多角形 (3) 小ネタ (4) (7) 椅子 (4) 法規 (1) 無償DL (4) 足場 (15) 足場計画 (4)

ブログ アーカイブ

自己紹介

自分の写真
GDL作成などBIM活用のお仕事の相談お待ちしております。 #中堅ゼネコン出身 #施工管理職 #生産設計部 #BIM開発部門
ArchiCADのGDLをコスパよく作成します ArchiCADユーザーでGDL作成を外部委託されている方へ

QooQ