PROCEDURE QuaderZeichnen;
VAR
{fixe variablen}
PageWidth : REAL; {seitenbreite}
PageHeight : REAL; {seitenhöhe}
PageFoldY : REAL; {faltkante}
t : REAL; {faktor für die tiefe des quaders}
{userdefinierte variablen}
h : REAL; {position PerspPunkt; begrenzung 30 bis 80mm}
xL : REAL; {position PerspPunkt; begrenzung 50mm bis PageWidth-50}
StripAnz : INTEGER; {stripanzahl pro seite = auflösung; begrenzung so, dass StripWidth >= 2mm}
{folgevariablen}
xR : REAL; {zeichnen von rechter seite}
StripWidthL : REAL; {streifenbreite linke seite}
StripWidthR : REAL; {streifenbreite rechte seite}
zLi : REAL; {höhe des i-ten streifens, linke seite}
VerhL : REAL;
zRk : REAL; {höhe des k-ten streifens, rechte seite}
VerhR : REAL;
{countervariablen}
k : INTEGER; {strips rechte seite zeichtnen}
i : INTEGER; {strips linke seite zeichnen}
BEGIN
{variablenwerte festlegen}
{fixe variablen}
PageWidth := 210;
PageHeight := 297;
PageFoldY := PageHeight/2;
t := 0.5;
{userdefinierte variablen mit begrenzung}
h := PHOEHE;
IF (h<-100) THEN BEGIN
h := -100;
END;
IF (h>100) THEN BEGIN
h := 100;
END;
xL := PPOSITION;
IF (xL<50) THEN BEGIN
xL := 50;
END;
IF (xL>PageWidth-50) THEN BEGIN
xL := PageWidth-50;
END;
StripAnz := PAUFLOESUNG;
IF (StripAnz<5) THEN BEGIN
StripAnz := 5;
END;
IF (StripAnz>15) THEN BEGIN
StripAnz := 15;
END;
{folgevariablen}
xR := PageWidth-xL;
StripWidthL := (2*xL/3)/StripAnz;
StripWidthR := (2*xR/3)/StripAnz;
zLi := xL/3-StripWidthL/2; {"+i*StripWidthL" in for-schleife}
VerhL := h/xL;
zRk := xR/3-StripWidthR/2; {"+k*StripWidthR" in for-schleife}
VerhR := h/xR;
{din a4 blatt zeichnen}
{penFore(0,0,65535);
moveto(0,0);
lineto(PageWidth,0);
lineto(PageWidth,PageHeight);
lineto(0,PageHeight);
lineto(0,0);}
{faltlinie zeichnen}
penFore(65535,0,0); {Falten}
moveto(0,PageFoldY);
lineto(xL/3-StripWidthL/2,PageFoldY);
moveto(PageWidth,PageFoldY);
lineto(PageWidth-xR/3+StripWidthR/2,PageFoldY);
{strips linke seite zeichnen}
FOR i:=0 TO StripAnz-1 DO BEGIN
penFore(0,0,65535); {Schneiden}
moveto(zLi,PageFoldY-zLi*VerhL*t);
lineto(zLi,PageFoldY+zLi*VerhL*(1+t));
penFore(65535,0,0); {Falten}
lineto(zLi+StripWidthL,pageFoldY+zLi*VerhL*(1+t));
moveto(zLi,PageFoldY+zLi*VerhL);
lineto(zLi+StripWidthL,PageFoldY+zLi*VerhL);
moveto(zLi,PageFoldY-zLi*VerhL*t);
lineto(zLi+StripWidthL,PageFoldY-zLi*VerhL*t);
zLi := zLi+StripWidthL;
END;
{strips rechte seite zeichnen}
FOR k:=0 TO StripAnz-1 DO BEGIN
penFore(0,0,65535); {Schneiden}
moveto(PageWidth-zRk,PageFoldY-zRk*VerhR*t);
lineto(PageWidth-zRk,PageFoldY+zRk*VerhR*(1+t));
penFore(65535,0,0); {Falten}
lineto(PageWidth-zRk-StripWidthR,PageFoldY+zRk*VerhR*(1+t));
moveto(PageWidth-zRk,PageFoldY+zRk*VerhR);
lineto(PageWidth-zRk-StripWidthR,PageFoldY+zRk*VerhR);
moveto(PageWidth-zRk,PageFoldY-zRk*VerhR*t);
lineto(PageWidth-zRk-StripWidthR,PageFoldY-zRk*VerhR*t);
zRk := zRk+StripWidthR;
END;
{mittlerer strip zeichnen}
penFore(0,0,65535); {Schneiden}
moveto(zLi,PageFoldY-zLi*VerhL*t);
lineto(zLi,PageFoldY+zLi*VerhL*(1+t));
moveto(PageWidth-zRk,PageFoldY-zRk*VerhR*t);
lineto(PageWidth-zRk,PageFoldY+zRk*VerhR*(1+t));
penFore(65535,0,0); {Falten}
moveto(zLi,PageFoldY+zLi*VerhL*(1+t));
lineto(PageWidth-zRk,PageFoldY+zRk*VerhR*(1+t));
moveto(zLi,PageFoldY+zLi*VerhL);
lineto(PageWidth-zRk,PageFoldY+zRk*VerhR);
moveto(zLi,PageFoldY-zLi*VerhL*t);
lineto(PageWidth-zRk,PageFoldY-zRk*VerhR*t);
END;
RUN(QuaderZeichnen);
This website has been archived and is no longer maintained.