public ParamsView AddOrigin() { var originX = _type.GetProperty("OriginX"); var originY = _type.GetProperty("OriginY"); var originObject = _type.GetField(nameof(MillingTechProcess.OriginObject)); var selector = CreateSelector("Начало координат", "۞"); var textBox = selector.Controls[0]; BindingSource.DataSourceChanged += (s, e) => RefreshText(); textBox.Enter += (s, e) => Acad.SelectObjectIds((ObjectId[])originObject?.GetValue(ParamsObject)); var button = selector.Controls[1]; button.Click += (s, e) => { Interaction.SetActiveDocFocus(); var point = Interaction.GetPoint("\nВыберите точку начала координат"); if (!point.IsNull()) { originX.SetValue(ParamsObject, point.X.Round(3)); originY.SetValue(ParamsObject, point.Y.Round(3)); RefreshText(); if (originObject.GetValue(ParamsObject) != null) { Acad.DeleteObjects((ObjectId[])originObject.GetValue(ParamsObject)); } originObject.SetValue(ParamsObject, Acad.CreateOriginObject(point)); } }; return(this); void RefreshText() => textBox.Text = $"{{{originX.GetValue(ParamsObject)}, {originY.GetValue(ParamsObject)}}}"; }
public void BuildProcessing(ITechProcess techProcess) { try { Acad.Write($"Выполняется расчет обработки по техпроцессу {techProcess.Caption} ..."); var stopwatch = Stopwatch.StartNew(); Acad.DeleteObjects(techProcess.ToolpathObjectIds); Acad.DeleteExtraObjects(); 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.Editor.UpdateScreen(); }
public void PartialProcessing(ITechProcess techProcess, ProcessCommand processCommand) { Acad.Write($"Выполняется формирование программы обработки по техпроцессу {techProcess.Caption} с команды номер {processCommand.Number}"); var toolpathObjectIds = techProcess.ToolpathObjectIds.ToList(); techProcess.SkipProcessing(processCommand); Acad.DeleteObjects(toolpathObjectIds.Except(techProcess.ToolpathObjectIds)); Acad.Editor.UpdateScreen(); }
private void DeleteProcessing(ITechProcess techProcess) { Acad.DeleteObjects(techProcess.ToolpathObjectIds); Acad.DeleteExtraObjects(); techProcess.DeleteProcessCommands(); }