Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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);
        }