private void bPlay_Click(object sender, EventArgs e) { toolStrip.Enabled = false; Acad.CreateProgressor("Проигрывание обработки"); Acad.SetLimitProgressor(processCommandBindingSource.Count - processCommandBindingSource.Position); while (processCommandBindingSource.Position < processCommandBindingSource.Count - 1 && Acad.ReportProgressor(false)) { processCommandBindingSource.MoveNext(); System.Threading.Thread.Sleep((int)((ProcessCommand)processCommandBindingSource.Current).Duration * 10); } Acad.CloseProgressor(); toolStrip.Enabled = true; }
public void BuildProcessing(ITechProcess techProcess) { if (!techProcess.TechOperations.Any()) { techProcess.CreateTechOperations(); } if (!techProcess.Validate() || techProcess.TechOperations.Any(p => p.Enabled && p.CanProcess && !p.Validate())) { return; } try { Acad.Write($"Выполняется расчет обработки по техпроцессу {techProcess.Caption} ..."); var stopwatch = Stopwatch.StartNew(); Acad.CreateProgressor($"Расчет обработки по техпроцессу \"{techProcess.Caption}\""); DeleteProcessing(techProcess); Acad.Editor.UpdateScreen(); techProcess.BuildProcessing(); stopwatch.Stop(); Acad.Write($"Расчет обработки завершен {stopwatch.Elapsed}"); } catch (Autodesk.AutoCAD.Runtime.Exception ex) { techProcess.DeleteProcessCommands(); if (ex.ErrorStatus == Autodesk.AutoCAD.Runtime.ErrorStatus.UserBreak) { Acad.Write("Расчет прерван"); } else { Acad.Alert("Ошибка при выполнении расчета", ex); } } catch (Exception ex) { techProcess.DeleteProcessCommands(); Acad.Alert("Ошибка при выполнении расчета", ex); } Acad.CloseProgressor(); Acad.Editor.UpdateScreen(); }
public ProcessCommand Play(ITechProcess techProcess, int commandIndex) { var commands = techProcess.ProcessCommands.Skip(commandIndex).ToList(); Acad.CreateProgressor("Проигрывание обработки"); Acad.SetLimitProgressor(commands.Count); foreach (var command in commands) { Acad.RegenToolObject(techProcess.Tool, command.HasTool, command.ToolLocation, techProcess.MachineType == MachineType.Donatoni); if (!Acad.ReportProgressor(false)) { SelectProcessCommand(techProcess, command); return(command); } System.Threading.Thread.Sleep(30); } Acad.CloseProgressor(); return(commands.First()); }