Beispiel #1
0
 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;
 }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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());
        }