ArchiCAD GDLを学習 〜机②〜

2024年8月15日木曜日

add del GDL hotspot

t f B! P L

 ArchiCAD GDLで机をつくてみる②

ホットスポットとは

前回作成した机オブジェクトにホットスポットを追加していきたいと思います。ホットスポットとは、簡単にいうと2Dや3Dでオブジェクトの配置や移動などをサポートする「点」のことです。ホットスポットを追加することで、特定の点にスナップさせたり、寸法を測る際の参照点にしたりと、とても便利な機能を実現できます。

ネット上でGDLをダウンロードして、「ここの寸法を取りたいのに取れないな〜」という経験をしたことはありませんか?Revitファミリでも、参照線を引いていないと寸法ツールに反応しないことがありますよね。GDLでは、このホットスポットを自由に設定でき、さらにパラメータの編集ポイントとしても機能させることができるので、ユーザーの操作性が大幅に向上すると思います。

文章だけではわかりにくいので、早速実装してみましょう。

黒ホットスポット

例えば、3Dスクリプトに以下のコードを追加してみます。そうすると、画像のように黒い点が追加されていることが確認できます。今回は、足元の四隅にホットスポットを作成してみます。
!ホットスポット
hotspot 0, 0, 0
hotspot width, 0, 0
hotspot 0, depth, 0
hotspot width, depth, 0
GDLホットスポット

ピンクホットスポット

黒いホットスポットは、移動や寸法計測時などの参照点として使うことができますが、他にもピンクのホットスポットを追加することができます。このピンクのホットスポットを使うと、3D画面や断面画面上からパラメータを変更できるようになるので、覚えておくと便利です。ピンクのホットスポットは、以下のように追加できます。
!ピンクのホットスポット
unid = 1
hotspot 0, 	depth/2, height, unid, width, 1+128	:unid = unid+1
hotspot width, 	depth/2, height, unid, width, 2		:unid = unid+1
hotspot -1, 	depth/2, height, unid, width, 3		:unid = unid+1

hotspot width/2, 0, 	height, unid, depth, 1+128	:unid = unid+1
hotspot width/2, depth, height, unid, depth, 2		:unid = unid+1
hotspot width/2, -1, 	height, unid, depth, 3		:unid = unid+1


上記の画像のようにピンクのホットスポットを選択すると、パレットが出現し、ホットスポットを移動できるモードになります。これにより、感覚的にパラメータを操作できるため、使い勝手が大幅に良くなります。ぜひ覚えておくと良いでしょう。

ちなみに、コード内の「:」は、1行内でステートメントを分けるために使います。以下のコードを参考にすると分かりやすいですが、通常、block コマンドを1行内で2回呼び出すことはできませんが、「:」を使用することでそれが可能になります。

!NG
block x,y,z	block,a,b,c
!OK
block x,y,z	:block,a,b,c

ホットスポットコマンドの unid は、スクリプト内で一意でなければならないため、unid = unid + 1 と工夫しています。もちろん、自分で管理できるのであれば、好きな unid を指定しても問題ありません。

今回のホットスポットは、X軸方向とY軸方向の直線上で変更できるものを作成しましたが、作り方によっては、XY平面上で自由に動かせるものや、XYZ空間で自由に動かせるもの、さらには角度パラメータを変更できるものなど、さまざまな使い方があります。また、どこかのタイミングでこれらについても書いていきたいと思います。

最後に、今回までのコードは以下のようになっています。

material mat

!脚1
block leg_size, leg_size, height - thin

!脚2
add width - leg_size, 0, 0
block leg_size, leg_size, height - thin
del 1

!脚3
add width - leg_size, depth - leg_size, 0
block leg_size, leg_size, height - thin
del 1

!脚4
add 0, depth - leg_size, 0
block leg_size, leg_size, height - thin
del 1

!天板
add 0, 0, height - thin
block width, depth, thin
del 1

!ホットスポット
hotspot 0, 0, 0
hotspot width, 0, 0
hotspot 0, depth, 0
hotspot width, depth, 0

!ピンクのホットスポット
unid = 1
hotspot 0, 	depth/2, height, unid, width, 1+128	:unid = unid+1
hotspot width, 	depth/2, height, unid, width, 2		:unid = unid+1
hotspot -1, 	depth/2, height, unid, width, 3		:unid = unid+1

hotspot width/2, 0, 	height, unid, depth, 1+128	:unid = unid+1
hotspot width/2, depth, height, unid, depth, 2		:unid = unid+1
hotspot width/2, -1, 	height, unid, depth, 3		:unid = unid+1

なお、基本的な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