public string ApplyLeveling(Vector3 currentDestination, PrinterMachineInstruction.MovementTypes movementMode, string lineBeingSent, bool addLFCR, bool includeSpaces) { if ((lineBeingSent.StartsWith("G0") || lineBeingSent.StartsWith("G1")) && lineBeingSent.Length > 2 && lineBeingSent[2] == ' ') { double extruderDelta = 0; GCodeFile.GetFirstNumberAfter("E", lineBeingSent, ref extruderDelta); double feedRate = 0; GCodeFile.GetFirstNumberAfter("F", lineBeingSent, ref feedRate); string newLine = "G1 "; if (lineBeingSent.Contains('X') || lineBeingSent.Contains('Y') || lineBeingSent.Contains('Z')) { Vector3 outPosition = PrintLeveling.Instance.ApplyLeveling(currentDestination); if (movementMode == PrinterMachineInstruction.MovementTypes.Relative) { Vector3 relativeMove = Vector3.Zero; GCodeFile.GetFirstNumberAfter("X", lineBeingSent, ref relativeMove.x); GCodeFile.GetFirstNumberAfter("Y", lineBeingSent, ref relativeMove.y); GCodeFile.GetFirstNumberAfter("Z", lineBeingSent, ref relativeMove.z); outPosition = PrintLeveling.Instance.ApplyLevelingRotation(relativeMove); } if (includeSpaces) { newLine = newLine + String.Format("X{0:0.##} Y{1:0.##} Z{2:0.##}", outPosition.x, outPosition.y, outPosition.z); } else { newLine = newLine + String.Format("X{0:0.##}Y{1:0.##}Z{2:0.##}", outPosition.x, outPosition.y, outPosition.z); } } if (extruderDelta != 0) { newLine = newLine + String.Format(" E{0:0.###}", extruderDelta); } if (feedRate != 0) { newLine = newLine + String.Format(" F{0:0.##}", feedRate); } lineBeingSent = newLine; if (addLFCR) { lineBeingSent += "\r\n"; } } return(lineBeingSent); }
public string DoApplyLeveling(string lineBeingSent, Vector3 currentDestination, PrinterMachineInstruction.MovementTypes movementMode) { double extruderDelta = 0; GCodeFile.GetFirstNumberAfter("E", lineBeingSent, ref extruderDelta); double feedRate = 0; GCodeFile.GetFirstNumberAfter("F", lineBeingSent, ref feedRate); StringBuilder newLine = new StringBuilder("G1 "); if (lineBeingSent.Contains("X") || lineBeingSent.Contains("Y") || lineBeingSent.Contains("Z")) { Vector3 outPosition = GetPositionWithZOffset(currentDestination); if (movementMode == PrinterMachineInstruction.MovementTypes.Relative) { Vector3 delta = outPosition - lastDestinationWithLevelingApplied; lastDestinationWithLevelingApplied = outPosition; outPosition = delta; } else { lastDestinationWithLevelingApplied = outPosition; } newLine = newLine.Append(String.Format("X{0:0.##} Y{1:0.##} Z{2:0.###}", outPosition.x, outPosition.y, outPosition.z)); } if (extruderDelta != 0) { newLine = newLine.Append(String.Format(" E{0:0.###}", extruderDelta)); } if (feedRate != 0) { newLine = newLine.Append(String.Format(" F{0:0.##}", feedRate)); } lineBeingSent = newLine.ToString(); return(lineBeingSent); }
private void MovementWasSetToRelativeMode(object sender, EventArgs e) { movementMode = PrinterMachineInstruction.MovementTypes.Relative; }
private void MovementWasSetToAbsoluteMode(object sender, EventArgs e) { movementMode = PrinterMachineInstruction.MovementTypes.Absolute; }
public static string ApplyLeveling(string lineBeingSent, Vector3 currentDestination, PrinterMachineInstruction.MovementTypes movementMode) { var settings = ActiveSliceSettings.Instance; if (settings?.GetValue <bool>("print_leveling_enabled") == true && (lineBeingSent.StartsWith("G0 ") || lineBeingSent.StartsWith("G1 "))) { lineBeingSent = PrintLevelingPlane.Instance.ApplyLeveling(currentDestination, movementMode, lineBeingSent); } return(lineBeingSent); }
public static string ApplyLeveling(string lineBeingSent, Vector3 currentDestination, PrinterMachineInstruction.MovementTypes movementMode) { var settings = ActiveSliceSettings.Instance; if (settings?.GetValue <bool>("print_leveling_enabled") == true && (lineBeingSent.StartsWith("G0 ") || lineBeingSent.StartsWith("G1 ")) && lineBeingSent.Length > 2 && lineBeingSent[2] == ' ') { PrintLevelingData levelingData = ActiveSliceSettings.Instance.GetPrintLevelingData(); return(GetLevelingFunctions(numberOfRadialSamples, levelingData, ActiveSliceSettings.Instance.GetValue <Vector2>(SettingsKey.print_center)) .DoApplyLeveling(lineBeingSent, currentDestination, movementMode)); } return(lineBeingSent); }
void ExtruderWasSetToRelativeMode(object sender, EventArgs e) { extruderMode = PrinterMachineInstruction.MovementTypes.Relative; }
void ExtruderWasSetToAbsoluteMode(object sender, EventArgs e) { extruderMode = PrinterMachineInstruction.MovementTypes.Absolute; }
public static string ApplyLeveling(string lineBeingSent, Vector3 currentDestination, PrinterMachineInstruction.MovementTypes movementMode) { Printer activePrinter = PrinterConnectionAndCommunication.Instance.ActivePrinter; if (activePrinter != null && activePrinter.DoPrintLeveling && (lineBeingSent.StartsWith("G0 ") || lineBeingSent.StartsWith("G1 ")) && lineBeingSent.Length > 2 && lineBeingSent[2] == ' ') { PrintLevelingData levelingData = PrintLevelingData.GetForPrinter(activePrinter); return(GetLevelingFunctions(numberOfRadialSamples, levelingData, ActiveSliceSettings.Instance.BedCenter) .DoApplyLeveling(lineBeingSent, currentDestination, movementMode)); } return(lineBeingSent); }
public static string ApplyLeveling(string lineBeingSent, Vector3 currentDestination, PrinterMachineInstruction.MovementTypes movementMode) { if (PrinterConnectionAndCommunication.Instance.ActivePrinter != null && PrinterConnectionAndCommunication.Instance.ActivePrinter.DoPrintLeveling && (lineBeingSent.StartsWith("G0 ") || lineBeingSent.StartsWith("G1 "))) { lineBeingSent = PrintLevelingPlane.Instance.ApplyLeveling(currentDestination, movementMode, lineBeingSent); } return(lineBeingSent); }
public static string ApplyLeveling(string lineBeingSent, Vector3 currentDestination, PrinterMachineInstruction.MovementTypes movementMode) { var settings = ActiveSliceSettings.Instance; if (settings?.DoPrintLeveling() == true && (lineBeingSent.StartsWith("G0 ") || lineBeingSent.StartsWith("G1 ")) && lineBeingSent.Length > 2 && lineBeingSent[2] == ' ') { return(GetLevelingFunctions(numberOfRadialSamples, settings.GetPrintLevelingData(), ActiveSliceSettings.Instance.BedCenter()) .DoApplyLeveling(lineBeingSent, currentDestination, movementMode)); } return(lineBeingSent); }