多角形GDLを作ってみる

2024年12月2日月曜日

GDL hotspot2 sqr 多角形

t f B! P L
頂点数と頂点座標をコントロールできる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推進者と繋がりたいです。よろしくお願いします。

検索

最新記事

多角形GDLに機能を追加してみる②

GDLオブジェクト

UI (1) ユニーク (1) 椅子 (4) 仮囲い (6) (7) 小ネタ (3) 足場 (15) 足場計画 (4) 多角形 (3) 法規 (1) 無償DL (4)

ブログ アーカイブ

自己紹介

自分の写真
GDL作成などBIM活用のお仕事の相談お待ちしております。 #中堅ゼネコン出身 #施工管理職 #生産設計部 #BIM開発部門
ArchiCADのGDLをコスパよく作成します ArchiCADユーザーでGDL作成を外部委託されている方へ

QooQ