ArchiCAD GDLで椅子をつくてみる②
Revitのファミリでは配列をパラメータとして扱うことができないため、これもGDLの優れた点の一つだと感じています。これができることで、オブジェクトとしての自由度はRevitファミリと比較してもかなり高いと感じます。(これはあくまで個人的な感想ですが...)
unid = 1 unid = 1 material mat gosub "desk" 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" end
配列とホットスポット
今回は、椅子の位置座標を chair_pos
というパラメータにして配列化しています。配列は2行1列とし、1行目の値をX座標、2行目の値をY座標として扱います。もちろん、chair_pos_x
や chair_pos_y
のように、それぞれを別のパラメータとして設定しても良いのですが、練習も兼ねて配列を使用しています。
配列の値を操作したい場合は、"パラメータ名[行][列]" のように配列内の位置を []
で指定することで、値を利用可能にします。上記の例では、chair_pos[1]
が1行目の値、つまりX座標に当たる部分で、chair_pos[2]
が2行目の値、つまりY座標に当たる部分です。今回は1列なので "[行]" だけで機能しますが、複数列の場合は "[行][列]" と指定します。
配列の値をホットスポットで呼び出すことで、椅子の位置を自由に移動できるようになります。上記コードのようにX座標とY座標についてそれぞれ記述すると、XY平面上を自由に動くホットスポットが作成されます。あとは add
コマンドを使って椅子("chair" ラベルで定義)の位置座標を変更すれば、ホットスポットに追従する椅子の完成です。下の画像は、椅子の中心にホットスポットが追加されている様子を示しています。
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。