diff --git a/MatterControlLib/CustomWidgets/GCodeTurtle.cs b/MatterControlLib/CustomWidgets/GCodeSketch.cs similarity index 94% rename from MatterControlLib/CustomWidgets/GCodeTurtle.cs rename to MatterControlLib/CustomWidgets/GCodeSketch.cs index 1312690de..dbed703cc 100644 --- a/MatterControlLib/CustomWidgets/GCodeTurtle.cs +++ b/MatterControlLib/CustomWidgets/GCodeSketch.cs @@ -36,7 +36,10 @@ using MatterHackers.VectorMath; namespace MatterHackers.MatterControl { - public class GCodeTurtle : IDisposable + /// + /// Build GCode instructions from simple commands like MoveTo/LineTo/DrawRectangle + /// + public class GCodeSketch : IDisposable { private StringBuilder sb; private StringWriter writer; @@ -44,7 +47,7 @@ namespace MatterHackers.MatterControl public Affine Transform { get; set; } = Affine.NewIdentity(); - public GCodeTurtle() + public GCodeSketch() { sb = new StringBuilder(); writer = new StringWriter(sb); @@ -137,7 +140,7 @@ namespace MatterHackers.MatterControl writer.Dispose(); } - internal void Draw(RectangleDouble rect) + internal void DrawRectangle(RectangleDouble rect) { this.MoveTo(rect.Left, rect.Bottom); diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs index 1179a5aa2..64c85a434 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs @@ -108,13 +108,13 @@ namespace MatterHackers.MatterControl // Replace with calibration template code Task.Run(() => { - var turtle = new GCodeTurtle(); + var gcodeSketch = new GCodeSketch(); var vertical = true; if (vertical) { //turtle.Transform = Affine.NewTranslation(90, 160); - turtle.Transform = Affine.NewRotation(MathHelper.DegreesToRadians(90)) * Affine.NewTranslation(110, 45); + gcodeSketch.Transform = Affine.NewRotation(MathHelper.DegreesToRadians(90)) * Affine.NewTranslation(110, 45); } var rect = new RectangleDouble(0, 0, 123, 30); @@ -125,10 +125,10 @@ namespace MatterHackers.MatterControl int towerSize = 10; - turtle.Speed = (int)(printer.Settings.GetValue(SettingsKey.first_layer_speed) * 60); + gcodeSketch.Speed = (int)(printer.Settings.GetValue(SettingsKey.first_layer_speed) * 60); double y1 = rect.Bottom; - turtle.MoveTo(rect.Left, y1); + gcodeSketch.MoveTo(rect.Left, y1); var towerRect = new RectangleDouble(0, 0, towerSize, towerSize); towerRect.Offset(originalRect.Left - towerSize, originalRect.Bottom); @@ -137,24 +137,24 @@ namespace MatterHackers.MatterControl while (towerRect.Width > 4) { towerRect.Inflate(-nozzleWidth); - turtle.Draw(towerRect); + gcodeSketch.DrawRectangle(towerRect); } // Draw box for (var i = 0; i < 3; i++) { rect.Inflate(-nozzleWidth); - turtle.Draw(rect); + gcodeSketch.DrawRectangle(rect); } y1 = rect.YCenter + (nozzleWidth / 2); // Draw centerline - turtle.MoveTo(rect.Left, y1); - turtle.LineTo(rect.Right, y1); + gcodeSketch.MoveTo(rect.Left, y1); + gcodeSketch.LineTo(rect.Right, y1); y1 += nozzleWidth; - turtle.MoveTo(rect.Right, y1); - turtle.LineTo(rect.Left, y1); + gcodeSketch.MoveTo(rect.Right, y1); + gcodeSketch.LineTo(rect.Left, y1); y1 -= nozzleWidth / 2; @@ -173,25 +173,25 @@ namespace MatterHackers.MatterControl // Draw calibration lines for (var i = 0; i <= 40; i++) { - turtle.MoveTo(x, up ? y1 : y2); + gcodeSketch.MoveTo(x, up ? y1 : y2); if ((i % 5 == 0)) { - turtle.LineTo(x, y3); + gcodeSketch.LineTo(x, y3); - var currentPos = turtle.CurrentPosition; + var currentPos = gcodeSketch.CurrentPosition; - turtle.Speed = 500; + gcodeSketch.Speed = 500; - PrintLineEnd(turtle, drawGlpyphs, i, currentPos); + PrintLineEnd(gcodeSketch, drawGlpyphs, i, currentPos); - turtle.Speed = 1800; + gcodeSketch.Speed = 1800; - turtle.MoveTo(x, y3); - turtle.MoveTo(x, y2); + gcodeSketch.MoveTo(x, y3); + gcodeSketch.MoveTo(x, y2); } - turtle.LineTo(x, up ? y2 : y1); + gcodeSketch.LineTo(x, up ? y2 : y1); x = x + step; @@ -202,25 +202,25 @@ namespace MatterHackers.MatterControl y1 = rect.Top + (nozzleWidth * .5); y2 = y1 - sectionHeight + (nozzleWidth * .5); - turtle.WriteRaw("T1"); - turtle.ResetE(); + gcodeSketch.WriteRaw("T1"); + gcodeSketch.ResetE(); - turtle.MoveTo(rect.Left, rect.Top); + gcodeSketch.MoveTo(rect.Left, rect.Top); towerRect = new RectangleDouble(0, 0, towerSize, towerSize); towerRect.Offset(originalRect.Left - towerSize, originalRect.Top - towerSize); - turtle.PenDown(); + gcodeSketch.PenDown(); - turtle.Speed = 800; + gcodeSketch.Speed = 800; // Draw purge box while (towerRect.Width > 4) { towerRect.Inflate(-nozzleWidth); - turtle.Draw(towerRect); + gcodeSketch.DrawRectangle(towerRect); } - turtle.Speed = 1000; + gcodeSketch.Speed = 1000; up = true; @@ -240,17 +240,17 @@ namespace MatterHackers.MatterControl // Draw calibration lines for (var i = 0; i <= 40; i++) { - turtle.MoveTo(x + activeOffsets[i], up ? y1 : y2, retract: true); - turtle.LineTo(x + activeOffsets[i], up ? y2 : y1); + gcodeSketch.MoveTo(x + activeOffsets[i], up ? y1 : y2, retract: true); + gcodeSketch.LineTo(x + activeOffsets[i], up ? y2 : y1); x = x + step; up = !up; } - turtle.PenUp(); + gcodeSketch.PenUp(); - string gcode = turtle.ToGCode(); + string gcode = gcodeSketch.ToGCode(); Console.WriteLine("--------------------------------------------------"); Console.WriteLine(gcode); @@ -272,7 +272,7 @@ namespace MatterHackers.MatterControl base.OnLoad(args); } - private static void PrintLineEnd(GCodeTurtle turtle, bool drawGlpyphs, int i, Vector2 currentPos) + private static void PrintLineEnd(GCodeSketch turtle, bool drawGlpyphs, int i, Vector2 currentPos) { if (drawGlpyphs && CalibrationLine.Glyphs.TryGetValue(i, out IVertexSource vertexSource)) {