【小ネタ】ArchiCADでアート?根っこみたいなGDLを作成。

2024年11月7日木曜日

GDL ユニーク 小ネタ

t f B! P L
ArchiCADとGDLで遊んでみました。
この根っこGDLは実務で使う訳ではないですが、
いろんなことに展開が可能な予感がしています!!!

ArchiCAD GDL
詳しくは動画で





スクリプト公開

根っこGDLのスクリプトを公開します。このような仕組みを使って実務に役立てていただければと思います。「このような仕組みは作れないの?」などのアイデア等をお持ちの方は、お問い合わせフォームやコメント機能から気軽にご相談ください。

マスタースクリプト
EPS = 0.000000001

x[1]=0
y[1]=0
index[1]=1
joinIndex[1]=1

IF GLOB_MODPAR_NAME = "iX" OR GLOB_MODPAR_NAME = "iY" THEN
	FOR i=1 to num
		IF ABS(iX[i]-iXP[i])>EPS OR ABS(iY[i]-iYP[i])>EPS THEN
			insertIndex=i
			newX=iX[i]
			newY=iY[i]
			newIndex = num + 1
			joinInd = index[i]
		ENDIF
	NEXT i

	IF insertIndex>0 THEN
		num=num+1
		FOR i=num TO insertIndex+2 STEP -1
			x[i]=x[i-1]
			y[i]=y[i-1]
			index[i]=index[i-1]
			joinIndex[i]=joinIndex[i-1]
		NEXT i
		x[insertIndex+1]=newX
		y[insertIndex+1]=newY
		index[insertIndex+1]=newIndex
		joinIndex[insertIndex+1]=joinInd
	ENDIF
ENDIF

x[num+1]=x[num]
y[num+1]=y[num]
iX[num+1]=0
iY[num+1]=0
iXP[num+1]=0
iYP[num+1]=0
index[num+1]=0
joinIndex[num+1]=0

PARAMETERS num=num,
x=x,
y=y,
iX=iX,
iY=iY,
iXP=iX,
iYP=iY,
index=index,
joinIndex=joinIndex


2Dスクリプト
unid = 2000

hotspot2 0,0

DEFINE STYLE "test" "New York", 2, 5, 0
SET STYLE "test"

FOR i=1 to num
	if i>1 then
		!x control
		HOTSPOT2 0,y[i],		unID,x[i],1+128		:unID=unID+1		!BASE
		HOTSPOT2 x[i],y[i],		unID,x[i],2			:unID=unID+1		!MOVE
		HOTSPOT2 -1,y[i],		unID,x[i],3 		:unID=unID+1		!REF
		!y control
		HOTSPOT2 x[i],0,		unID,y[i],1+128		:unID=unID+1		!BASE
		HOTSPOT2 x[i],y[i],		unID,y[i],2			:unID=unID+1		!MOVE
		HOTSPOT2 x[i],-1,		unID,y[i],3 		:unID=unID+1		!REF
	endif

	! ADD2 x[i], y[i]
	! circle2 0, 0, 0.2
	! text2 0,0,str(index[i], 2, 0)
	! DEL 1
NEXT i

DIM iXHotspot[], iYHotspot[]
FOR i=1 TO num
	iXHotspot[i] = x[i]
	iYHotspot[i] = y[i] - 0.2
NEXT i

FOR i=1 to num
	!x control
	HOTSPOT2 0,				iYHotspot[i],unID,iX[i],1+128	:unID=unID+1		!BASE
	HOTSPOT2 iXHotspot[i],	iYHotspot[i],unID,iX[i],2		:unID=unID+1		!MOVE
	HOTSPOT2 -1,			iYHotspot[i],unID,iX[i],3 		:unID=unID+1		!REF
	!y control
	HOTSPOT2 iXHotspot[i],0,			unID,iY[i],1+128	:unID=unID+1		!BASE
	HOTSPOT2 iXHotspot[i],iYHotspot[i],	unID,iY[i],2		:unID=unID+1		!MOVE
	HOTSPOT2 iXHotspot[i],-1,			unID,iY[i],3 		:unID=unID+1		!REF
NEXT i

FOR i=1 to num
	p=0
	for j=1 to num
		if joinIndex[i] = index[j] then
			p=j
		endif
	next j

	LINE2 x[i],y[i],	x[p],y[p]
NEXT i

まだまだArchiCADの活用の幅は無限大ですね♪


なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶ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