C Felder

Aus ITP
Version vom 25. September 2019, 15:12 Uhr von Lutz (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== mächtiges Werkzeug == '''Loop über ein Feld''' ist ein sehr mächtiges Werkzeug. Es gibt viele sinnvolle Anwendungen. Wesentlich ist die Definition des F…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

mächtiges Werkzeug

Loop über ein Feld ist ein sehr mächtiges Werkzeug. Es gibt viele sinnvolle Anwendungen.

Wesentlich ist die Definition des Feldes und der anschließende Aufruf des Feldnames (ohne #) im LOOP - Befehl. Die Schleife wird sooft durchlaufen, wie das Feld Elemente hat.

Falls das Feld "unregelmäßig" ist, kann man das Feld über Schleifen belegen.

Man sollte sich hüten, ein einmal definiertes Feld erneut zu verwenden. Denn die maximale Feldlänge (und diese bestimmt die Anzahl der Schleifenläufe) wird intern gespeichert. Bei einer erneuten Feldbelegung mit einer kleineren Elementanzahl kommt es dann zu Fehlern.

Beispiel 1 - Pfetten einer Stahlhalle

In den Feldern ya und yb stecken die Y-Werte der einzelnen Hallenrahmen.

Die nachstehende Schleife generiert über alle 14 Felder die Pfetten. Mit der if-Bedingung wird noch der entsprechende Querschnitt ausgewählt.

!*!Label Längspfetten auf dem Dach let#ya #y1,#y2,#y3,#y4,#y5,#y6,#y7,#y8,#y9,#y10,#y11,#y12,#y13,#y14 let#yb #y2,#y3,#y4,#y5,#y6,#y7,#y8,#y9,#y10,#y11,#y12,#y13,#y14,#y15

loop#i ya

       let#l           #ya(#i)-#yb(#i)
       let#y11         #yb(#i)+((#l/2)+(#ylb/2))
       let#y12         #y11-#ylb
       let#grp 410+(#i*10)
       let#knr         #grp*#gdiv      $ neue Knoten
       spt     nr              x       y               z
               #knr+11+100     #x31    #y11            #z31
               #knr+12+100     #x31    #y12            #z31
               #knr+11+200     #x32    #y11            #z32
               #knr+12+200     #x32    #y12            #z32
               #knr+11+300     #x33    #y11            #z33
               #knr+12+300     #x33    #y12            #z33
       $        Pfetten
       let#grpa        10+(#i)*10
       let#grpb        #grpa+10 $ Gruppe des hinteren Rahmen
       if #i==6
               let#qnr 27
       else
               let#qnr 26
       endif
       sln     nr      npa             npe                             qnr=#qnr     grp=#grp        styp='B'
               -       #gdiv*#grpa+31  #knr+11+100     $fixa mymz
               -       #knr+11+100     #knr+12+100
               -       #knr+12+100     #gdiv*#grpb+31  $fixe mymz
               -       #gdiv*#grpa+32  #knr+11+200     $fixa mymz
               -       #knr+11+200     #knr+12+200
               -       #knr+12+200     #gdiv*#grpb+32  $fixe mymz
               -       #gdiv*#grpa+33  #knr+11+300     $fixa mymz
               -       #knr+11+300     #knr+12+300
               -       #knr+12+300     #gdiv*#grpb+33  $fixe mymz

endloop