Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
		}
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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;
 }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }