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





2.Vectorscript

PlugIn Tool


FlleinPoly_Twicky.jpg

Procedure 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

Revision r1.2 - 16 Nov 2005 - 13:26 - KaiRuedenauer
Parents: WebHome > NDSTobiasWendt > 1ModulScripting
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.