private void DarstellungQuerkräfte(int zeitIndex) { // Bestimmung der maximalen Querkraft IEnumerable <AbstraktBalken> Beams() { foreach (var item in modell.Elemente) { if (!(item.Value is AbstraktBalken element)) { continue; } yield return(element); } } maxQuerkraftZeit = 0; foreach (var element in Beams()) { element.ElementState = element.ComputeElementState(); if (element.ElementState.Length <= 2) { continue; } if (Math.Abs(element.ElementState[1]) > maxQuerkraft) { maxQuerkraft = Math.Abs(element.ElementState[1]); } if (Math.Abs(element.ElementState[4]) > maxQuerkraft) { maxQuerkraft = Math.Abs(element.ElementState[4]); } } // Querkraftdarstellung für alle Biegebalken zeichnen foreach (var element in Beams()) { if (element.ElementState.Length <= 2 || maxQuerkraft == 0) { continue; } darstellung.Querkraft_Zeichnen(element, maxQuerkraft, false); } var zeit = zeitIndex * dt; var maxText = "maximale absolute Querkraft = " + maxQuerkraftZeit.ToString("N0") + " nach Zeit = " + zeit.ToString("N2"); MaximalwertAnZeitschritt(maxText); }
private void BtnQuerkraft_Click(object sender, RoutedEventArgs e) { double maxQuerkraft = 0; if (normalkräfteAn) { foreach (Shape path in darstellung.NormalkraftListe) { VisualErgebnisse.Children.Remove(path); } normalkräfteAn = false; } if (momenteAn) { foreach (Shape path in darstellung.MomenteListe) { VisualErgebnisse.Children.Remove(path); } VisualErgebnisse.Children.Remove(darstellung.maxMomentText); momenteAn = false; } if (!querkräfteAn) { bool elementlast; // Bestimmung der maximalen Querkraft IEnumerable <AbstraktBalken> Beams() { foreach (KeyValuePair <string, AbstraktElement> item in modell.Elemente) { if (item.Value is AbstraktBalken beam) { yield return(beam); } } } foreach (var beam in Beams()) { beam.ElementState = beam.ComputeElementState(); if (beam.ElementState.Length <= 2) { continue; } if (Math.Abs(beam.ElementState[1]) > maxQuerkraft) { maxQuerkraft = Math.Abs(beam.ElementState[1]); } if (Math.Abs(beam.ElementState[4]) > maxQuerkraft) { maxQuerkraft = Math.Abs(beam.ElementState[4]); } } // skalierte Querkraftverläufe zeichnen foreach (var beam in Beams()) { elementlast = false; beam.ElementState = beam.ComputeElementState(); if (beam.ElementState.Length <= 2) { continue; } if (Math.Abs(beam.ElementState[1] + beam.ElementState[4]) > double.Epsilon) { elementlast = true; } darstellung.Querkraft_Zeichnen(beam, maxQuerkraft, elementlast); } querkräfteAn = true; } else { foreach (Shape path in darstellung.QuerkraftListe) { VisualErgebnisse.Children.Remove(path); } querkräfteAn = false; } }