頂点数と頂点座標をコントロールできるGDLを作成してみようと思います。
動画のような動きをするGDLプログラムです。この方法を知っておくと、様々なオブジェクトに応用が可能なので、
是非使ってみてください!!
新規パラメータ
新規パラメータには以下の画像のように、頂点数、x座標、y座標を追加します。なお、頂点数は整数型のパラメータタイプとし、x座標とy座標は長さ型のパラメータタイプで配列とします。
パラメータ追加 |
マスタースクリプト
マスタースクリプトは以下のように記述します。for文を使い、頂点数の数によってxとyの配列が更新するようにしておきます。
for i=1 to vertices x[i]=x[i] y[i]=y[i] next i parameters \ x=x, y=y
パラメータスクリプト
パラメータスクリプトには、valuesコマンドを使用して頂点数が3以上になるように制限をかけておきます。
values "vertices", range[3,]
2Dスクリプト
2Dスクリプトには、hotspot2コマンドでx座標、y座標を呼び出します。
また、line2コマンドで多角形の線を描画します。if sqr~の部分は頂点が重なっている場合にエラーになるのを回避するためのものです。
unID=1 for i=1 to vertices hotspot2 0 , y[i], unID, x[i], 1+128 :unID=unID+1 hotspot2 x[i], y[i], unID, x[i], 2 :unID=unID+1 hotspot2 -1 , y[i], unID, x[i], 3 :unID=unID+1 hotspot2 x[i], 0 , unID, y[i], 1+128:unID=unID+1 hotspot2 x[i], y[i], unID, y[i], 2 :unID=unID+1 hotspot2 x[i], -1 , unID, y[i], 3 :unID=unID+1 if i=vertices then after=1 else after=i+1 endif if sqr((x[after]-x[i])**2+(y[after]-y[i])**2)>0 then line2 x[i], y[i], x[after], y[after] endif next i
今回は以上になります。
最近あまり時間がとれず長い記事は書けませんが、有効な情報をお届けできるように精進していきたいと思います。引き続きよろしくお願い致します。
なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶArchiCAD GDLプログラミングという本で基礎をしっかり学びましょう!
また、ココナラでのサポートサービスも始めましたので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へ
【お知らせ】
Xのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore
世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。