ArchiCAD GDLで机をつくてみる②
ホットスポットとは
ネット上でGDLをダウンロードして、「ここの寸法を取りたいのに取れないな〜」という経験をしたことはありませんか?Revitファミリでも、参照線を引いていないと寸法ツールに反応しないことがありますよね。GDLでは、このホットスポットを自由に設定でき、さらにパラメータの編集ポイントとしても機能させることができるので、ユーザーの操作性が大幅に向上すると思います。
文章だけではわかりにくいので、早速実装してみましょう。
黒ホットスポット
!ホットスポット hotspot 0, 0, 0 hotspot width, 0, 0 hotspot 0, depth, 0 hotspot width, depth, 0
ピンクホットスポット
黒いホットスポットは、移動や寸法計測時などの参照点として使うことができますが、他にもピンクのホットスポットを追加することができます。このピンクのホットスポットを使うと、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
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。