|
| MAS ETH ARCH/CAAD - 2005/06 - STUDENT PAGES Master of Advanced Studies in Architecture, Specialization in Computer Aided Architectural Design | 065-0005/6 Supervision: Prof. Dr. Ludger Hovestadt, Philipp Schaerer Chair of CAAD, ETH Zurich 2.VectorscriptPlugIn ToolProcedure Polypunkte; VAR mPoly:HANDLE; anzahlx,anzahly,a,j,i,k,l:INTEGER; lBound,hBound,x1,y1,x2,y2,x,y,px,py,x3,x4:REAL; index:STRING; Polpt:Dynarray[,] OF REAL; Para:DynARRAY[,] OF REAL; {***Die Anzahl und die x und y Werte des zuletzt gezeichneten Polygons werden zurückgegeben und in einen Dynamischen Array eingefüllt***} BEGIN mPoly:=LsActLayer; a:=GetVertNum(mPoly); Allocate Polpt[1..a,1..2]; for i:=1 to a do Begin GetPolyPt(mPoly, i, px, py); Locus(px,py); Polpt[i,1]:=px; Polpt[i,2]:=py; index:=Num2Str(0,a); Message('das Poly hat ',index,' Punkte'); End; {********Das ist der Inhalt des Dynamischen Arrays mit dem Namen PolPt Polpt[1,1] = px1 Polpt[1,2] = py1 Polpt[2,1] = px2 Polpt[2,2] = py2 usw. Polpt[a,1] = px(a) Polpt[a,2] = px(a) ***} GetBBox(mPoly,x1,y1,x2,y2); {Rect(x1,y1,x2,y2);boundingbox} lBound:=x2-x1; hBound:=y2-y1; {***Füllt Array 'Para' mit Parametern mittels Dialogen K gibt die Anzahl verschiedener Typen an ***} j:=IntDialog('Anzahl verschiedener Haustypen ?','1'); For k:=1 TO j Do BEGIN Allocate Para[1..k,1..6]; Para[k,1]:=RealDialog('Grundflaeche ?','100'); Para[k,2]:=RealDialog('Haustiefe ?','10'); Para[k,3]:=RealDialog('Hausabstand ?','8'); Para[k,4]:=Para[k,1]/Para[k,2]; {****Hauslänge****} Para[k,5]:=lBound/(Para[k,4]+Para[k,3]); {****Hausanzahl in Boundingbox in x Richtung****} Para[k,6]:=lBound/(Para[k,2]+Para[k,3]); {****Hausanzahl in Boundingbox in y Richtung****} END; anzahlx:=0; For k:=1 To j Do Begin anzahlx:=anzahlx+Para[k,5]; END; anzahlx:=anzahlx/j; anzahly:=0; For k:=1 To j Do Begin anzahly:=anzahly+Para[k,6]; END; anzahly:=anzahly/j; FOR k:=1 TO j DO BEGIN FOR l:=1 TO anzahlx DO Begin FOR i:=1 TO anzahly DO Begin If PtInPoly(x,y,mPoly) Then x:=x1+l*(lbound/anzahlx); y:=y1+i*(hbound/anzahly); moveto(x,y); If PtInPoly(x,y,mPoly)Then If PtInPoly(x+Para[k,4],y+Para[k,2],mPoly)Then If PtInPoly(x+Para[k,4],y+Para[k,2]/2,mPoly)Then If PtInPoly(x,y+Para[k,2],mPoly)Then If PtInPoly(x,y+Para[k,2]/2,mPoly)Then If PtInPoly(x+(Para[k,4]/2),y,mPoly)Then If PtInPoly(x+Para[k,4],y,mPoly)Then Rect(x,y,x+Para[k,4],y+Para[k,2]); {x:=x1+l*(Para[k,3]+Para[k,4]); y:=y1+i*(Para[k,3]+Para[k,2]);} END; END; END; END; RUN(Polypunkte); -- Main.NDSTobiasWendt - 16 Nov 2005
|
This website has been archived and is no longer maintained.