예제 #1
0
 public List <ITechOperation> CreateTechOperations(ITechProcess techProcess, string techOperationName = "Все операции") =>
 !techProcess.Validate()
         ? new List <ITechOperation>()
         : techOperationName == "Все операции"
             ? techProcess.CreateTechOperations()
             : new List <ITechOperation>
 {
     Activator.CreateInstance(_techOperationTypes[techProcess.GetType()][techOperationName], new object[] { techProcess, techOperationName }) as ITechOperation
 };
예제 #2
0
        public List <TechOperation> CreateTechOperations(ITechProcess techProcess, string techOperationName = "Все операции")
        {
            if (!techProcess.Validate())
            {
                return(new List <TechOperation>());
            }
            if (techOperationName == "Все операции")
            {
                return(techProcess.CreateTechOperations());
            }
            var techOperation = (TechOperation)Activator.CreateInstance(_techOperationTypes[techProcess.GetType()][techOperationName]);

            techOperation.Setup(techProcess, techOperationName);
            return(new List <TechOperation> {
                techOperation
            });
        }
예제 #3
0
파일: CamDocument.cs 프로젝트: 15831944/CAM
        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();
        }