From a3d4a65a46340b7723097a16699ffda1e83df168 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Tue, 26 Feb 2019 08:50:15 -0800 Subject: [PATCH 01/18] Eliminate serialized layer cascade - Issue MatterHackers/MCCentral#5078 defaultLayerCascade serialized into PrinterSettings --- MatterControl.Printing/Settings/PrinterSettings.cs | 5 ++++- MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/MatterControl.Printing/Settings/PrinterSettings.cs b/MatterControl.Printing/Settings/PrinterSettings.cs index abe4c7a60..401b939c5 100644 --- a/MatterControl.Printing/Settings/PrinterSettings.cs +++ b/MatterControl.Printing/Settings/PrinterSettings.cs @@ -676,7 +676,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } - public IEnumerable defaultLayerCascade + private IEnumerable defaultLayerCascade { get { @@ -703,6 +703,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration yield return this.BaseLayer; } } + + public IEnumerable GetDefaultLayerCascade() => defaultLayerCascade; + [JsonIgnore] public SettingsHelpers Helpers { get; set; } diff --git a/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs b/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs index 7c3d85be6..4e9bcccd4 100644 --- a/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs +++ b/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs @@ -368,7 +368,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } - public void UpdateStyle() { if (settingsContext.ContainsKey(settingData.SlicerConfigName)) @@ -378,7 +377,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration case NamedSettingsLayers.All: if (settingData.ShowAsOverride) { - var defaultCascade = printer.Settings.defaultLayerCascade; + var defaultCascade = printer.Settings.GetDefaultLayerCascade(); var firstParentValue = printer.Settings.GetValueAndLayerName(settingData.SlicerConfigName, defaultCascade.Skip(1)); var (currentValue, layerName) = printer.Settings.GetValueAndLayerName(settingData.SlicerConfigName, defaultCascade); From eb9751eb5f03f37da046e3aebf87999d885e21c8 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 11:19:50 -0800 Subject: [PATCH 02/18] Use inverse transform on currentPos --- MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index e2cafefb1..ea22a1e95 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -134,6 +134,9 @@ namespace MatterHackers.MatterControl bool drawGlpyphs = false; + var inverseTransform = gcodeSketch.Transform; + inverseTransform.invert(); + // Draw calibration lines for (var i = 0; i <= 40; i++) { @@ -144,6 +147,7 @@ namespace MatterHackers.MatterControl gcodeSketch.LineTo(x, y3); var currentPos = gcodeSketch.CurrentPosition; + currentPos = inverseTransform.Transform(currentPos); gcodeSketch.Speed = 500; From 63474be91d3029f28df1f654ba6dd3c031a29494 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 11:21:24 -0800 Subject: [PATCH 03/18] Fix spelling --- .../CustomWidgets/NozzleOffsetTemplatePrinter.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index ea22a1e95..a391173e5 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -132,7 +132,7 @@ namespace MatterHackers.MatterControl y2 = y1 - sectionHeight - (nozzleWidth * 1.5); y3 = y2 - 5; - bool drawGlpyphs = false; + bool drawGlyphs = false; var inverseTransform = gcodeSketch.Transform; inverseTransform.invert(); @@ -151,7 +151,7 @@ namespace MatterHackers.MatterControl gcodeSketch.Speed = 500; - PrintLineEnd(gcodeSketch, drawGlpyphs, i, currentPos); + PrintLineEnd(gcodeSketch, drawGlyphs, i, currentPos); gcodeSketch.Speed = 1800; @@ -230,9 +230,9 @@ namespace MatterHackers.MatterControl } } - private static void PrintLineEnd(GCodeSketch turtle, bool drawGlpyphs, int i, Vector2 currentPos) + private static void PrintLineEnd(GCodeSketch turtle, bool drawGlyphs, int i, Vector2 currentPos) { - if (drawGlpyphs && CalibrationLine.Glyphs.TryGetValue(i, out IVertexSource vertexSource)) + if (drawGlyphs && CalibrationLine.Glyphs.TryGetValue(i, out IVertexSource vertexSource)) { var flattened = new FlattenCurves(vertexSource); From b105c084d6a1fdf43eccb97cb80ad52d616b35f8 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 12:21:23 -0800 Subject: [PATCH 04/18] Reorder members --- MatterControlLib/CustomWidgets/GCodeSketch.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/MatterControlLib/CustomWidgets/GCodeSketch.cs b/MatterControlLib/CustomWidgets/GCodeSketch.cs index cb27ac6c5..0fe4aca4a 100644 --- a/MatterControlLib/CustomWidgets/GCodeSketch.cs +++ b/MatterControlLib/CustomWidgets/GCodeSketch.cs @@ -44,8 +44,9 @@ namespace MatterHackers.MatterControl private StringBuilder sb; private StringWriter writer; private double currentE = 0; - - public Affine Transform { get; set; } = Affine.NewIdentity(); + private int _speed = 1500; + private double retractAmount = 1.2; + private bool retracted = false; public GCodeSketch() { @@ -55,7 +56,7 @@ namespace MatterHackers.MatterControl public Vector2 CurrentPosition { get; private set; } - private int _speed = 1500; + public Affine Transform { get; set; } = Affine.NewIdentity(); public int Speed { @@ -81,9 +82,6 @@ namespace MatterHackers.MatterControl this.MoveTo(new Vector2(x, y), retract); } - private double retractAmount = 1.2; - private bool retracted = false; - public void MoveTo(Vector2 position, bool retract = false) { //if (retract) @@ -143,7 +141,7 @@ namespace MatterHackers.MatterControl writer.Dispose(); } - internal void DrawRectangle(RectangleDouble rect) + public void DrawRectangle(RectangleDouble rect) { this.MoveTo(rect.Left, rect.Bottom); From 932e0fad09dedcf538e377182d1ceaaba6de122d Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 12:30:27 -0800 Subject: [PATCH 05/18] Restore retraction support, add methods for consistency --- MatterControlLib/CustomWidgets/GCodeSketch.cs | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/MatterControlLib/CustomWidgets/GCodeSketch.cs b/MatterControlLib/CustomWidgets/GCodeSketch.cs index 0fe4aca4a..dc7ea287c 100644 --- a/MatterControlLib/CustomWidgets/GCodeSketch.cs +++ b/MatterControlLib/CustomWidgets/GCodeSketch.cs @@ -54,6 +54,12 @@ namespace MatterHackers.MatterControl writer = new StringWriter(sb); } + public double RetractLength { get; set; } = 1.2; + + public int RetractSpeed { get; set; } + + public int TravelSpeed { get; set; } + public Vector2 CurrentPosition { get; private set; } public Affine Transform { get; set; } = Affine.NewIdentity(); @@ -84,12 +90,10 @@ namespace MatterHackers.MatterControl public void MoveTo(Vector2 position, bool retract = false) { - //if (retract) - //{ - // currentE -= retractAmount; - // retracted = true; - // writer.WriteLine("G1 E{0:0.###}", currentE); - //} + if (retract) + { + this.Retract(); + } position = Transform.Transform(position); @@ -97,14 +101,31 @@ namespace MatterHackers.MatterControl this.CurrentPosition = position; } + private void Retract() + { + currentE -= this.RetractLength; + retracted = true; + writer.WriteLine("G1 E{0:0.###} F{1:0.###}", currentE, this.RetractSpeed); + } + + private void Unretract() + { + // Unretract + currentE += RetractLength; + retracted = false; + writer.WriteLine("G1 E{0:0.###} F{1:0.###}", currentE, this.RetractSpeed); + } + public void PenUp() { writer.WriteLine("G1 Z0.8 E{0:0.###}", currentE - 1.2); + this.Retract(); } public void PenDown() { writer.WriteLine("G1 Z0.2 E{0:0.###}", currentE); + this.Unretract(); } public void LineTo(double x, double y) @@ -114,12 +135,11 @@ namespace MatterHackers.MatterControl public void LineTo(Vector2 position) { - //if (retracted) - //{ - // // Unretract - // currentE += retractAmount; - // writer.WriteLine("G1 E{0:0.###}", currentE); - //} + bool hadRetract = retracted; + if (retracted) + { + this.Unretract(); + } position = Transform.Transform(position); From 9a0fb87a3065dc4de5f56ac013bf515629db21fa Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 13:36:11 -0800 Subject: [PATCH 06/18] Use types defined in settings - Convert int to double --- MatterControlLib/CustomWidgets/GCodeSketch.cs | 21 +++++-------------- .../NozzleOffsetCalibrationPage.cs | 6 +++++- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/MatterControlLib/CustomWidgets/GCodeSketch.cs b/MatterControlLib/CustomWidgets/GCodeSketch.cs index dc7ea287c..0bfe0ef27 100644 --- a/MatterControlLib/CustomWidgets/GCodeSketch.cs +++ b/MatterControlLib/CustomWidgets/GCodeSketch.cs @@ -44,8 +44,6 @@ namespace MatterHackers.MatterControl private StringBuilder sb; private StringWriter writer; private double currentE = 0; - private int _speed = 1500; - private double retractAmount = 1.2; private bool retracted = false; public GCodeSketch() @@ -56,26 +54,17 @@ namespace MatterHackers.MatterControl public double RetractLength { get; set; } = 1.2; - public int RetractSpeed { get; set; } + public double RetractSpeed { get; set; } - public int TravelSpeed { get; set; } + public double TravelSpeed { get; set; } public Vector2 CurrentPosition { get; private set; } public Affine Transform { get; set; } = Affine.NewIdentity(); - public int Speed - { - get => _speed; - set - { - if (value != _speed) - { - _speed = value; - writer.WriteLine("G1 F{0}", _speed); - } - } - } + public double Speed { get; set; } = 1500; + + public double RetractLift { get; internal set; } public void SetTool(string toolChange) { diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs index f3ed4b303..87b20e4f3 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs @@ -131,7 +131,11 @@ namespace MatterHackers.MatterControl { var gcodeSketch = new GCodeSketch() { - Speed = (int)(printer.Settings.GetValue(SettingsKey.first_layer_speed) * 60) + Speed = (int)(printer.Settings.GetValue(SettingsKey.first_layer_speed) * 60), + RetractLength = printer.Settings.GetValue(SettingsKey.retract_length), + RetractSpeed = printer.Settings.GetValue(SettingsKey.retract_speed) * 60, + RetractLift = printer.Settings.GetValue(SettingsKey.retract_lift), + TravelSpeed = printer.Settings.GetValue(SettingsKey.travel_speed) * 60, }; //gcodeSketch.WriteRaw("G92 E0"); From fd9e014a2659ff12e367abdfe1ec303bfaa42a86 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 13:37:57 -0800 Subject: [PATCH 07/18] Add WriteSpeedLine for consistent speed handling --- MatterControlLib/CustomWidgets/GCodeSketch.cs | 46 +++++++++++++++++-- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/MatterControlLib/CustomWidgets/GCodeSketch.cs b/MatterControlLib/CustomWidgets/GCodeSketch.cs index 0bfe0ef27..b73546635 100644 --- a/MatterControlLib/CustomWidgets/GCodeSketch.cs +++ b/MatterControlLib/CustomWidgets/GCodeSketch.cs @@ -45,6 +45,7 @@ namespace MatterHackers.MatterControl private StringWriter writer; private double currentE = 0; private bool retracted = false; + private double currentSpeed = 0; public GCodeSketch() { @@ -86,7 +87,13 @@ namespace MatterHackers.MatterControl position = Transform.Transform(position); - writer.WriteLine("G1 X{0:0.###} Y{1:0.###}", position.X, position.Y); + this.WriteSpeedLine( + string.Format( + "G1 X{0:0.###} Y{1:0.###}", + position.X, + position.Y), + this.TravelSpeed); + this.CurrentPosition = position; } @@ -94,7 +101,10 @@ namespace MatterHackers.MatterControl { currentE -= this.RetractLength; retracted = true; - writer.WriteLine("G1 E{0:0.###} F{1:0.###}", currentE, this.RetractSpeed); + + this.WriteSpeedLine( + string.Format("G1 E{0:0.###}", currentE), + this.RetractSpeed); } private void Unretract() @@ -102,7 +112,10 @@ namespace MatterHackers.MatterControl // Unretract currentE += RetractLength; retracted = false; - writer.WriteLine("G1 E{0:0.###} F{1:0.###}", currentE, this.RetractSpeed); + + this.WriteSpeedLine( + string.Format("G1 E{0:0.###}", currentE), + this.RetractSpeed); } public void PenUp() @@ -124,7 +137,6 @@ namespace MatterHackers.MatterControl public void LineTo(Vector2 position) { - bool hadRetract = retracted; if (retracted) { this.Unretract(); @@ -135,11 +147,35 @@ namespace MatterHackers.MatterControl var delta = this.CurrentPosition - position; currentE += delta.Length * 0.06; - writer.WriteLine("G1 X{0} Y{1} E{2:0.###}", position.X, position.Y, currentE); + this.WriteSpeedLine( + string.Format( + "G1 X{0} Y{1} E{2:0.###}", + position.X, + position.Y, + currentE), + this.Speed); this.CurrentPosition = position; } + /// + /// Write the given line, optionally pushing speeds if needed + /// + /// The line to write + /// The target movement speed + public void WriteSpeedLine(string line, double targetSpeed) + { + if (currentSpeed == targetSpeed) + { + writer.WriteLine(line); + } + else + { + currentSpeed = targetSpeed; + writer.WriteLine("{0} F{1:0.###}", line, targetSpeed); + } + } + public string ToGCode() { return sb.ToString(); From ca1911e1eac979b176dffd74e8a941f105fe0f49 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 13:38:54 -0800 Subject: [PATCH 08/18] Removed hard-coded lift height, use RetractLift --- MatterControlLib/CustomWidgets/GCodeSketch.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/MatterControlLib/CustomWidgets/GCodeSketch.cs b/MatterControlLib/CustomWidgets/GCodeSketch.cs index b73546635..ef2965517 100644 --- a/MatterControlLib/CustomWidgets/GCodeSketch.cs +++ b/MatterControlLib/CustomWidgets/GCodeSketch.cs @@ -46,6 +46,7 @@ namespace MatterHackers.MatterControl private double currentE = 0; private bool retracted = false; private double currentSpeed = 0; + private double layerHeight = 0.2; public GCodeSketch() { @@ -120,13 +121,18 @@ namespace MatterHackers.MatterControl public void PenUp() { - writer.WriteLine("G1 Z0.8 E{0:0.###}", currentE - 1.2); this.Retract(); + this.WriteSpeedLine( + string.Format("G1 Z{0:0.###}", layerHeight + this.RetractLift), + this.TravelSpeed); } public void PenDown() { - writer.WriteLine("G1 Z0.2 E{0:0.###}", currentE); + this.WriteSpeedLine( + string.Format("G1 Z{0:0.###}", layerHeight), + this.TravelSpeed); + this.Unretract(); } From eac548c041281162f231caede24dd30d6aaa4e2e Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 14:39:59 -0800 Subject: [PATCH 09/18] Consolidate line end logic into PrintLineEnd() --- .../NozzleOffsetCalibrationPage.cs | 4 +-- .../NozzleOffsetTemplatePrinter.cs | 27 ++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs index 87b20e4f3..44993564f 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs @@ -185,8 +185,8 @@ namespace MatterHackers.MatterControl public override void OnClosed(EventArgs e) { - if (printer.Connection.CommunicationState == PrinterCommunication.CommunicationStates.Printing || - printer.Connection.CommunicationState == PrinterCommunication.CommunicationStates.Paused) + if (printer.Connection.CommunicationState == CommunicationStates.Printing || + printer.Connection.CommunicationState == CommunicationStates.Paused) { printer.CancelPrint(); } diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index a391173e5..3d94446c1 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -132,7 +132,7 @@ namespace MatterHackers.MatterControl y2 = y1 - sectionHeight - (nozzleWidth * 1.5); y3 = y2 - 5; - bool drawGlyphs = false; + bool drawGlyphs = true; var inverseTransform = gcodeSketch.Transform; inverseTransform.invert(); @@ -149,14 +149,7 @@ namespace MatterHackers.MatterControl var currentPos = gcodeSketch.CurrentPosition; currentPos = inverseTransform.Transform(currentPos); - gcodeSketch.Speed = 500; - PrintLineEnd(gcodeSketch, drawGlyphs, i, currentPos); - - gcodeSketch.Speed = 1800; - - gcodeSketch.MoveTo(x, y3); - gcodeSketch.MoveTo(x, y2); } gcodeSketch.LineTo(x, up ? y2 : y1); @@ -195,7 +188,7 @@ namespace MatterHackers.MatterControl // Draw calibration lines for (var i = 0; i <= 40; i++) { - gcodeSketch.MoveTo(x + activeOffsets[i], up ? y1 : y2, retract: true); + gcodeSketch.MoveTo(x + activeOffsets[i], up ? y1 : y2, retract: false); gcodeSketch.LineTo(x + activeOffsets[i], up ? y2 : y1); x = x + step; @@ -232,6 +225,9 @@ namespace MatterHackers.MatterControl private static void PrintLineEnd(GCodeSketch turtle, bool drawGlyphs, int i, Vector2 currentPos) { + var originalSpeed = turtle.Speed; + turtle.Speed = Math.Min(400, turtle.Speed); + if (drawGlyphs && CalibrationLine.Glyphs.TryGetValue(i, out IVertexSource vertexSource)) { var flattened = new FlattenCurves(vertexSource); @@ -240,10 +236,11 @@ namespace MatterHackers.MatterControl var firstItem = verticies.First(); var position = turtle.CurrentPosition; - var scale = 0.32; + var scale = 0.3; if (firstItem.command != ShapePath.FlagsAndCommand.MoveTo) { + turtle.PenUp(); turtle.MoveTo((firstItem.position * scale) + currentPos); } @@ -254,7 +251,9 @@ namespace MatterHackers.MatterControl switch (item.command) { case ShapePath.FlagsAndCommand.MoveTo: + turtle.PenUp(); turtle.MoveTo((item.position * scale) + currentPos); + turtle.PenDown(); break; case ShapePath.FlagsAndCommand.LineTo: @@ -272,6 +271,14 @@ namespace MatterHackers.MatterControl { turtle.LineTo((firstItem.position * scale) + currentPos); } + + // Restore original speed + turtle.Speed = originalSpeed; + + // Return to original position + turtle.PenUp(); + turtle.MoveTo(currentPos); + turtle.PenDown(); } } } From 7f6fcd55c9a2b5497cecee77d4f7ed8805c09525 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 14:41:55 -0800 Subject: [PATCH 10/18] Reduce over extrudes due to line duplication --- .../NozzleOffsetTemplatePrinter.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index 3d94446c1..8bf6f1ceb 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -230,6 +230,7 @@ namespace MatterHackers.MatterControl if (drawGlyphs && CalibrationLine.Glyphs.TryGetValue(i, out IVertexSource vertexSource)) { + turtle.WriteRaw("; LineEnd Marker"); var flattened = new FlattenCurves(vertexSource); var verticies = flattened.Vertices(); @@ -267,7 +268,10 @@ namespace MatterHackers.MatterControl } } - if (!closed) + bool atStartingPosition = position == turtle.CurrentPosition; + + if (!closed + && !atStartingPosition) { turtle.LineTo((firstItem.position * scale) + currentPos); } @@ -275,10 +279,13 @@ namespace MatterHackers.MatterControl // Restore original speed turtle.Speed = originalSpeed; - // Return to original position - turtle.PenUp(); - turtle.MoveTo(currentPos); - turtle.PenDown(); + if (!atStartingPosition) + { + // Return to original position + turtle.PenUp(); + turtle.MoveTo(currentPos); + turtle.PenDown(); + } } } } From b8230cb66da4a0102be80c169d30d1f52837179f Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 18:08:02 -0800 Subject: [PATCH 11/18] Improve symbol styling to differentiate between +/- direction --- .../CustomWidgets/CalibrationLine.cs | 19 +++++------------ .../NozzleOffsetTemplatePrinter.cs | 21 ++++++++++--------- 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/MatterControlLib/CustomWidgets/CalibrationLine.cs b/MatterControlLib/CustomWidgets/CalibrationLine.cs index 14a338148..beffeeeb6 100644 --- a/MatterControlLib/CustomWidgets/CalibrationLine.cs +++ b/MatterControlLib/CustomWidgets/CalibrationLine.cs @@ -131,13 +131,13 @@ namespace MatterHackers.MatterControl var centerX = this.LocalBounds.XCenter + .5; var centerY = this.LocalBounds.YCenter - .5; - var start = new Vector2(centerX, (glyph == null) ? 20 : 9); + var start = new Vector2(centerX, (glyph == null) ? 20 : (this.IsNegative) ? 6 : 9 ); var end = new Vector2(centerX, this.LocalBounds.Height); if (!verticalLine) { start = new Vector2(0, centerY); - end = new Vector2(this.LocalBounds.Width - ((glyph == null) ? 20 : 9), centerY); + end = new Vector2(this.LocalBounds.Width - ((glyph == null) ? 20 : (this.IsNegative) ? 6 : 9), centerY); } graphics2D.Line(start, end, lineColor, 1); @@ -145,23 +145,14 @@ namespace MatterHackers.MatterControl // Draw line end if (glyph != null) { + int offset = IsNegative ? 18 : 11; + graphics2D.Render( glyph, - verticalLine ? new Vector2(centerX, 11) : new Vector2(this.Width - 11, centerY), + verticalLine ? new Vector2(centerX, offset) : new Vector2(this.Width - offset, centerY), lineColor); } - // Draw negative adornment after glyphs - if (glyph != null - && this.IsNegative) - { - graphics2D.Line( - verticalLine ? new Vector2(centerX, 0) : new Vector2(this.Width - 5, centerY), - verticalLine ? new Vector2(centerX, 5) : new Vector2(this.Width, centerY), - lineColor, - 1); - } - base.OnDraw(graphics2D); } diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index 8bf6f1ceb..5848479d9 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -28,15 +28,10 @@ either expressed or implied, of the FreeBSD Project. */ using System; -using System.IO; using System.Linq; -using System.Threading; -using System.Threading.Tasks; using MatterHackers.Agg; using MatterHackers.Agg.Transform; using MatterHackers.Agg.VertexSource; -using MatterHackers.MatterControl.DataStorage; -using MatterHackers.MatterControl.PrinterCommunication; using MatterHackers.MatterControl.SlicerConfiguration; using MatterHackers.VectorMath; @@ -109,7 +104,7 @@ namespace MatterHackers.MatterControl // Perimeters rect = this.CreatePerimeters(gcodeSketch, rect); - double x, y2, y3; + double x, y2, y3, y4; double sectionHeight = rect.Height / 2; bool up = true; var step = (rect.Width - 3) / 40; @@ -130,7 +125,8 @@ namespace MatterHackers.MatterControl x = rect.Left + 1.5; y2 = y1 - sectionHeight - (nozzleWidth * 1.5); - y3 = y2 - 5; + y3 = y2 - 2; + y4 = y2 - 5; bool drawGlyphs = true; @@ -144,7 +140,12 @@ namespace MatterHackers.MatterControl if ((i % 5 == 0)) { - gcodeSketch.LineTo(x, y3); + gcodeSketch.LineTo(x, y4); + + if (i < 20) + { + gcodeSketch.MoveTo(x, y3); + } var currentPos = gcodeSketch.CurrentPosition; currentPos = inverseTransform.Transform(currentPos); @@ -203,7 +204,7 @@ namespace MatterHackers.MatterControl private RectangleDouble CreatePerimeters(GCodeSketch gcodeSketch, RectangleDouble rect) { gcodeSketch.WriteRaw("; CreatePerimeters"); - for (var i = 0; i < 3; i++) + for (var i = 0; i < 2; i++) { rect.Inflate(-nozzleWidth); gcodeSketch.DrawRectangle(rect); @@ -226,7 +227,7 @@ namespace MatterHackers.MatterControl private static void PrintLineEnd(GCodeSketch turtle, bool drawGlyphs, int i, Vector2 currentPos) { var originalSpeed = turtle.Speed; - turtle.Speed = Math.Min(400, turtle.Speed); + turtle.Speed = Math.Min(500, turtle.Speed); if (drawGlyphs && CalibrationLine.Glyphs.TryGetValue(i, out IVertexSource vertexSource)) { From 5b535d66da7c8d0ac9e40d80ceceb397bd959a5d Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 18:16:11 -0800 Subject: [PATCH 12/18] Flip Y calibration +/- direction --- MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs index 44993564f..8bf616716 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs @@ -78,10 +78,10 @@ namespace MatterHackers.MatterControl contentRow.AddChild(container); - container.AddChild(yOffsetWidget = new NozzleOffsetTemplateWidget(templatePrinter.ActiveOffsets, FlowDirection.TopToBottom, theme) + container.AddChild(yOffsetWidget = new NozzleOffsetTemplateWidget(templatePrinter.ActiveOffsets, FlowDirection.BottomToTop, theme) { Margin = new BorderDouble(top: 15), - Padding = new BorderDouble(top: 4), + Padding = new BorderDouble(bottom: 4), Width = 110 }); From 7c238615a944c5a628759b27bbee2e8aff1e6523 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 18:19:01 -0800 Subject: [PATCH 13/18] Reduce range from 1.5mm over 20 to 1.2mm over 20 --- .../CustomWidgets/NozzleOffsetTemplatePrinter.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index 5848479d9..b9207c942 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -52,13 +52,12 @@ namespace MatterHackers.MatterControl activeOffsets = new double[41]; activeOffsets[20] = 0; - var leftStep = 1.5d / 20; - var rightStep = 1.5d / 20; + var offsetStep = 1.2d / 20; for (var i = 1; i <= 20; i++) { - activeOffsets[20 - i] = i * leftStep * -1; - activeOffsets[20 + i] = i * rightStep; + activeOffsets[20 - i] = i * offsetStep * -1; + activeOffsets[20 + i] = i * offsetStep; } nozzleWidth = printer.Settings.GetValue(SettingsKey.nozzle_diameter); @@ -69,7 +68,6 @@ namespace MatterHackers.MatterControl public bool DebugMode { get; private set; } = false; - public void BuildTemplate(GCodeSketch gcodeSketch, bool verticalLayout) { gcodeSketch.SetTool("T0"); From 708daaf8418ebd42924c0966adf1172e42a5c487 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 18:19:10 -0800 Subject: [PATCH 14/18] Reduce flow --- MatterControlLib/CustomWidgets/GCodeSketch.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MatterControlLib/CustomWidgets/GCodeSketch.cs b/MatterControlLib/CustomWidgets/GCodeSketch.cs index ef2965517..8f7c4a854 100644 --- a/MatterControlLib/CustomWidgets/GCodeSketch.cs +++ b/MatterControlLib/CustomWidgets/GCodeSketch.cs @@ -151,7 +151,7 @@ namespace MatterHackers.MatterControl position = Transform.Transform(position); var delta = this.CurrentPosition - position; - currentE += delta.Length * 0.06; + currentE += delta.Length * 0.048; this.WriteSpeedLine( string.Format( From ebf81c21bb1a0567384a19c43c454042c62ef1a0 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 18:19:38 -0800 Subject: [PATCH 15/18] Use optimized for printing glyph paths --- .../CustomWidgets/CalibrationLine.cs | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/MatterControlLib/CustomWidgets/CalibrationLine.cs b/MatterControlLib/CustomWidgets/CalibrationLine.cs index beffeeeb6..672eb4c58 100644 --- a/MatterControlLib/CustomWidgets/CalibrationLine.cs +++ b/MatterControlLib/CustomWidgets/CalibrationLine.cs @@ -50,8 +50,7 @@ namespace MatterHackers.MatterControl static CalibrationLine() { - int glyphCenter = glyphSize / 2; - CalibrationLine.CreateGlyphs(glyphCenter); + CalibrationLine.CreateGlyphs(); } public CalibrationLine(FlowDirection parentDirection, int glyphIndex, ThemeConfig theme) @@ -156,42 +155,44 @@ namespace MatterHackers.MatterControl base.OnDraw(graphics2D); } - private static void CreateGlyphs(int glyphCenter) + private static void CreateGlyphs() { Glyphs = new Dictionary(); - var half = -(glyphSize / 2); + var half = glyphSize / 2; var triangle = new VertexStorage(); - triangle.MoveTo(0, 0); + triangle.MoveTo(half, glyphSize); + triangle.LineTo(0, 0); triangle.LineTo(glyphSize, 0); - triangle.LineTo(glyphSize / 2, glyphSize); + triangle.LineTo(half, glyphSize); triangle.ClosePolygon(); - //triangle.ClosePolygon(); - var square = new VertexStorage(); - square.MoveTo(0, 0); + square.MoveTo(half, glyphSize); + square.LineTo(0, glyphSize); + square.LineTo(0, 0); square.LineTo(glyphSize, 0); square.LineTo(glyphSize, glyphSize); - square.LineTo(0, glyphSize); + square.LineTo(half, glyphSize); square.ClosePolygon(); var diamond = new VertexStorage(); - diamond.MoveTo(glyphCenter, 0); - diamond.LineTo(glyphSize, glyphCenter); - diamond.LineTo(glyphCenter, glyphSize); - diamond.LineTo(0, glyphCenter); + diamond.MoveTo(half, glyphSize); + diamond.LineTo(0, half); + diamond.LineTo(half, 0); + diamond.LineTo(glyphSize, half); + diamond.LineTo(half, glyphSize); diamond.ClosePolygon(); - var circle = new Ellipse(new Vector2(glyphCenter, glyphCenter), glyphCenter); + var circle = new Ellipse(Vector2.Zero, half).Rotate(90, AngleType.Degrees).Translate(half, half); var center = new VertexStorage(); - center.MoveTo(0, 0); - center.LineTo(glyphCenter, glyphSize); - center.LineTo(glyphSize, 0); - center.LineTo(glyphCenter, glyphSize - 4); + center.MoveTo(half, glyphSize); center.LineTo(0, 0); + center.LineTo(half, glyphSize - 4); + center.LineTo(glyphSize, 0); + center.LineTo(half, glyphSize); center.ClosePolygon(); var transform = Affine.NewTranslation(-glyphSize / 2, -glyphSize); From ca13437cc23b61c99859f422cf5637ed7b4e8bca Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 18:40:00 -0800 Subject: [PATCH 16/18] Disable lift now that paths are optimized --- .../NozzleOffsetTemplatePrinter.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index b9207c942..38e2b80a9 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -222,7 +222,7 @@ namespace MatterHackers.MatterControl } } - private static void PrintLineEnd(GCodeSketch turtle, bool drawGlyphs, int i, Vector2 currentPos) + private static void PrintLineEnd(GCodeSketch turtle, bool drawGlyphs, int i, Vector2 currentPos, bool lift = false) { var originalSpeed = turtle.Speed; turtle.Speed = Math.Min(500, turtle.Speed); @@ -240,7 +240,11 @@ namespace MatterHackers.MatterControl if (firstItem.command != ShapePath.FlagsAndCommand.MoveTo) { - turtle.PenUp(); + if (lift) + { + turtle.PenUp(); + } + turtle.MoveTo((firstItem.position * scale) + currentPos); } @@ -251,9 +255,17 @@ namespace MatterHackers.MatterControl switch (item.command) { case ShapePath.FlagsAndCommand.MoveTo: - turtle.PenUp(); + if (lift) + { + turtle.PenUp(); + } + turtle.MoveTo((item.position * scale) + currentPos); - turtle.PenDown(); + + if (lift) + { + turtle.PenDown(); + } break; case ShapePath.FlagsAndCommand.LineTo: From 7985d4977428e6943dcc13d622c7e648b7404787 Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 18:56:44 -0800 Subject: [PATCH 17/18] Swap circle/chevron glyphs - circle at zero offset --- .../CustomWidgets/CalibrationLine.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/MatterControlLib/CustomWidgets/CalibrationLine.cs b/MatterControlLib/CustomWidgets/CalibrationLine.cs index 672eb4c58..02216a87e 100644 --- a/MatterControlLib/CustomWidgets/CalibrationLine.cs +++ b/MatterControlLib/CustomWidgets/CalibrationLine.cs @@ -187,23 +187,23 @@ namespace MatterHackers.MatterControl var circle = new Ellipse(Vector2.Zero, half).Rotate(90, AngleType.Degrees).Translate(half, half); - var center = new VertexStorage(); - center.MoveTo(half, glyphSize); - center.LineTo(0, 0); - center.LineTo(half, glyphSize - 4); - center.LineTo(glyphSize, 0); - center.LineTo(half, glyphSize); - center.ClosePolygon(); + var chevron = new VertexStorage(); + chevron.MoveTo(half, glyphSize); + chevron.LineTo(0, 0); + chevron.LineTo(half, glyphSize - 4); + chevron.LineTo(glyphSize, 0); + chevron.LineTo(half, glyphSize); + chevron.ClosePolygon(); var transform = Affine.NewTranslation(-glyphSize / 2, -glyphSize); Glyphs.Add(0, new VertexSourceApplyTransform(triangle, transform)); Glyphs.Add(5, new VertexSourceApplyTransform(diamond, transform)); Glyphs.Add(10, new VertexSourceApplyTransform(square, transform)); - Glyphs.Add(15, new VertexSourceApplyTransform(circle, transform)); + Glyphs.Add(15, new VertexSourceApplyTransform(chevron, transform)); - Glyphs.Add(20, new VertexSourceApplyTransform(center, transform)); + Glyphs.Add(20, new VertexSourceApplyTransform(circle, transform)); - Glyphs.Add(25, new VertexSourceApplyTransform(circle, transform)); + Glyphs.Add(25, new VertexSourceApplyTransform(chevron, transform)); Glyphs.Add(30, new VertexSourceApplyTransform(square, transform)); Glyphs.Add(35, new VertexSourceApplyTransform(diamond, transform)); Glyphs.Add(40, new VertexSourceApplyTransform(triangle, transform)); From 13671c484503906adf462593fa6c7c0c220a0d9a Mon Sep 17 00:00:00 2001 From: jlewin Date: Tue, 26 Feb 2019 19:04:23 -0800 Subject: [PATCH 18/18] Revise line end print speed --- MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index 38e2b80a9..3bae76762 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -225,7 +225,7 @@ namespace MatterHackers.MatterControl private static void PrintLineEnd(GCodeSketch turtle, bool drawGlyphs, int i, Vector2 currentPos, bool lift = false) { var originalSpeed = turtle.Speed; - turtle.Speed = Math.Min(500, turtle.Speed); + turtle.Speed = Math.Min(700, turtle.Speed); if (drawGlyphs && CalibrationLine.Glyphs.TryGetValue(i, out IVertexSource vertexSource)) {