ArchiCADとGDLで遊んでみました。
この根っこ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推進者と繋がりたいです。よろしくお願いします。
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。