Beispiel #1
0
 public static double[] ComputeLoadVector(AbstraktElementLast ael, bool inElementCoordinateSystem)
 {
     if (ael == null)
     {
         throw new ArgumentNullException(nameof(ael));
     }
     throw new ModellAusnahme("Fachwerkelement kann keine interne Last aufnehmen! Benutze Biegebalken mit Gelenk");
 }
Beispiel #2
0
        private PathGeometry LinienlastZeichnen(AbstraktElementLast last)
        {
            var       linienlast            = (LinienLast)last;
            var       pathGeometry          = new PathGeometry();
            var       pathFigure            = new PathFigure();
            const int lastPfeilGroesse      = 8;
            const int linienkraftÜberhöhung = 1;
            var       linienLastAuflösung   = linienkraftÜberhöhung * lastAuflösung;

            last.SetReferences(modell);
            if (modell.Elemente.TryGetValue(linienlast.ElementId, out var element))
            {
            }
            if (element == null)
            {
                return(pathGeometry);
            }

            if (modell.Knoten.TryGetValue(element.NodeIds[0], out var startKnoten))
            {
            }
            var startPunkt = TransformKnoten(startKnoten, auflösung, maxY);

            // zweiter Elementknoten
            if (modell.Knoten.TryGetValue(element.NodeIds[1], out var endKnoten))
            {
            }
            var endPunkt = TransformKnoten(endKnoten, auflösung, maxY);
            var vector   = endPunkt - startPunkt;

            pathFigure.StartPoint = startPunkt;

            var lastVektor = RotateVectorScreen(vector, -90);

            lastVektor.Normalize();
            var vec       = lastVektor * linienLastAuflösung * linienlast.Intensity[1];
            var nextPunkt = new Point(startPunkt.X - vec.X, startPunkt.Y - vec.Y);

            lastVektor *= lastPfeilGroesse;
            lastVektor  = RotateVectorScreen(lastVektor, -150);
            var punkt = new Point(startPunkt.X - lastVektor.X, startPunkt.Y - lastVektor.Y);

            pathFigure.Segments.Add(new LineSegment(punkt, true));

            lastVektor = RotateVectorScreen(lastVektor, -60);
            punkt      = new Point(startPunkt.X - lastVektor.X, startPunkt.Y - lastVektor.Y);
            pathFigure.Segments.Add(new LineSegment(punkt, false));
            pathFigure.Segments.Add(new LineSegment(startPunkt, true));
            pathFigure.Segments.Add(new LineSegment(nextPunkt, true));

            lastVektor = RotateVectorScreen(vector, 90);
            lastVektor.Normalize();
            vec       = lastVektor * linienLastAuflösung * linienlast.Intensity[1];
            nextPunkt = new Point(endPunkt.X + vec.X, endPunkt.Y + vec.Y);
            pathFigure.Segments.Add(new LineSegment(nextPunkt, true));
            pathFigure.Segments.Add(new LineSegment(endPunkt, true));

            lastVektor *= lastPfeilGroesse;
            lastVektor  = RotateVectorScreen(lastVektor, 30);
            nextPunkt   = new Point(endPunkt.X - lastVektor.X, endPunkt.Y - lastVektor.Y);
            pathFigure.Segments.Add(new LineSegment(nextPunkt, true));

            lastVektor = RotateVectorScreen(lastVektor, -60);
            nextPunkt  = new Point(endPunkt.X - lastVektor.X, endPunkt.Y - lastVektor.Y);
            pathFigure.Segments.Add(new LineSegment(nextPunkt, false));
            pathFigure.Segments.Add(new LineSegment(endPunkt, true));
            pathFigure.Segments.Add(new LineSegment(startPunkt, false));

            pathGeometry.Figures.Add(pathFigure);

            return(pathGeometry);
        }