private XYZ GetNewEndedPoint(XYZ ColTarget_, XYZ EndPoint, LINE Beam)
        {
            XYZ    ColTarget    = new XYZ(ColTarget_.X, ColTarget_.Y, Beam.GetStartPoint().Z);
            XYZ    startPoint   = Beam.GetStartPoint();
            XYZ    oriDir       = Beam.GetDirection();
            XYZ    newDir       = new XYZ(oriDir.Y, -oriDir.X, oriDir.Z);
            LINE   VerticalLINE = new LINE(ColTarget, newDir, 1);
            XYZ    newPoint     = VerticalLINE.GetCrossPoint(Beam);
            double dist         = Math.Sqrt((newPoint.X - EndPoint.X) * (newPoint.X - EndPoint.X) +
                                            (newPoint.Y - EndPoint.Y) * (newPoint.Y - EndPoint.Y));

            if (dist > Beam.GetLength())
            {
                return(EndPoint);
            }
            return(VerticalLINE.GetCrossPoint(Beam));
        }