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)); }