diff --git a/ActionBar/HelpTextWidget.cs b/ActionBar/HelpTextWidget.cs
index e66fe7429..01ee812a7 100644
--- a/ActionBar/HelpTextWidget.cs
+++ b/ActionBar/HelpTextWidget.cs
@@ -130,8 +130,10 @@ namespace MatterHackers.MatterControl
{
case PrinterCommunication.CommunicationStates.Disconnected:
return new LocalizedString("Not connected. Press 'Connect' to enable printing.").Translated;
- case PrinterCommunication.CommunicationStates.AttemptingToConnect:
- return new LocalizedString("Attempting to connect...").Translated;
+ case PrinterCommunication.CommunicationStates.AttemptingToConnect:
+ string attemptToConnect = new LocalizedString ("Attempting to Connect").Translated;
+ string attemptToConnectFull = string.Format ("{0}...", attemptToConnect);
+ return attemptToConnectFull;
case PrinterCommunication.CommunicationStates.ConnectionLost:
case PrinterCommunication.CommunicationStates.FailedToConnect:
return new LocalizedString("Unable to communicate with printer.").Translated;
diff --git a/CustomWidgets/ExportQueueItemWindow.cs b/CustomWidgets/ExportQueueItemWindow.cs
index a2dcd91de..c4c2e5381 100644
--- a/CustomWidgets/ExportQueueItemWindow.cs
+++ b/CustomWidgets/ExportQueueItemWindow.cs
@@ -80,10 +80,14 @@ namespace MatterHackers.MatterControl
if(showExportGCodeButton)
{
- Button exportGCode = textImageButtonFactory.Generate(new LocalizedString("Export as GCode").Translated);
+ string exportGCodeText = new LocalizedString("Export as").Translated;
+ string exportGCodeTextFull = string.Format("{0} GCode", exportGCodeText);
+
+ Button exportGCode = textImageButtonFactory.Generate(exportGCodeTextFull);
+
//exportGCode.HAnchor = Agg.UI.HAnchor.ParentCenter;
- exportGCode.Click += new ButtonBase.ButtonEventHandler(exportGCode_Click);
- topToBottom.AddChild(exportGCode);
+ exportGCode.Click += new ButtonBase.ButtonEventHandler(exportGCode_Click);
+ topToBottom.AddChild(exportGCode);
}
GuiWidget vSpacer = new GuiWidget();
diff --git a/DataStorage/Datastore.cs b/DataStorage/Datastore.cs
index df80b9406..499b965ee 100644
--- a/DataStorage/Datastore.cs
+++ b/DataStorage/Datastore.cs
@@ -110,14 +110,18 @@ namespace MatterHackers.MatterControl.DataStorage
{
return "StaticData";
}
- else
- {
- return Path.Combine(ApplicationPath, "StaticData");
- }
+ else if(Directory.Exists(Path.Combine(ApplicationPath, "StaticData")))
+ {
+ return Path.Combine(ApplicationPath, "StaticData");
+ }
+ else
+ {
+ return Path.Combine("..", "..", "StaticData");
+ }
default:
throw new NotImplementedException();
- }
+ }
}
}
diff --git a/EeProm/EePromRepetierWidget.cs b/EeProm/EePromRepetierWidget.cs
index 6ea20c92d..cfae3b7a4 100644
--- a/EeProm/EePromRepetierWidget.cs
+++ b/EeProm/EePromRepetierWidget.cs
@@ -26,6 +26,7 @@ The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of the FreeBSD Project.
*/
+//#define SIMULATE_CONNECTION
using System;
using System.Collections.Generic;
@@ -119,8 +120,26 @@ namespace MatterHackers.MatterControl.EeProm
PrinterCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);
currentEePromSettings.eventAdded += NewSettingReadFromPrinter;
currentEePromSettings.AskPrinterForSettings();
+
+#if SIMULATE_CONNECTION
+ UiThread.RunOnIdle(AddSimulatedItems);
+#endif
}
+#if SIMULATE_CONNECTION
+ int count;
+ void AddSimulatedItems(object state)
+ {
+ NewSettingReadFromPrinter(this, new EePromRepetierParameter("this is a test line " + count.ToString()));
+
+ count++;
+ if (count < 30)
+ {
+ UiThread.RunOnIdle(AddSimulatedItems);
+ }
+ }
+#endif
+
private static void CreateSpacer(FlowLayoutWidget buttonBar)
{
GuiWidget spacer = new GuiWidget(1, 1);
@@ -186,6 +205,12 @@ namespace MatterHackers.MatterControl.EeProm
settingsColmun.AddChild(row);
}
+
+ // TODO: fix the flow layout so we don't need this.
+ // This is correcting a bug in flow layout widgets not setting sizes correctly.
+ double oldWidth = Width;
+ Width = Width + 1;
+ Width = oldWidth;
}
private GuiWidget AddDescription(string description)
diff --git a/MatterControl.csproj b/MatterControl.csproj
index ad0289bea..5feec7499 100644
--- a/MatterControl.csproj
+++ b/MatterControl.csproj
@@ -98,6 +98,8 @@
+
+
@@ -282,6 +284,10 @@
{D3ABF72C-64C2-4E51-A119-E077210FA990}
SerialPortCommunication
+
+ {A526DC5D-65F3-461B-805F-D3AC9665F5C9}
+ WindowsFileDialogs
+
{F1653F20-D47D-4F29-8C55-3C835542AF5F}
Community.CsharpSqlite
diff --git a/MatterControl.userprefs b/MatterControl.userprefs
index 4e970df75..78a05af8a 100644
--- a/MatterControl.userprefs
+++ b/MatterControl.userprefs
@@ -1,19 +1,30 @@
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MatterControlApplication.cs b/MatterControlApplication.cs
index cd27b9f8e..67994822c 100644
--- a/MatterControlApplication.cs
+++ b/MatterControlApplication.cs
@@ -71,9 +71,24 @@ namespace MatterHackers.MatterControl
public MatterControlApplication(double width, double height)
: base(width, height)
{
- this.commandLineArgs = Environment.GetCommandLineArgs();;
+ this.commandLineArgs = Environment.GetCommandLineArgs();
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
+ if (commandLineArgs.Length > 1 && commandLineArgs[1].ToUpper() == "TEST")
+ {
+ Testing.TestingDispatch testDispatch = new Testing.TestingDispatch();
+ string[] testCommands = new string[commandLineArgs.Length-2];
+ if (commandLineArgs.Length > 2)
+ {
+ commandLineArgs.CopyTo(testCommands, 2);
+ }
+ testDispatch.RunTests(testCommands);
+ if (testDispatch.HadErrors)
+ {
+ return;
+ }
+ }
+
//WriteTestGCodeFile();
if (File.Exists("RunUnitTests.txt"))
{
diff --git a/PrintLibrary/ExportLibraryItemWindow.cs b/PrintLibrary/ExportLibraryItemWindow.cs
index 5e0e0507e..5f0038f26 100644
--- a/PrintLibrary/ExportLibraryItemWindow.cs
+++ b/PrintLibrary/ExportLibraryItemWindow.cs
@@ -80,10 +80,14 @@ namespace MatterHackers.MatterControl.PrintLibrary
if (showExportGCodeButton)
{
- Button exportGCode = textImageButtonFactory.Generate(new LocalizedString("Export as GCode").Translated);
+ string exportGCodeText = new LocalizedString("Export as").Translated;
+ string exportGCodeTextFull = string.Format ("{0} GCode", exportGCodeText);
+
+ Button exportGCode = textImageButtonFactory.Generate(exportGCodeTextFull);
+
//exportGCode.HAnchor = Agg.UI.HAnchor.ParentCenter;
- exportGCode.Click += new ButtonBase.ButtonEventHandler(exportGCode_Click);
- topToBottom.AddChild(exportGCode);
+ exportGCode.Click += new ButtonBase.ButtonEventHandler(exportGCode_Click);
+ topToBottom.AddChild(exportGCode);
}
GuiWidget vSpacer = new GuiWidget();
diff --git a/PrinterCommunication.cs b/PrinterCommunication.cs
index ba9821d1c..a17dc3a79 100644
--- a/PrinterCommunication.cs
+++ b/PrinterCommunication.cs
@@ -486,8 +486,9 @@ namespace MatterHackers.MatterControl
return new LocalizedString("Not Connected").Translated;
case CommunicationStates.Disconnecting:
return new LocalizedString("Disconnecting").Translated;
- case CommunicationStates.AttemptingToConnect:
- return "Connecting...";
+ case CommunicationStates.AttemptingToConnect:
+ string connectingMessageTxt = new LocalizedString ("Connecting").Translated;
+ return string.Format("{0}...",connectingMessageTxt);
case CommunicationStates.ConnectionLost:
return new LocalizedString("Connection Lost").Translated;
case CommunicationStates.FailedToConnect:
diff --git a/PrinterControls/ManualPrinterControls.cs b/PrinterControls/ManualPrinterControls.cs
index 243dbc127..d1f528bb9 100644
--- a/PrinterControls/ManualPrinterControls.cs
+++ b/PrinterControls/ManualPrinterControls.cs
@@ -201,30 +201,30 @@ namespace MatterHackers.MatterControl
controlsTopToBottomLayout.Padding = new BorderDouble(3, 0);
- terminalCommunicationsContainer = new DisableableWidget();
- terminalCommunicationsContainer.AddChild(CreateTerminalControlsContainer());
-
-
AddTemperatureControls(controlsTopToBottomLayout);
- FlowLayoutWidget centerControlsContainer = new FlowLayoutWidget ();
- centerControlsContainer.HAnchor = HAnchor.ParentLeftRight;
+ FlowLayoutWidget centerControlsContainer = new FlowLayoutWidget();
+ centerControlsContainer.HAnchor = HAnchor.ParentLeftRight;
- FlowLayoutWidget rightColumnContainer = new FlowLayoutWidget (FlowDirection.TopToBottom);
- rightColumnContainer.AddChild (terminalCommunicationsContainer);
- rightColumnContainer.Width = 230;
- rightColumnContainer.VAnchor |= VAnchor.ParentTop;
+ AddMovementControls(centerControlsContainer);
- AddMovementControls(centerControlsContainer);
+ // put in the terminal communications
+ {
+ terminalCommunicationsContainer = new DisableableWidget();
+ terminalCommunicationsContainer.AddChild(CreateTerminalControlsContainer());
- AddFanControls(rightColumnContainer);
- AddEePromControls(rightColumnContainer);
+ FlowLayoutWidget rightColumnContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
+ rightColumnContainer.AddChild(terminalCommunicationsContainer);
+ rightColumnContainer.Width = 180;
+ rightColumnContainer.VAnchor |= VAnchor.ParentTop;
- centerControlsContainer.AddChild(rightColumnContainer);
+ AddFanControls(rightColumnContainer);
+ AddEePromControls(rightColumnContainer);
- controlsTopToBottomLayout.AddChild (centerControlsContainer);
+ centerControlsContainer.AddChild(rightColumnContainer);
+ }
-
+ controlsTopToBottomLayout.AddChild(centerControlsContainer);
sdCardManagerContainer = new DisableableWidget();
sdCardManagerContainer.AddChild(CreateSdCardManagerContainer());
@@ -239,9 +239,9 @@ namespace MatterHackers.MatterControl
AddAdjustmentControls(controlsTopToBottomLayout);
- printLevelContainer = new DisableableWidget();
- printLevelContainer.AddChild(CreatePrintLevelingControlsContainer());
- controlsTopToBottomLayout.AddChild(printLevelContainer);
+ printLevelContainer = new DisableableWidget();
+ printLevelContainer.AddChild(CreatePrintLevelingControlsContainer());
+ controlsTopToBottomLayout.AddChild(printLevelContainer);
this.AddChild(controlsTopToBottomLayout);
AddHandlers();
@@ -306,6 +306,9 @@ namespace MatterHackers.MatterControl
Button openEePromWindow = textImageButtonFactory.Generate(new LocalizedString("CONFIGURE").Translated);
openEePromWindow.Click += (sender, e) =>
{
+#if false // This is to force the creation of the repetier window for testing when we don't have repetier firmware.
+ new MatterHackers.MatterControl.EeProm.EePromRepetierWidget();
+#else
switch(PrinterCommunication.Instance.FirmwareType)
{
case PrinterCommunication.FirmwareTypes.Repetier:
@@ -325,6 +328,7 @@ namespace MatterHackers.MatterControl
);
break;
}
+#endif
};
//eePromControlsLayout.AddChild(eePromIcon);
eePromControlsLayout.AddChild(openEePromWindow);
@@ -662,7 +666,7 @@ namespace MatterHackers.MatterControl
private GuiWidget CreateTerminalControlsContainer()
{
GroupBox terminalControlsContainer;
- terminalControlsContainer = new GroupBox(new LocalizedString("Printer Communications").Translated);
+ terminalControlsContainer = new GroupBox(new LocalizedString("Communications").Translated);
terminalControlsContainer.Margin = new BorderDouble(0);
terminalControlsContainer.TextColor = ActiveTheme.Instance.PrimaryTextColor;
diff --git a/PrinterControls/PrinterConnections/ConnectionWindow.cs b/PrinterControls/PrinterConnections/ConnectionWindow.cs
index 48bb266ae..b15b36d2f 100644
--- a/PrinterControls/PrinterConnections/ConnectionWindow.cs
+++ b/PrinterControls/PrinterConnections/ConnectionWindow.cs
@@ -22,7 +22,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
bool editMode = false;
public ConnectionWindow()
- : base(350, 500)
+ : base(350, 600)
{
string connectToPrinterTitle = new LocalizedString("MatterControl").Translated;
string connectToPrinterTitleEnd = new LocalizedString ("Connect to Printer").Translated;
diff --git a/SlicerConfiguration/ActiveSliceSettings.cs b/SlicerConfiguration/ActiveSliceSettings.cs
index c7d7f0ef5..07b0036ee 100644
--- a/SlicerConfiguration/ActiveSliceSettings.cs
+++ b/SlicerConfiguration/ActiveSliceSettings.cs
@@ -123,7 +123,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
switch (BedShape)
{
case MeshVisualizer.MeshViewerWidget.BedShape.Circular:
- Vector2 firstPosition = new Vector2(printCenter.x, printCenter.y + (bedSize.y / 2) * .8);
+ Vector2 firstPosition = new Vector2(printCenter.x, printCenter.y + (bedSize.y / 2) * .5);
switch (index)
{
case 0:
@@ -275,7 +275,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
return MeshVisualizer.MeshViewerWidget.BedShape.Circular;
default:
+#if DEBUG
throw new NotImplementedException(string.Format("'{0}' is not a known bed_shape.", GetActiveValue("bed_shape")));
+#else
+ return MeshVisualizer.MeshViewerWidget.BedShape.Rectangular;
+#endif
}
}
}
diff --git a/StaticData/OEMSettings/PrinterSettingsWhitelist.txt b/StaticData/OEMSettings/PrinterSettingsWhitelist.txt
index b5db89e90..e6094b5fe 100644
--- a/StaticData/OEMSettings/PrinterSettingsWhitelist.txt
+++ b/StaticData/OEMSettings/PrinterSettingsWhitelist.txt
@@ -5,4 +5,7 @@ SeeMeCNC
Printrbot
Deezmaker
Blue Eagle Labs
-RoBo 3D
\ No newline at end of file
+RoBo 3D
+Solidoodle
+Portabee
+Lulzbot
\ No newline at end of file
diff --git a/StaticData/PrinterSettings/Lulzbot/TAZ ABS/config.ini b/StaticData/PrinterSettings/Lulzbot/TAZ ABS/config.ini
new file mode 100644
index 000000000..810784236
--- /dev/null
+++ b/StaticData/PrinterSettings/Lulzbot/TAZ ABS/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 298,275
+bed_temperature = 85
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 250
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 3
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 85
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 230
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.35
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 149,137.5
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 230
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Lulzbot/TAZ ABS/setup.ini b/StaticData/PrinterSettings/Lulzbot/TAZ ABS/setup.ini
new file mode 100644
index 000000000..32ddd68d2
--- /dev/null
+++ b/StaticData/PrinterSettings/Lulzbot/TAZ ABS/setup.ini
@@ -0,0 +1 @@
+baud_rate = 250000
diff --git a/StaticData/PrinterSettings/Lulzbot/TAZ PLA/config.ini b/StaticData/PrinterSettings/Lulzbot/TAZ PLA/config.ini
new file mode 100644
index 000000000..bb28bb207
--- /dev/null
+++ b/StaticData/PrinterSettings/Lulzbot/TAZ PLA/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 298,275
+bed_temperature = 65
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 250
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 3
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 65
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 185
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.35
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 149,137.5
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 185
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Lulzbot/TAZ PLA/setup.ini b/StaticData/PrinterSettings/Lulzbot/TAZ PLA/setup.ini
new file mode 100644
index 000000000..32ddd68d2
--- /dev/null
+++ b/StaticData/PrinterSettings/Lulzbot/TAZ PLA/setup.ini
@@ -0,0 +1 @@
+baud_rate = 250000
diff --git a/StaticData/PrinterSettings/Portabee/Portabee GO ABS/config.ini b/StaticData/PrinterSettings/Portabee/Portabee GO ABS/config.ini
new file mode 100644
index 000000000..a460f3d05
--- /dev/null
+++ b/StaticData/PrinterSettings/Portabee/Portabee GO ABS/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 120,168
+bed_temperature = 100
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 135
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 1.75
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 100
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 230
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 60,84
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 230
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Portabee/Portabee GO ABS/setup.ini b/StaticData/PrinterSettings/Portabee/Portabee GO ABS/setup.ini
new file mode 100644
index 000000000..32ddd68d2
--- /dev/null
+++ b/StaticData/PrinterSettings/Portabee/Portabee GO ABS/setup.ini
@@ -0,0 +1 @@
+baud_rate = 250000
diff --git a/StaticData/PrinterSettings/Portabee/Portabee GO PLA/config.ini b/StaticData/PrinterSettings/Portabee/Portabee GO PLA/config.ini
new file mode 100644
index 000000000..bd59862c9
--- /dev/null
+++ b/StaticData/PrinterSettings/Portabee/Portabee GO PLA/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 120,168
+bed_temperature = 65
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 135
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 1.75
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 65
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 190
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 60,84
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 190
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Portabee/Portabee GO PLA/setup.ini b/StaticData/PrinterSettings/Portabee/Portabee GO PLA/setup.ini
new file mode 100644
index 000000000..32ddd68d2
--- /dev/null
+++ b/StaticData/PrinterSettings/Portabee/Portabee GO PLA/setup.ini
@@ -0,0 +1 @@
+baud_rate = 250000
diff --git a/StaticData/PrinterSettings/SeeMeCNC/Orion ABS/config.ini b/StaticData/PrinterSettings/SeeMeCNC/Orion ABS/config.ini
index 9ed21c5b6..169b99313 100644
--- a/StaticData/PrinterSettings/SeeMeCNC/Orion ABS/config.ini
+++ b/StaticData/PrinterSettings/SeeMeCNC/Orion ABS/config.ini
@@ -8,6 +8,7 @@ bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 60
brim_width = 0
+build_height = 228
complete_objects = 0
cooling = 1
default_acceleration = 0
diff --git a/StaticData/PrinterSettings/SeeMeCNC/Orion PLA/config.ini b/StaticData/PrinterSettings/SeeMeCNC/Orion PLA/config.ini
index 9ed21c5b6..169b99313 100644
--- a/StaticData/PrinterSettings/SeeMeCNC/Orion PLA/config.ini
+++ b/StaticData/PrinterSettings/SeeMeCNC/Orion PLA/config.ini
@@ -8,6 +8,7 @@ bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 60
brim_width = 0
+build_height = 228
complete_objects = 0
cooling = 1
default_acceleration = 0
diff --git a/StaticData/PrinterSettings/SeeMeCNC/RostockMAX/config.ini b/StaticData/PrinterSettings/SeeMeCNC/RostockMAX/config.ini
index a58f951a7..74864233c 100644
--- a/StaticData/PrinterSettings/SeeMeCNC/RostockMAX/config.ini
+++ b/StaticData/PrinterSettings/SeeMeCNC/RostockMAX/config.ini
@@ -1,6 +1,6 @@
avoid_crossing_perimeters = 1
-bed_size = 280,280
bed_shape = circular
+bed_size = 280,280
bed_temperature = 80
bottom_solid_layers = 3
bridge_acceleration = 0
@@ -8,6 +8,7 @@ bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 20
brim_width = 0
+build_height = 374
complete_objects = 0
cooling = 1
default_acceleration = 0
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 ABS/config.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 ABS/config.ini
new file mode 100644
index 000000000..2c65d72cb
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 ABS/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 152.4,152.4
+bed_temperature = 105
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 152
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 1.75
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 105
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 215
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 76.2,76.2
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 215
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 ABS/setup.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 ABS/setup.ini
new file mode 100644
index 000000000..a9be4438e
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 ABS/setup.ini
@@ -0,0 +1,2 @@
+baud_rate = 250000
+windows_driver = serial_install.exe
\ No newline at end of file
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 PLA/config.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 PLA/config.ini
new file mode 100644
index 000000000..57bafb147
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 PLA/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 152.4,152.4
+bed_temperature = 65
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 152
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 1.75
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 65
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 190
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 76.2,76.2
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 190
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 PLA/setup.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 PLA/setup.ini
new file mode 100644
index 000000000..a9be4438e
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 2 PLA/setup.ini
@@ -0,0 +1,2 @@
+baud_rate = 250000
+windows_driver = serial_install.exe
\ No newline at end of file
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 ABS/config.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 ABS/config.ini
new file mode 100644
index 000000000..1630e05a8
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 ABS/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 203.2,203.2
+bed_temperature = 105
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 203
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 1.75
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 105
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 215
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 101.6,101.6
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 215
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 ABS/setup.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 ABS/setup.ini
new file mode 100644
index 000000000..a9be4438e
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 ABS/setup.ini
@@ -0,0 +1,2 @@
+baud_rate = 250000
+windows_driver = serial_install.exe
\ No newline at end of file
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 PLA/config.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 PLA/config.ini
new file mode 100644
index 000000000..c2b01321d
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 PLA/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 203.2,203.2
+bed_temperature = 65
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 203
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 1.75
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 65
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 190
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 101.6,101.6
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 190
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 PLA/setup.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 PLA/setup.ini
new file mode 100644
index 000000000..a9be4438e
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 3 PLA/setup.ini
@@ -0,0 +1,2 @@
+baud_rate = 250000
+windows_driver = serial_install.exe
\ No newline at end of file
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 ABS/config.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 ABS/config.ini
new file mode 100644
index 000000000..1630e05a8
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 ABS/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 203.2,203.2
+bed_temperature = 105
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 203
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 1.75
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 105
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 215
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 101.6,101.6
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 215
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 ABS/setup.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 ABS/setup.ini
new file mode 100644
index 000000000..a9be4438e
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 ABS/setup.ini
@@ -0,0 +1,2 @@
+baud_rate = 250000
+windows_driver = serial_install.exe
\ No newline at end of file
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 PLA/config.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 PLA/config.ini
new file mode 100644
index 000000000..c2b01321d
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 PLA/config.ini
@@ -0,0 +1,114 @@
+avoid_crossing_perimeters = 0
+bed_size = 203.2,203.2
+bed_temperature = 65
+bottom_solid_layers = 3
+bridge_acceleration = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 60
+brim_width = 0
+build_height = 203
+complete_objects = 0
+cooling = 0
+default_acceleration = 0
+disable_fan_first_layers = 2
+duplicate = 1
+duplicate_distance = 6
+duplicate_grid = 1,1
+end_gcode = M104 S0 ; turn off temperature\nG1 X10 Y200\nM84 ; disable motors
+external_perimeter_speed = 50
+external_perimeters_first = 0
+extra_perimeters = 1
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0
+fan_always_on = 1
+fan_below_layer_time = 60
+filament_diameter = 1.75
+fill_angle = 45
+fill_density = 0.3
+fill_pattern = rectilinear
+first_layer_bed_temperature = 65
+first_layer_extrusion_width = 200%
+first_layer_height = 0.25
+first_layer_speed = 30%
+first_layer_temperature = 190
+g0 = 0
+gap_fill_speed = 20
+gcode_arcs = 0
+gcode_comments = 0
+gcode_flavor = reprap
+infill_acceleration = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0
+infill_first = 0
+infill_only_where_needed = 0
+infill_speed = 60
+layer_gcode =
+layer_height = 0.2
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 10
+min_skirt_length = 5
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+output_filename_format = [input_filename_base].gcode
+perimeter_acceleration = 0
+perimeter_extruder = 1
+perimeter_extrusion_width = 0
+perimeter_speed = 60
+perimeters = 3
+post_process =
+print_center = 101.6,101.6
+raft_layers = 0
+randomize_start = 1
+resolution = 0
+retract_before_travel = 2
+retract_layer_change = 1
+retract_length = 3
+retract_length_toolchange = 10
+retract_lift = 1
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 30
+rotate = 0
+scale = 1
+skirt_distance = 6
+skirt_height = 1
+skirts = 2
+slowdown_below_layer_time = 30
+small_perimeter_speed = 35
+solid_fill_pattern = rectilinear
+solid_infill_below_area = 70
+solid_infill_every_layers = 0
+solid_infill_extrusion_width = 0
+solid_infill_speed = 60
+spiral_vase = 0
+start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle
+support_material = 1
+support_material_angle = 0
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0
+support_material_interface_layers = 3
+support_material_interface_spacing = 0
+support_material_pattern = rectilinear
+support_material_spacing = 3
+support_material_speed = 60
+support_material_threshold = 30
+temperature = 190
+threads = 2
+toolchange_gcode =
+top_infill_extrusion_width = 0
+top_solid_infill_speed = 50
+top_solid_layers = 3
+travel_speed = 150
+use_relative_e_distances = 0
+vibration_limit = 0
+wipe = 0
+z_offset = 0
diff --git a/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 PLA/setup.ini b/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 PLA/setup.ini
new file mode 100644
index 000000000..a9be4438e
--- /dev/null
+++ b/StaticData/PrinterSettings/Solidoodle/Solidoodle 4 PLA/setup.ini
@@ -0,0 +1,2 @@
+baud_rate = 250000
+windows_driver = serial_install.exe
\ No newline at end of file
diff --git a/StaticData/PrinterSettings/Type A Machines/Series 1/config.ini b/StaticData/PrinterSettings/Type A Machines/Series 1/config.ini
index 3710808a3..79246c85f 100644
--- a/StaticData/PrinterSettings/Type A Machines/Series 1/config.ini
+++ b/StaticData/PrinterSettings/Type A Machines/Series 1/config.ini
@@ -5,6 +5,7 @@ bridge_fan_speed = 100
bridge_flow_ratio = 0.6
bridge_speed = 60
brim_width = 0
+build_height = 228
complete_objects = 0
cooling = 1
disable_fan_first_layers = 1
diff --git a/StaticData/SliceSettings/Properties.txt b/StaticData/SliceSettings/Properties.txt
index e4b9e1468..34b4ae834 100644
--- a/StaticData/SliceSettings/Properties.txt
+++ b/StaticData/SliceSettings/Properties.txt
@@ -89,7 +89,7 @@ solid_fill_pattern|Top/Bottom Fill Pattern|LIST|rectilinear,concentric,hilbertcu
solid_infill_below_area|Solid Infill Threshold Area|POSITVE_DOUBLE|mm2|Forces solid infill for any area less than this amount.
solid_infill_every_layers|Solid Infill Every|INT|layers|Sets how often a layer will be forced to be solid infilled. Zero will result in normal infill throughout.
solid_infill_extrusion_width|Solid Infill|DOUBLE_OR_PERCENT|mm or %\nleave 0 for default|Leave this as 0 to allow automatic calculation of extrusion width.
-solid_infill_speed|Solid Infill|POSITVE_DOUBLE|mm/s|The speed to print infill when completely solid. This can be set explicitly or as a percentage of the Infill speed.
+solid_infill_speed|Solid Infill|DOUBLE_OR_PERCENT|mm/s|The speed to print infill when completely solid. This can be set explicitly or as a percentage of the Infill speed.
spiral_vase|Spiral Vase|CHECK_BOX||Force the print to have only one layer and gradually increase the extruder height during the print. Only one part can be printed at a time with this feature.
standby_temperature_delta|Temp Lower Amount|DOUBLE|degrees|This is the amount to lower the temperature of an extruder that is not currently printing.
start_gcode|Start G-Code|MULTI_LINE_TEXT||This gcode will be inserted into the output right after the temperature setting. If you have the commands to set temperature in this section they will not be generated outside of this section. You can also include values from other settings such as [first_layer_temperature].
@@ -115,7 +115,7 @@ thin_walls|Thin Walls|CHECK_BOX||Detect when walls are too close together and ne
threads|Threads|INT||The number of CPU cores to use while doing slicing. Increasing this can slow down your machine.
toolchange_gcode|Tool Change G-Code|MULTI_LINE_TEXT||This gcode will be inserted after every tool change.
top_infill_extrusion_width|Top Solid Infill|DOUBLE_OR_PERCENT|mm or %\nleave 0 for default|Leave this as 0 to allow automatic calculation of extrusion width.
-top_solid_infill_speed|Top Solid Infill|POSITVE_DOUBLE|mm/s|The speed to print the top infill. This can be set explicitly or as a percentage of the Infill speed.
+top_solid_infill_speed|Top Solid Infill|DOUBLE_OR_PERCENT|mm/s|The speed to print the top infill. This can be set explicitly or as a percentage of the Infill speed.
top_solid_layers|Number of Solid Layers\n on the Top:|INT||How many layers will be solid filled on the top surfaces of the object.
travel_speed|Travel|POSITVE_DOUBLE|mm/s|Speed to move when not extruding material.
use_firmware_retraction|Use Firmware Retraction|CHECK_BOX||Request the firmware to do retractions rather than specify the extruder movements directly.
diff --git a/Testing/ReleaseTests.cs b/Testing/ReleaseTests.cs
new file mode 100644
index 000000000..cb7a5e367
--- /dev/null
+++ b/Testing/ReleaseTests.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace MatterHackers.MatterControl.Testing
+{
+ public static class ReleaseTests
+ {
+ public static void AssertDebugNotDefined()
+ {
+#if DEBUG
+ throw new Exception("DEBUG is defined and should not be!");
+#endif
+ }
+ }
+}
diff --git a/Testing/TestingDispatch.cs b/Testing/TestingDispatch.cs
new file mode 100644
index 000000000..8d026bd30
--- /dev/null
+++ b/Testing/TestingDispatch.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Diagnostics;
+
+namespace MatterHackers.MatterControl.Testing
+{
+ public class TestingDispatch
+ {
+ bool hadErrors = false;
+ public bool HadErrors { get { return hadErrors; } }
+
+ string errorLogFileName = null;
+ public TestingDispatch()
+ {
+ string exePath = Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location );
+ errorLogFileName = Path.Combine(exePath, "ErrorLog.txt");
+ string firstLine = string.Format("MatterControl Errors: {0:yyyy-MM-dd hh:mm:ss tt}", DateTime.Now);
+ using (StreamWriter file = new StreamWriter(errorLogFileName))
+ {
+ file.WriteLine(firstLine);
+ }
+ }
+
+ public void RunTests(string[] testCommands)
+ {
+ try { ReleaseTests.AssertDebugNotDefined(); }
+ catch (Exception e) { DumpException(e); }
+
+ try { MatterHackers.GCodeVisualizer.GCodeFile.AssertDebugNotDefined(); }
+ catch (Exception e) { DumpException(e); }
+ }
+
+ void DumpException(Exception e)
+ {
+ hadErrors = true;
+ using (StreamWriter w = File.AppendText(errorLogFileName))
+ {
+ w.WriteLine(e.Message);
+ w.Write(e.StackTrace);
+ w.WriteLine();
+ }
+ }
+ }
+}