예제 #1
0
        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)}}}";
        }
예제 #2
0
        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();
        }
예제 #3
0
        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();
        }
예제 #4
0
파일: CamDocument.cs 프로젝트: 15831944/CAM
 private void DeleteProcessing(ITechProcess techProcess)
 {
     Acad.DeleteObjects(techProcess.ToolpathObjectIds);
     Acad.DeleteExtraObjects();
     techProcess.DeleteProcessCommands();
 }