From 0e1af015ea86f95a1285a8af79db3d2f927b4207 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Feb 2019 09:26:09 -0800 Subject: [PATCH 1/7] Prevent StringBuilder from doubling up results --- .../CustomWidgets/NozzleOffsetCalibrationPage.cs | 11 ++++++++--- .../CustomWidgets/NozzleOffsetTemplatePrinter.cs | 9 +-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs index a8d0d2a5c..281d4ee73 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs @@ -128,14 +128,19 @@ namespace MatterHackers.MatterControl Task.Run(async () => { - string gcode1 = templatePrinter.BuildTemplate(verticalLayout: true); - string gcode2 = templatePrinter.BuildTemplate(verticalLayout: false); + var gcodeSketch = new GCodeSketch() + { + Speed = (int)(printer.Settings.GetValue(SettingsKey.first_layer_speed) * 60) + }; + + templatePrinter.BuildTemplate(gcodeSketch, verticalLayout: true); + templatePrinter.BuildTemplate(gcodeSketch, verticalLayout: false); string outputPath = Path.Combine( ApplicationDataStorage.Instance.GCodeOutputPath, $"nozzle-offset-template-combined.gcode"); - File.WriteAllText(outputPath, gcode1 + "\n" + gcode2); + File.WriteAllText(outputPath, gcodeSketch.ToGCode()); // HACK: update state needed to be set before calling StartPrint printer.Connection.CommunicationState = CommunicationStates.PreparingToPrint; diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index 92a299dc9..a006bba6c 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -105,13 +105,8 @@ namespace MatterHackers.MatterControl }); } - public string BuildTemplate(bool verticalLayout) + public void BuildTemplate(GCodeSketch gcodeSketch, bool verticalLayout) { - var gcodeSketch = new GCodeSketch() - { - Speed = firstLayerSpeed - }; - //gcodeSketch.WriteRaw("G92 E0"); gcodeSketch.WriteRaw("T0"); gcodeSketch.WriteRaw($"G1 Z0.2 F{firstLayerSpeed}"); @@ -238,8 +233,6 @@ namespace MatterHackers.MatterControl } gcodeSketch.PenUp(); - - return gcodeSketch.ToGCode(); } private RectangleDouble CreatePerimeters(GCodeSketch gcodeSketch, RectangleDouble rect) From 503996759cdadf121938c557b7ca4bc378e5d294 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Feb 2019 09:28:18 -0800 Subject: [PATCH 2/7] Ensure E is always reset on tool change - Fix over extrude regression caused by combining templates --- MatterControlLib/CustomWidgets/GCodeSketch.cs | 6 ++++++ .../CustomWidgets/NozzleOffsetTemplatePrinter.cs | 6 ++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/MatterControlLib/CustomWidgets/GCodeSketch.cs b/MatterControlLib/CustomWidgets/GCodeSketch.cs index cc8f653de..cb27ac6c5 100644 --- a/MatterControlLib/CustomWidgets/GCodeSketch.cs +++ b/MatterControlLib/CustomWidgets/GCodeSketch.cs @@ -70,6 +70,12 @@ namespace MatterHackers.MatterControl } } + public void SetTool(string toolChange) + { + this.WriteRaw(toolChange); + this.ResetE(); + } + public void MoveTo(double x, double y, bool retract = false) { this.MoveTo(new Vector2(x, y), retract); diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index a006bba6c..fc0f7615e 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -107,8 +107,7 @@ namespace MatterHackers.MatterControl public void BuildTemplate(GCodeSketch gcodeSketch, bool verticalLayout) { - //gcodeSketch.WriteRaw("G92 E0"); - gcodeSketch.WriteRaw("T0"); + gcodeSketch.SetTool("T0"); gcodeSketch.WriteRaw($"G1 Z0.2 F{firstLayerSpeed}"); if (verticalLayout) @@ -198,8 +197,7 @@ namespace MatterHackers.MatterControl y1 = rect.Top + (nozzleWidth * .5); y2 = y1 - sectionHeight + (nozzleWidth * .5); - gcodeSketch.WriteRaw("T1"); - gcodeSketch.ResetE(); + gcodeSketch.SetTool("T1"); gcodeSketch.MoveTo(rect.Left, rect.Top); From f516520ee4e86190ce124bd8caa64eae77b8db48 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Feb 2019 09:29:06 -0800 Subject: [PATCH 3/7] Delete dead code --- .../NozzleOffsetTemplatePrinter.cs | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs index fc0f7615e..e2cafefb1 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetTemplatePrinter.cs @@ -74,36 +74,6 @@ namespace MatterHackers.MatterControl public bool DebugMode { get; private set; } = false; - public Task PrintTemplate(bool verticalLayout) - { - return Task.Run(async ()=> - { - string gcode = this.BuildTemplate(verticalLayout); - - string outputPath = Path.Combine( - ApplicationDataStorage.Instance.GCodeOutputPath, - $"nozzle-offset-template{ (verticalLayout ? 1 : 2) }.gcode"); - - File.WriteAllText(outputPath, gcode); - - // HACK: update state needed to be set before calling StartPrint - printer.Connection.CommunicationState = CommunicationStates.PreparingToPrint; - - await printer.Connection.StartPrint(outputPath); - - // Wait for print start - while (!printer.Connection.PrintIsActive) - { - Thread.Sleep(500); - } - - // Wait for print finished - while (printer.Connection.PrintIsActive) - { - Thread.Sleep(500); - } - }); - } public void BuildTemplate(GCodeSketch gcodeSketch, bool verticalLayout) { From 86ed2d6ca322a4049e9831ad3f88ff4dd6c22047 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Feb 2019 09:31:20 -0800 Subject: [PATCH 4/7] Fix clamp to constrain to valid range --- .../PartPreviewWindow/GCodeDetails/GCodeDebugView.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MatterControlLib/PartPreviewWindow/GCodeDetails/GCodeDebugView.cs b/MatterControlLib/PartPreviewWindow/GCodeDetails/GCodeDebugView.cs index 467994188..f8268120a 100644 --- a/MatterControlLib/PartPreviewWindow/GCodeDetails/GCodeDebugView.cs +++ b/MatterControlLib/PartPreviewWindow/GCodeDetails/GCodeDebugView.cs @@ -79,7 +79,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow int featuresOnLayer = sceneContext.GCodeRenderer.GetNumFeatures(layerIndex); int featureIndex = (int)(featuresOnLayer * renderInfo.FeatureToEndOnRatio0To1 + .5); - int activeFeatureIndex = Math.Max(0, Math.Min(featureIndex, featuresOnLayer)); + int activeFeatureIndex = Math.Max(0, Math.Min(featureIndex, featuresOnLayer - 1)); if (sceneContext.GCodeRenderer[layerIndex, activeFeatureIndex] is RenderFeatureTravel line) { From 64062d9b3e65e91e07e3f6e81cfa5f5dec23144f Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Feb 2019 09:30:38 -0800 Subject: [PATCH 5/7] Output markers required for GCode visualizer --- .../CustomWidgets/NozzleOffsetCalibrationPage.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs index 281d4ee73..c1312ac72 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs @@ -133,6 +133,10 @@ namespace MatterHackers.MatterControl Speed = (int)(printer.Settings.GetValue(SettingsKey.first_layer_speed) * 60) }; + //gcodeSketch.WriteRaw("G92 E0"); + gcodeSketch.WriteRaw("; LAYER: 0"); + gcodeSketch.WriteRaw("; LAYER_HEIGHT: 0.2"); + templatePrinter.BuildTemplate(gcodeSketch, verticalLayout: true); templatePrinter.BuildTemplate(gcodeSketch, verticalLayout: false); @@ -167,8 +171,8 @@ namespace MatterHackers.MatterControl { printer.Connection.MoveRelative(PrinterConnection.Axis.Z, 20, printer.Settings.Helpers.ManualMovementSpeeds().Z); - printer.Connection.MoveAbsolute(PrinterConnection.Axis.Y, - printer.Bed.Bounds.Top, + printer.Connection.MoveAbsolute(PrinterConnection.Axis.Y, + printer.Bed.Bounds.Top, printer.Settings.Helpers.ManualMovementSpeeds().Y); } }); From 50d19cc7f0439bd197fa9ec68760fd2cbd883ade Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Feb 2019 10:05:15 -0800 Subject: [PATCH 6/7] Improve calibration page layout --- .../NozzleOffsetCalibrationPage.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs index c1312ac72..d6cc84903 100644 --- a/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs +++ b/MatterControlLib/CustomWidgets/NozzleOffsetCalibrationPage.cs @@ -58,8 +58,6 @@ namespace MatterHackers.MatterControl templatePrinter = new NozzleOffsetTemplatePrinter(printer); - contentRow.AddChild(new TextWidget("Printing Calibration Guide".Localize(), pointSize: theme.DefaultFontSize, textColor: theme.TextColor)); - contentRow.AddChild(xOffsetWidget = new NozzleOffsetTemplateWidget(templatePrinter.ActiveOffsets, FlowDirection.LeftToRight, theme) { Padding = new BorderDouble(left: 4) @@ -85,18 +83,27 @@ namespace MatterHackers.MatterControl { Margin = new BorderDouble(top: 15), Padding = new BorderDouble(top: 4), - Width = 300 + Width = 110 }); var verticalColumn = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, - VAnchor = VAnchor.Stretch + VAnchor = VAnchor.Stretch, + Margin = 40 }; container.AddChild(verticalColumn); - verticalColumn.AddChild(xOffsetText = new TextWidget("".Localize(), pointSize: theme.DefaultFontSize, textColor: theme.TextColor)); - verticalColumn.AddChild(yOffsetText = new TextWidget("".Localize(), pointSize: theme.DefaultFontSize, textColor: theme.TextColor)); + verticalColumn.AddChild(xOffsetText = new TextWidget("".Localize(), pointSize: theme.DefaultFontSize, textColor: theme.TextColor) + { + Width = 200, + Margin = new BorderDouble(bottom: 10) + }); + + verticalColumn.AddChild(yOffsetText = new TextWidget("".Localize(), pointSize: theme.DefaultFontSize, textColor: theme.TextColor) + { + Width = 200 + }); yOffsetWidget.OffsetChanged += (s, e) => { From dad17a295751daa4256d11e58f2fc115eb499a8b Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Feb 2019 10:57:32 -0800 Subject: [PATCH 7/7] Leave passed in index untouched --- MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs b/MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs index bb1a7f43c..1423f9506 100644 --- a/MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs +++ b/MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs @@ -183,7 +183,7 @@ namespace MatterHackers.GCodeVisualizer { try { - return renderFeatures[layerIndex][featureIndex - 1]; + return renderFeatures[layerIndex][featureIndex]; } catch {