From 563c08520fb28fa07ba8aff23d39cadf931f06e2 Mon Sep 17 00:00:00 2001 From: LarsBrubaker Date: Thu, 7 May 2020 13:01:50 -0700 Subject: [PATCH] adding in tool change for T2 & T3 --- .../Settings/PrinterSettings.cs | 4 +++ .../Settings/SettingsKey.cs | 4 +++ .../Settings/SliceSettingsFields.cs | 36 +++++++++++++++++++ .../Io/ToolChangeStream.cs | 16 +++++++++ StaticData/SliceSettings/Layouts.txt | 4 +++ 5 files changed, 64 insertions(+) diff --git a/MatterControl.Printing/Settings/PrinterSettings.cs b/MatterControl.Printing/Settings/PrinterSettings.cs index 52b3c7b7b..684528bc7 100644 --- a/MatterControl.Printing/Settings/PrinterSettings.cs +++ b/MatterControl.Printing/Settings/PrinterSettings.cs @@ -158,8 +158,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SettingsKey.bed_temperature, SettingsKey.before_toolchange_gcode, SettingsKey.before_toolchange_gcode_1, + SettingsKey.before_toolchange_gcode_2, + SettingsKey.before_toolchange_gcode_3, SettingsKey.toolchange_gcode, SettingsKey.toolchange_gcode_1, + SettingsKey.toolchange_gcode_2, + SettingsKey.toolchange_gcode_3, SettingsKey.build_height, SettingsKey.cancel_gcode, SettingsKey.com_port, diff --git a/MatterControl.Printing/Settings/SettingsKey.cs b/MatterControl.Printing/Settings/SettingsKey.cs index a1613d99e..04a437d7d 100644 --- a/MatterControl.Printing/Settings/SettingsKey.cs +++ b/MatterControl.Printing/Settings/SettingsKey.cs @@ -46,6 +46,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public const string bed_temperature = nameof(bed_temperature); public const string before_toolchange_gcode = nameof(before_toolchange_gcode); public const string before_toolchange_gcode_1 = nameof(before_toolchange_gcode_1); + public const string before_toolchange_gcode_2 = nameof(before_toolchange_gcode_2); + public const string before_toolchange_gcode_3 = nameof(before_toolchange_gcode_3); public const string bottom_infill_speed = nameof(bottom_infill_speed); public const string bottom_solid_layers = nameof(bottom_solid_layers); public const string bridge_fan_speed = nameof(bridge_fan_speed); @@ -240,6 +242,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public const string threads = nameof(threads); public const string toolchange_gcode = nameof(toolchange_gcode); public const string toolchange_gcode_1 = nameof(toolchange_gcode_1); + public const string toolchange_gcode_2 = nameof(toolchange_gcode_2); + public const string toolchange_gcode_3 = nameof(toolchange_gcode_3); public const string top_infill_extrusion_width = nameof(top_infill_extrusion_width); public const string top_solid_infill_speed = nameof(top_solid_infill_speed); public const string top_solid_layers = nameof(top_solid_layers); diff --git a/MatterControl.Printing/Settings/SliceSettingsFields.cs b/MatterControl.Printing/Settings/SliceSettingsFields.cs index 75efbfdc0..2d5741ae2 100644 --- a/MatterControl.Printing/Settings/SliceSettingsFields.cs +++ b/MatterControl.Printing/Settings/SliceSettingsFields.cs @@ -2058,6 +2058,42 @@ namespace MatterHackers.MatterControl.SlicerConfiguration DefaultValue = "" }, new SliceSettingData() + { + SlicerConfigName = SettingsKey.before_toolchange_gcode_2, + PresentationName = "Before Tool Change G-Code 3".Localize(), + HelpText = "G-Code to be run before switching to extruder 3. Will use standard before G-Code if not set. You can use [wipe_tower_x] [wipe_tower_y] & [wipe_tower_z] to set the extruder position if needed. You can also use '; WRITE_RAW' to skip checksums or '; NO_PROCESSING' to skip position offsetting.".Localize(), + DataEditType = DataEditTypes.MULTI_LINE_TEXT, + ShowIfSet = "!sla_printer&extruder_count>2", + DefaultValue = "" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.toolchange_gcode_2, + PresentationName = "After Tool Change G-Code 3".Localize(), + HelpText = "G-Code to be run after switching to extruder 3. Will use standard after G-Code if not set. You can use '; WRITE_RAW' to skip checksums or '; NO_PROCESSING' to skip position offsetting.".Localize(), + ShowIfSet = "!sla_printer&extruder_count>2", + DataEditType = DataEditTypes.MULTI_LINE_TEXT, + DefaultValue = "" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.before_toolchange_gcode_3, + PresentationName = "Before Tool Change G-Code 4".Localize(), + HelpText = "G-Code to be run before switching to extruder 3. Will use standard before G-Code if not set. You can use [wipe_tower_x] [wipe_tower_y] & [wipe_tower_z] to set the extruder position if needed. You can also use '; WRITE_RAW' to skip checksums or '; NO_PROCESSING' to skip position offsetting.".Localize(), + DataEditType = DataEditTypes.MULTI_LINE_TEXT, + ShowIfSet = "!sla_printer&extruder_count>3", + DefaultValue = "" + }, + new SliceSettingData() + { + SlicerConfigName = SettingsKey.toolchange_gcode_3, + PresentationName = "After Tool Change G-Code 4".Localize(), + HelpText = "G-Code to be run after switching to extruder 2. Will use standard after G-Code if not set. You can use '; WRITE_RAW' to skip checksums or '; NO_PROCESSING' to skip position offsetting.".Localize(), + ShowIfSet = "!sla_printer&extruder_count>3", + DataEditType = DataEditTypes.MULTI_LINE_TEXT, + DefaultValue = "" + }, + new SliceSettingData() { SlicerConfigName = SettingsKey.top_infill_extrusion_width, PresentationName = "Top Solid Infill".Localize(), diff --git a/MatterControlLib/PrinterCommunication/Io/ToolChangeStream.cs b/MatterControlLib/PrinterCommunication/Io/ToolChangeStream.cs index 4a13bdb67..feff8825d 100644 --- a/MatterControlLib/PrinterCommunication/Io/ToolChangeStream.cs +++ b/MatterControlLib/PrinterCommunication/Io/ToolChangeStream.cs @@ -398,6 +398,14 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io case 1: afterGcodeToQueue = printer.Settings.GetValue(SettingsKey.toolchange_gcode_1).Replace("\\n", "\n"); break; + + case 2: + afterGcodeToQueue = printer.Settings.GetValue(SettingsKey.toolchange_gcode_2).Replace("\\n", "\n"); + break; + + case 3: + afterGcodeToQueue = printer.Settings.GetValue(SettingsKey.toolchange_gcode_3).Replace("\\n", "\n"); + break; } PrinterMove newToolMove = GetPosition(postSwitchLine, PrinterMove.Unknown); @@ -478,6 +486,14 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io case 1: beforeGcodeToQueue = printer.Settings.GetValue(SettingsKey.before_toolchange_gcode_1).Replace("\\n", "\n"); break; + + case 2: + beforeGcodeToQueue = printer.Settings.GetValue(SettingsKey.before_toolchange_gcode_2).Replace("\\n", "\n"); + break; + + case 3: + beforeGcodeToQueue = printer.Settings.GetValue(SettingsKey.before_toolchange_gcode_3).Replace("\\n", "\n"); + break; } preSwitchPosition = lastDestination.position; diff --git a/StaticData/SliceSettings/Layouts.txt b/StaticData/SliceSettings/Layouts.txt index 5345b7a77..a3373ee4a 100644 --- a/StaticData/SliceSettings/Layouts.txt +++ b/StaticData/SliceSettings/Layouts.txt @@ -243,6 +243,10 @@ Printer toolchange_gcode before_toolchange_gcode_1 toolchange_gcode_1 + before_toolchange_gcode_2 + toolchange_gcode_2 + before_toolchange_gcode_3 + toolchange_gcode_3 Filters Filters write_regex