/// <summary> /// Выполняет шаги в обратном порядке для перемещения к заданной точке из траектории. /// </summary> /// <param name="scriptPosition">Точка в траектории движения к которой необходимо вернуться</param> public void BackTo(LeverScriptPosition scriptPosition) { if (!leverPositions.Contains(scriptPosition)) { throw new ArgumentException("Не найдена заданная точка"); } var startIndex = Path.IndexOf(scriptPosition); var count = Path.Count - startIndex; if (count == 0) { return; } var movePositions = new List <LeverPosition>(); for (int i = startIndex; i < Path.Count; i++) { var pos = leverPositions[i]; movePositions.Add(new LeverPosition(pos.LeverType, pos.From)); } movePositions.Reverse(); leverPositions.RemoveRange(startIndex, count); IsMoving = true; movement.MoveRobotByPath(movePositions, new Action(Continue)); }
private void View_InvokeMoveToEndScript(object sender, MovementScript e) { try { if (e == null) { return; } if (messageService.ShowExclamation("Переместить манипулятор в конечную точку сценария «" + e.Name + "»") == UserResponse.OK) { var action = new Action(() => messageService.ShowMessage("Робот перемещен в конечную точку сценария «" + e.Name + "»")); movement.MoveRobotByPath(e.End, action); } } catch (Exception ex) { messageService.ShowError(ex.Message); } }