public void Toggle_Eigenform() { if (!verformungenAn) { var pathGeometry = Eigenform_Zeichnen(modell.Eigenstate.Eigenvectors[index]); Shape path = new Path() { Stroke = Red, StrokeThickness = 2, Data = pathGeometry }; // setz oben/links Position zum Zeichnen auf dem Canvas SetLeft(path, RandLinks); SetTop(path, RandOben); // zeichne Shape VisualErgebnisse.Children.Add(path); Verformungen.Add(path); verformungenAn = true; var value = Math.Sqrt(modell.Eigenstate.Eigenvalues[index]) / 2 / Math.PI; var eigenfrequenz = new TextBlock { FontSize = 14, Text = "Eigenfrequenz Nr. " + (index + 1).ToString() + " = " + value.ToString("N2"), Foreground = Blue }; SetTop(eigenfrequenz, -RandOben + SteuerLeiste.Height); SetLeft(eigenfrequenz, RandLinks); VisualErgebnisse.Children.Add(eigenfrequenz); Eigenfrequenzen.Add(eigenfrequenz); } else { foreach (Shape path in Verformungen) { VisualErgebnisse.Children.Remove(path); } foreach (TextBlock eigenfrequenz in Eigenfrequenzen) { VisualErgebnisse.Children.Remove(eigenfrequenz); } verformungenAn = false; } }
public void VerformteGeometrie() { if (!StartFenster.berechnet) { var analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); StartFenster.berechnet = true; } //int überhöhung = 1; //const int rotationÜberhöhung = 1; var pathGeometry = new PathGeometry(); IEnumerable <AbstraktElement> Elements() { foreach (var item in modell.Elemente) { if (item.Value is AbstraktElement element) { yield return(element); } } } foreach (var element in Elements()) { //element.ElementState = element.ComputeElementState(); var pathFigure = new PathFigure(); switch (element) { case Element2D3 _: { if (modell.Knoten.TryGetValue(element.NodeIds[0], out knoten)) { } var start = TransformVerformtenKnoten(knoten, auflösung, maxY); pathFigure.StartPoint = start; for (var i = 1; i < element.NodeIds.Length; i++) { if (modell.Knoten.TryGetValue(element.NodeIds[i], out knoten)) { } var end = TransformVerformtenKnoten(knoten, auflösung, maxY); pathFigure.Segments.Add(new LineSegment(end, true)); } break; } } if (element.NodeIds.Length > 2) { pathFigure.IsClosed = true; } pathGeometry.Figures.Add(pathFigure); } // alle Elemente werden der GeometryGroup tragwerk hinzugefügt var tragwerk = new GeometryGroup(); tragwerk.Children.Add(pathGeometry); Shape path = new Path() { Stroke = Red, StrokeThickness = 1, Data = tragwerk }; // setz oben/links Position zum Zeichnen auf dem Canvas SetLeft(path, RandLinks); SetTop(path, randOben); // zeichne Shape visualErgebnisse.Children.Add(path); Verformungen.Add(path); }