C Felder: Unterschied zwischen den Versionen
Lutz (Diskussion | Beiträge) |
Lutz (Diskussion | Beiträge) K (Schützte „C Loop über ein Feld“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))) |
(kein Unterschied)
|
Version vom 19. November 2019, 11:59 Uhr
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
Beispiel 2 - vier verschiedene Laststellungen
Im Feld pos werden die vier unterschiedlichen X-Werte der Laststellungen gespeichert. Der includierte Block area2 beinhaltet die Definition der kleinen Flächenlasten.
Die Schleife erzeugt die einzelnen Lastfälle FAT:
let#pos 0,1.5,2.7,7.15-(4.2),7.15-(4.2/2)
let#lf 101
loop#i pos
lf nr #lf typ FAT bez 'FAT - #lf'
$Startpunkt 1 let#xs #pos(#i) let#ys 3.500 let#zs 0.000 #include area2
$Startpunkt 2 let#xs #pos(#i) let#ys 3.500-3 let#zs 0.000 #include area2
let#lf #lf+1
endloop