ETH Zuerich - Startseite
Professur für CAAD

 


caad d-arch


Caad Teaching
 

 
Bachelor of Architecture: CAAD II ss07

 
Master of Advanced Studies
in Architecture, CAAD


 
DWF-Processing
Programmieren statt Zeichnen


 
Graustufen - Ein Atlas
Schweizer Wohngebäude als XML Daten


 
DWF- Denken in Systemen:
In Collaboration with the Technical University Vienna


 
Seminarwoche:
BlowUp


 
Archiv

 
Caad Projects
 

 
Theory
 
Design
 
Building
 
Practice

 
Related pages
 

 
Swiss Federal Institute of Technology Zurich
 
Institute of Building Technology
 
Faculty of Architecture

 
Other pages

 










hbt d-arch

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





Unbenanntes Dokument

This website has been archived and is no longer maintained.


Mini-Assignment III: Make a plug-in !


NDSBEN_01_02_icon.gif

PROCEDURE mousemove;

VAR
   xold,yold,xnew,ynew:real;

BEGIN
   getline(xold,yold,xnew,ynew);
   MoveObjs(xnew-xold,ynew-yold ,true,false);
END;

Run(mousemove);




NDSBen_01_03_maurer.jpg Bring up the walls!
Download now: Brickwork.vso


PROCEDURE mauer;

TYPE
rechteck = structure
   breite,hoehe,halbebreite,viertelbreite,dreiviertel,max:real;
   x1,y1,x2,y2:real;
   end;   

VAR
   stein,wand:rechteck;
   verband:char;
   lagen,i,l,halb,endhalb:INTEGER;
   lagerfuge,stossfuge,rollfuge,tausch:real;

procedure steinzeichnen (x:real;y:real;breite:real);
   begin
      rect(x,y,x+breite,y+stein.hoehe);
      stein.x1:=stein.x1+breite+stossfuge;
   end;

procedure rollschicht;
   begin 
      i:=trunc((wand.breite+stossfuge)/(stein.hoehe+stossfuge));
      rollfuge:= (wand.breite-i*stein.hoehe)/(i-1);
      for l:=1 to i do 
         begin
            rect(stein.x1,wand.y2+lagerfuge,stein.x1 +stein.hoehe,wand.y2+lagerfuge +stein.halbebreite);
            stein.x1:=stein.x1+stein.hoehe+rollfuge;
         end;
   end;
   
procedure laeufer;
   begin
      for i:=1 to lagen do begin
            if i mod 2 =0 then begin
               steinzeichnen (stein.x1,stein.y1,stein.halbebreite);
               end;
             while ((wand.x2-stein.x1)>stein.breite) do begin
               steinzeichnen(stein.x1,stein.y1,stein.breite);
               end;
            steinzeichnen(stein.x1,stein.y1,wand.x2-stein.x1);
            stein.x1:=wand.x1;
            stein.y1:=wand.y1+i*(stein.hoehe+lagerfuge)+lagerfuge;
      end;
   end;

procedure block;
   begin
      for i:=1 to lagen do begin
            if i mod 2 =0 then begin
               steinzeichnen (stein.x1,stein.y1,stein.viertelbreite);
               while ((wand.x2-stein.x1)>(stein.halbebreite)) do begin
                  steinzeichnen(stein.x1,stein.y1,stein.halbebreite);
                  end;
               steinzeichnen(stein.x1,stein.y1,wand.x2-stein.x1);
               end
            else begin   
                while ((wand.x2-stein.x1)>stein.breite) do begin
                  steinzeichnen(stein.x1,stein.y1,stein.breite);
                  end;
               steinzeichnen(stein.x1,stein.y1,wand.x2-stein.x1);
               end;
            stein.x1:=wand.x1;
            stein.y1:=wand.y1+i*(stein.hoehe+lagerfuge)+lagerfuge;
      end;
   end;

procedure holland;
begin
      for i:=1 to lagen do begin
            if i mod 2 =0 then begin
                  steinzeichnen (stein.x1,stein.y1,stein.viertelbreite);
                  while ((wand.x2-stein.x1)>(stein.halbebreite)) do begin
                        steinzeichnen(stein.x1,stein.y1,stein.halbebreite);
                  end;
                  steinzeichnen(stein.x1,stein.y1,wand.x2-stein.x1);
            end
            else begin   
                  steinzeichnen (stein.x1,stein.y1,stein.halbebreite);
                  halb:=1;
                  stein.max:=stein.halbebreite;
                   while ((wand.x2-stein.x1)>stein.max) do begin
                        if halb=1 then begin
                              steinzeichnen(stein.x1,stein.y1,stein.halbebreite);
                              halb:=0;   
                              stein.max:=stein.breite;
                        end
                        else begin
                              steinzeichnen(stein.x1,stein.y1,stein.breite);
                              halb:=1;
                              stein.max:=stein.halbebreite;
                        end;
                     end;
                     steinzeichnen(stein.x1,stein.y1,wand.x2-stein.x1);
               end;
            stein.x1:=wand.x1;
            stein.y1:=wand.y1+i*(stein.hoehe+lagerfuge)+lagerfuge;
      end;
   end;
procedure mark;
begin
      for i:=1 to lagen do begin
            halb:=0;
            if i mod 2 =0 then begin   
                  steinzeichnen (stein.x1,stein.y1,stein.viertelbreite);
                  halb:=1;
            end
            else begin
                  steinzeichnen (stein.x1,stein.y1,stein.halbebreite);   
            end;
            while ((wand.x2-stein.x1)>stein.breite) do begin
                  if halb<2 then begin
                        steinzeichnen(stein.x1,stein.y1,stein.breite);
                        halb:=halb+1;
                  end
                  else begin
                        steinzeichnen(stein.x1,stein.y1,stein.halbebreite);
                        halb:=0;
                  end;
            end;
            if (halb=2) and ((wand.x2-stein.x1)>stein.halbebreite) then steinzeichnen(stein.x1,stein.y1,stein.halbebreite);
            steinzeichnen (stein.x1,stein.y1,wand.x2-stein.x1);
            stein.x1:=wand.x1;
            stein.y1:=wand.y1+i*(stein.hoehe+lagerfuge)+lagerfuge;
         end;
   end;
         

procedure kreuz;
begin
      for i:=1 to lagen do begin
            if i mod 2 =0 then begin
                  steinzeichnen (stein.x1,stein.y1,stein.viertelbreite);
                  while ((wand.x2-stein.x1)>(stein.halbebreite)) do begin
                        steinzeichnen(stein.x1,stein.y1,stein.halbebreite);
                  end;
                  steinzeichnen(stein.x1,stein.y1,wand.x2-stein.x1);
            end 
            else begin
                  if (i+3) mod 4 =0 then steinzeichnen (stein.x1,stein.y1,stein.halbebreite);
                       while ((wand.x2-stein.x1)>stein.breite) do begin
                          steinzeichnen(stein.x1,stein.y1,stein.breite);
                       end;
                       steinzeichnen(stein.x1,stein.y1,wand.x2-stein.x1);
                 end;
            stein.x1:=wand.x1;
            stein.y1:=wand.y1+i*(stein.hoehe+lagerfuge)+lagerfuge;
      end;
   end;



procedure wild;
   begin
      for i:=1 to lagen do begin
            halb:=round(random*3);
            endhalb:=round(random*3)+2;
            if i mod 2 =0 then begin   
                  steinzeichnen (stein.x1,stein.y1,stein.viertelbreite);
               end;
            while ((wand.x2-stein.x1)>stein.breite) do begin
                  if halb<endhalb then begin
                        steinzeichnen(stein.x1,stein.y1,stein.breite);      
                        halb:=halb+1;
                     end
                  else begin
                        steinzeichnen(stein.x1,stein.y1,stein.halbebreite);
                        endhalb:=round(random*4)+2;
                        halb:=0;
                     end;
               end;
            steinzeichnen (stein.x1,stein.y1,wand.x2-stein.x1);
            stein.x1:=wand.x1;
            stein.y1:=wand.y1+i*(stein.hoehe+lagerfuge)+lagerfuge;
         end;
   end;



BEGIN
   fillback(0,0,0);
   lagerfuge:=plagerfuge;
   stossfuge:=pstossfuge;
   stein.breite:=psteinbreite;
   stein.hoehe:=psteinhoehe;
   if stossfuge>stein.breite/7 then stossfuge:=stein.breite/7;
   stein.halbebreite:=(stein.breite-stossfuge)/2;
   stein.viertelbreite:=(stein.halbebreite-stossfuge)/2;
   verband:='l';
   if pverband='Blockverband' then verband:='b';
   if pverband='Läuferverband' then verband:='l';
   if pverband='Holländischer Verband' then verband:='h';
   if pverband='Kreuzverband' then verband:='k';
   if pverband='Märkischer Verband' then verband:='m';
   if pverband='Wilder Verband' then verband:='w';
   (*Rechteck ins Mauerwerksmass*)
   wand.x1:=0;
   wand.y1:=-pboxwidth/2;
   wand.breite:=round((Plinelength-stossfuge)/(stein.breite +stossfuge))*(stein.breite +stossfuge)-stossfuge;
   wand.hoehe:=round(Pboxwidth/(stein.hoehe +lagerfuge))*(stein.hoehe +lagerfuge);
   wand.x2:=wand.x1+wand.breite;
   wand.y2:=wand.y1+wand.hoehe;
   lagen:=(wand.hoehe)/(stein.hoehe+lagerfuge);
   if proll then begin
         rect(wand.x1,wand.y1,wand.x2,wand.y2+stossfuge+stein.halbebreite);
         fillback(65535,65535,65535);
         rollschicht;
      end
   else rect(wand.x1,wand.y1,wand.x2,wand.y2);

(*steine setzen*)
   stein.x1:=wand.x1;
   stein.y1:=wand.y1+lagerfuge;
   fillback(65535,65535,65535);
case verband of
   'l':   laeufer;
   'b':  block;
   'h':  holland;
   'k':   kreuz;
   'm':  mark;
   'w':  wild;
   end;


END;
Run(mauer);

Revision r1.6 - 06 Jan 2006 - 17:58 - NDSBenjaminDillenburger
Parents: WebHome > NDSBenjaminDillenburger
Copyright © 1999-2003 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.

This website has been archived and is no longer maintained.