多角形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推進者と繋がりたいです。よろしくお願いします。

自己紹介

自分の写真
初めまして。 BIM活用のあれこれ運営人です。 普段はBIM界隈で働いております。皆さんに役立つ情報を提供できればと思っております。BIMマネやBIMオペ、開発、プログラミング、BIMコンサル、技術営業等様々な業務をおこなっております。 GDL作成などBIM活用のお仕事のご相談お待ちしております。 #ゼネコン出身 #施工管理 #生産設計 #BIM開発 #ソフトウェアベンダー #ArchiCAD API #GDL #ArchiCAD python #Revit API #Dynamo

メール

bim.arekore@gmail.com

検索

GDLオブジェクト

ブログ アーカイブ

ArchiCADのGDLをコスパよく作成します ArchiCADユーザーでGDL作成を外部委託されている方へ

QooQ