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

2024年8月26日月曜日

GDL project2

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

PROJECT2コマンド

2Dスクリプト
  1. PROJECT2 3,270,3
最も手っ取り早い方法は、上記のproject2コマンドを使用することです。このコマンドは、3Dスクリプトに記述した内容を指定したメソッドで2Dに投影してくれます。投影方法や角度、メソッドを指定することで、以下の画像のように3Dオブジェクトを上から見た状態で2Dに投影できます。この段階でも、すでに十分見栄えが良いです。さらに、ここにホットスポットの設定などを追加することで、より使いやすいオブジェクトになりますので、引き続きコードを追加していきます。
2D投影
project2コマンドを用いた投影
  1. !机の4つ角
  2. hotspot2 0, 0
  3. hotspot2 width, 0
  4. hotspot2 width, depth
  5. hotspot2 0, depth
  6.  
  7. !椅子の中心
  8. unid = 2000
  9. hotspot2 0    ,chair_pos[2], unid, chair_pos[1], 1+128 :unid=unid+1
  10. hotspot2 chair_pos[1] ,chair_pos[2], unid, chair_pos[1], 2 :unid=unid+1
  11. hotspot2 -1    ,chair_pos[2], unid, chair_pos[1], 3 :unid=unid+1
  12.  
  13. hotspot2 chair_pos[1],0   , unid, chair_pos[2], 1+128 :unid=unid+1
  14. hotspot2 chair_pos[1],chair_pos[2], unid, chair_pos[2], 2 :unid=unid+1
  15. 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スクリプト
  1. PROJECT2{3} 3,270,3,1+2+4+8,parameters dis_chair = 0
  2.  
  3. !机の4つ角
  4. hotspot2 0, 0
  5. hotspot2 width, 0
  6. hotspot2 width, depth
  7. hotspot2 0, depth

3Dスクリプト
  1. unid = 1
  2. material mat
  3.  
  4. gosub "desk"
  5.  
  6. if dis_chair then ←ここ
  7. hotspot 0, chair_pos[2], chair_height, unid, chair_pos[1], 1+128 :unid = unid+1
  8. hotspot chair_pos[1], chair_pos[2], chair_height, unid, chair_pos[1], 2 :unid = unid+1
  9. hotspot -1, chair_pos[2], chair_height, unid, chair_pos[1], 3 :unid = unid+1
  10.  
  11. hotspot chair_pos[1], 0   , chair_height, unid, chair_pos[2], 1+128 :unid = unid+1
  12. hotspot chair_pos[1], chair_pos[2], chair_height, unid, chair_pos[2], 2 :unid = unid+1
  13. hotspot chair_pos[1], -1   , chair_height, unid, chair_pos[2], 3 :unid = unid+1
  14.  
  15. add chair_pos[1], chair_pos[2], 0
  16.  
  17. gosub "chair"
  18. endif
  19.  
  20. end
次回も、2Dスクリプトでの表現方法について考えていきたいと思います。

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

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


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

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

自己紹介

自分の写真
初めまして。 BIM活用のあれこれ運営人です。 普段はBIM界隈で働いております。皆さんに役立つ情報を提供できればと思っております。BIMマネやBIMオペ、開発、プログラミング、BIMコンサル、技術営業等様々な業務をおこなっております。 GDL作成などBIM活用のお仕事のご相談お待ちしております。 #ゼネコン出身 #施工管理 #生産設計 #BIM開発 #ソフトウェアベンダー #ArchiCAD API #GDL #ArchiCAD python #Revit API #Dynamo

メール

bim.arekore@gmail.com

検索

GDLオブジェクト

ブログ アーカイブ

ArchiCADのGDLをコスパよく作成します ArchiCADユーザーでGDL作成を外部委託されている方へ

QooQ