多角形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オブジェクト

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

ブログ アーカイブ

自己紹介

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

QooQ