Пример #1
0
            private string Traverse(Point3d from, Line line, GCodeConfig config)
            {
                string gcode = "";

                if (from.DistanceTo(line.StartPoint.Add(offset)) <= config.Tolerance)
                {
                    gcode += $"G01 {config.Formatter.Format2D(line.EndPoint.Add(offset))};\n";


                    foreach (ObjectId id in Utils.SelectAroundPoint(line.EndPoint.Add(offset), config))
                    {
                        if (objectIds.Contains(id))
                        {
                            objectIds.Remove(id);
                            foreach (Type type in config.AvailableTypes)
                            {
                                try
                                {
                                    gcode += Traverse(line.EndPoint.Add(offset), (dynamic)Convert.ChangeType(transaction.GetObject(id, OpenMode.ForRead), type), config);
                                }
                                catch (Exception) { }
                            }
                        }
                    }

                    gcode += (!config.AdditionalArguments.Contains("--no-return")) ? $"G01 {config.Formatter.Format2D(line.StartPoint.Add(offset))};\n" : "";
                }
                else
                {
                    gcode += $"G01 {config.Formatter.Format2D(line.StartPoint.Add(offset))};\n";


                    foreach (ObjectId id in Utils.SelectAroundPoint(line.StartPoint.Add(offset), config))
                    {
                        if (objectIds.Contains(id))
                        {
                            objectIds.Remove(id);
                            foreach (Type type in config.AvailableTypes)
                            {
                                try
                                {
                                    gcode += Traverse(line.StartPoint.Add(offset), (dynamic)Convert.ChangeType(transaction.GetObject(id, OpenMode.ForRead), type), config);
                                }
                                catch (Exception) { }
                            }
                        }
                    }

                    gcode += (!config.AdditionalArguments.Contains("--no-return")) ? $"G01 {config.Formatter.Format2D(line.EndPoint.Add(offset))};\n" : "";
                }
                return(gcode);
            }
Пример #2
0
            internal override string Process(ObjectIdCollection objects, GCodeConfig config)
            {
                Utils.Init(out Editor editor);
                offset = editor.CurrentUserCoordinateSystem.Translation;
                offset = offset.Negate();
                Point3d point = editor.GetPoint("Select starting point: ").Value;

                objectIds = objects;
                foreach (ObjectId id in objectIds)
                {
                    Utils.Explode(id, ref objectIds);
                }
                using (this.transaction = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction())
                    return(Traverse(point, config));
            }
Пример #3
0
            internal override ObjectIdCollection Select(GCodeConfig config)
            {
                Utils.Init(out Editor editor);
                PromptSelectionResult res = editor.GetSelection(new PromptSelectionOptions()
                {
                    MessageForAdding = "Select objects: "
                },
                                                                new SelectionFilter(config.Filter));

                if (!(res.Status == PromptStatus.OK))
                {
                    return(new ObjectIdCollection());
                }

                return(new ObjectIdCollection(res.Value.GetObjectIds()));
            }
Пример #4
0
            private string Traverse(Point3d point, GCodeConfig config)
            {
                string gcode = ((!config.AdditionalArguments.Contains("--no-entry")) ? $"G00 {config.Formatter.Format2D(point.Add(new Vector3d(0, 1, 0)))};\n" : "") +
                               $"G01 {config.Formatter.Format2D(point)};\n";

                foreach (ObjectId id in Utils.SelectAroundPoint(point, config))
                {
                    if (objectIds.Contains(id))
                    {
                        objectIds.Remove(id);
                        foreach (Type type in config.AvailableTypes)
                        {
                            try
                            {
                                gcode += Traverse(point, (dynamic)Convert.ChangeType(transaction.GetObject(id, OpenMode.ForRead), type), config);
                            }
                            catch (Exception) { }
                        }
                    }
                }
                gcode += (!config.AdditionalArguments.Contains("--no-return")) ? $"G01 {config.Formatter.Format2D(point)};\n" : "";
                gcode += (!config.AdditionalArguments.Contains("--no-entry")) ? $"G01 {config.Formatter.Format2D(point.Add(new Vector3d(0, 1, 0)))};\n" : "";
                return(gcode);
            }
Пример #5
0
 internal abstract string Process(ObjectIdCollection objects, GCodeConfig config);
Пример #6
0
 internal abstract ObjectIdCollection Select(GCodeConfig config);