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