diff --git a/src/pygcode/__init__.py b/src/pygcode/__init__.py index 08b0fb7..a5a36c9 100644 --- a/src/pygcode/__init__.py +++ b/src/pygcode/__init__.py @@ -192,261 +192,266 @@ from .words import ( ) # GCode -from .gcodes import ( - words2gcodes, text2gcodes, split_gcodes, - # $ python -c "from pygcode.gcodes import _gcode_class_infostr as x; print(x(prefix=' # '))" - # - GCode: - # - GCodeCannedCycle: - # G89 - GCodeBoringCycleDwellFeedOut: G89: Boring Cycle, Dwell, Feed Out - # G85 - GCodeBoringCycleFeedOut: G85: Boring Cycle, Feed Out - # G81 - GCodeDrillingCycle: G81: Drilling Cycle - # G73 - GCodeDrillingCycleChipBreaking: G73: Drilling Cycle, ChipBreaking - # G82 - GCodeDrillingCycleDwell: G82: Drilling Cycle, Dwell - # G83 - GCodeDrillingCyclePeck: G83: Drilling Cycle, Peck - # G76 - GCodeThreadingCycle: G76: Threading Cycle - # - GCodeCannedReturnMode: - # G98 - GCodeCannedCycleReturnPrevLevel: G98: Canned Cycle Return to the level set prior to cycle start - # G99 - GCodeCannedCycleReturnToR: G99: Canned Cycle Return to the level set by R - # - GCodeCoolant: - # M08 - GCodeCoolantFloodOn: M8: turn flood coolant on - # M07 - GCodeCoolantMistOn: M7: turn mist coolant on - # M09 - GCodeCoolantOff: M9: turn all coolant off - # - GCodeCutterRadiusComp: - # G41 - GCodeCutterCompLeft: G41: Cutter Radius Compensation (left) - # G42 - GCodeCutterCompRight: G42: Cutter Radius Compensation (right) - # G40 - GCodeCutterRadiusCompOff: G40: Cutter Radius Compensation Off - # G41.1 - GCodeDynamicCutterCompLeft: G41.1: Dynamic Cutter Radius Compensation (left) - # G42.1 - GCodeDynamicCutterCompRight: G42.1: Dynamic Cutter Radius Compensation (right) - # - GCodeDefinition: - # - GCodeLineNumber: N: Line Number - # - GCodeProgramName: O: Program Name - # - GCodeDistanceMode: - # G90.1 - GCodeAbsoluteArcDistanceMode: G90.1: Absolute Distance Mode for Arc IJK Parameters - # G90 - GCodeAbsoluteDistanceMode: G90: Absolute Distance Mode - # G91.1 - GCodeIncrementalArcDistanceMode: G91.1: Incremental Distance Mode for Arc IJK Parameters - # G91 - GCodeIncrementalDistanceMode: G91: Incremental Distance Mode - # G07 - GCodeLatheDiameterMode: G7: Lathe Diameter Mode - # G08 - GCodeLatheRadiusMode: G8: Lathe Radius Mode - # - GCodeFeedRateMode: - # G93 - GCodeInverseTimeMode: G93: Inverse Time Mode - # G94 - GCodeUnitsPerMinuteMode: G94: Units Per MinuteMode - # G95 - GCodeUnitsPerRevolution: G95: Units Per Revolution - # - GCodeIO: - # - GCodeAnalogOutput: Analog Output - # M68 - GCodeAnalogOutputImmediate: M68: Analog Output, Immediate - # M67 - GCodeAnalogOutputSyncd: M67: Analog Output, Synchronized - # - GCodeDigitalOutput: Digital Output Control - # M65 - GCodeDigitalOutputOff: M65: turn off digital output immediately - # M63 - GCodeDigitalOutputOffSyncd: M63: turn off digital output synchronized with motion - # M64 - GCodeDigitalOutputOn: M64: turn on digital output immediately - # M62 - GCodeDigitalOutputOnSyncd: M62: turn on digital output synchronized with motion - # M66 - GCodeWaitOnInput: M66: Wait on Input - # - GCodeMotion: - # - GCodeArcMove: Arc Move - # G03 - GCodeArcMoveCCW: G3: Arc Move (counter-clockwise) - # G02 - GCodeArcMoveCW: G2: Arc Move (clockwise) - # G80 - GCodeCancelCannedCycle: G80: Cancel Canned Cycle - # G05 - GCodeCublcSpline: G5: Cubic Spline - # G04 - GCodeDwell: G4: Dwell - # G01 - GCodeLinearMove: G1: Linear Move - # G05.2 - GCodeNURBS: G5.2: Non-uniform rational basis spline (NURBS) - # G05.3 - GCodeNURBSEnd: G5.3: end NURBS mode - # G05.1 - GCodeQuadraticSpline: G5.1: Quadratic Spline - # G00 - GCodeRapidMove: G0: Rapid Move - # G33.1 - GCodeRigidTapping: G33.1: Rigid Tapping - # G33 - GCodeSpindleSyncMotion: G33: Spindle Synchronized Motion - # - GCodeStraightProbe: G38.2-G38.5: Straight Probe - # - GCodeNonModal: - # G92 - GCodeCoordSystemOffset: G92: Coordinate System Offset - # - GCodeGotoPredefinedPosition: G28,G30: Goto Predefined Position (rapid movement) - # G53 - GCodeMoveInMachineCoords: G53: Move in Machine Coordinates - # - GCodeResetCoordSystemOffset: G92.1,G92.2: Reset Coordinate System Offset - # G92.3 - GCodeRestoreCoordSystemOffset: G92.3: Restore Coordinate System Offset - # G10 - GCodeSet: G10: Set stuff - # - GCodeSetPredefinedPosition: G28.1,G30.1: Set Predefined Position - # M06 - GCodeToolChange: M6: Tool Change - # M61 - GCodeToolSetCurrent: M61: Set Current Tool - # - GCodeUserDefined: M101-M199: User Defined Commands - # - GCodeOtherModal: - # M52 - GCodeAdaptiveFeed: M52: Adaptive Feed Control - # M50 - GCodeFeedOverride: M50: Feed Override Control - # - GCodeFeedRate: F: Set Feed Rate - # M53 - GCodeFeedStop: M53: Feed Stop Control - # - GCodeSelectCoordinateSystem: Select Coordinate System - # G54 - GCodeSelectCoordinateSystem1: Select Coordinate System 1 - # G55 - GCodeSelectCoordinateSystem2: Select Coordinate System 2 - # G56 - GCodeSelectCoordinateSystem3: Select Coordinate System 3 - # G57 - GCodeSelectCoordinateSystem4: Select Coordinate System 4 - # G58 - GCodeSelectCoordinateSystem5: Select Coordinate System 5 - # G59 - GCodeSelectCoordinateSystem6: Select Coordinate System 6 - # G59.1 - GCodeSelectCoordinateSystem7: Select Coordinate System 7 - # G59.2 - GCodeSelectCoordinateSystem8: Select Coordinate System 8 - # G59.3 - GCodeSelectCoordinateSystem9: Select Coordinate System 9 - # - GCodeSelectTool: T: Select Tool - # M49 - GCodeSpeedAndFeedOverrideOff: M49: Speed and Feed Override Control Off - # M48 - GCodeSpeedAndFeedOverrideOn: M48: Speed and Feed Override Control On - # - GCodeSpindleSpeed: S: Set Spindle Speed - # M51 - GCodeSpindleSpeedOverride: M51: Spindle Speed Override Control - # - GCodePathControlMode: - # G61 - GCodeExactPathMode: G61: Exact path mode - # G61.1 - GCodeExactStopMode: G61.1: Exact stop mode - # G64 - GCodePathBlendingMode: G64: Path Blending - # - GCodePlaneSelect: - # G17.1 - GCodeSelectUVPlane: G17.1: select UV plane - # G19.1 - GCodeSelectVWPlane: G19.1: select VW plane - # G18.1 - GCodeSelectWUPlane: G18.1: select WU plane - # G17 - GCodeSelectXYPlane: G17: select XY plane (default) - # G19 - GCodeSelectYZPlane: G19: select YZ plane - # G18 - GCodeSelectZXPlane: G18: select ZX plane - # - GCodeProgramControl: - # M02 - GCodeEndProgram: M2: Program End - # M30 - GCodeEndProgramPalletShuttle: M30: exchange pallet shuttles and end the program - # M60 - GCodePalletChangePause: M60: Pallet Change Pause - # M00 - GCodePauseProgram: M0: Program Pause - # M01 - GCodePauseProgramOptional: M1: Program Pause (optional) - # - GCodeSpindle: - # M19 - GCodeOrientSpindle: M19: Orient Spindle - # - GCodeSpindleSpeedMode: - # G96 - GCodeSpindleConstantSurfaceSpeedMode: G96: Spindle Constant Surface Speed - # G97 - GCodeSpindleRPMMode: G97: Spindle RPM Speed - # - GCodeStartSpindle: M3,M4: Start Spindle Clockwise - # M04 - GCodeStartSpindleCCW: M4: Start Spindle Counter-Clockwise - # M03 - GCodeStartSpindleCW: M3: Start Spindle Clockwise - # M05 - GCodeStopSpindle: M5: Stop Spindle - # - GCodeToolLength: - # G43.2 - GCodeAddToolLengthOffset: G43.2: Appkly Additional Tool Length Offset - # G49 - GCodeCancelToolLengthOffset: G49: Cancel Tool Length Compensation - # G43.1 - GCodeDynamicToolLengthOffset: G43.1: Dynamic Tool Length Offset - # G43 - GCodeToolLengthOffset: G43: Tool Length Offset - # - GCodeUnit: - # G20 - GCodeUseInches: G20: use inches for length units - # G21 - GCodeUseMillimeters: G21: use millimeters for length units - - # $ python -c "from pygcode.gcodes import GCode, _subclasses as sc; print(',\\n '.join(sorted(g.__name__ for g in sc(GCode))))" - GCode, - GCodeAbsoluteArcDistanceMode, - GCodeAbsoluteDistanceMode, - GCodeAdaptiveFeed, - GCodeAddToolLengthOffset, - GCodeAnalogOutput, - GCodeAnalogOutputImmediate, - GCodeAnalogOutputSyncd, - GCodeArcMove, - GCodeArcMoveCCW, - GCodeArcMoveCW, - GCodeBoringCycleDwellFeedOut, - GCodeBoringCycleFeedOut, - #GCodeCancelCannedCycle, - GCodeCancelToolLengthOffset, - GCodeCannedCycle, - GCodeCannedCycleReturnPrevLevel, - GCodeCannedCycleReturnToR, - GCodeCannedReturnMode, - GCodeCoolant, - GCodeCoolantFloodOn, - GCodeCoolantMistOn, - GCodeCoolantOff, - GCodeCoordSystemOffset, - GCodeCublcSpline, - GCodeCutterCompLeft, - GCodeCutterCompRight, - GCodeCutterRadiusComp, - GCodeCutterRadiusCompOff, - GCodeDefinition, - GCodeDigitalOutput, - GCodeDigitalOutputOff, - GCodeDigitalOutputOffSyncd, - GCodeDigitalOutputOn, - GCodeDigitalOutputOnSyncd, - GCodeDistanceMode, - GCodeDrillingCycle, - GCodeDrillingCycleChipBreaking, - GCodeDrillingCycleDwell, - GCodeDrillingCyclePeck, - GCodeDwell, - GCodeDynamicCutterCompLeft, - GCodeDynamicCutterCompRight, - GCodeDynamicToolLengthOffset, - GCodeEndProgram, - GCodeEndProgramPalletShuttle, - GCodeExactPathMode, - GCodeExactStopMode, - GCodeFeedOverride, - GCodeFeedRate, - GCodeFeedRateMode, - GCodeFeedStop, - GCodeGotoPredefinedPosition, - GCodeIO, - GCodeIncrementalArcDistanceMode, - GCodeIncrementalDistanceMode, - GCodeInverseTimeMode, - GCodeLatheDiameterMode, - GCodeLatheRadiusMode, - GCodeLineNumber, - GCodeLinearMove, - GCodeMotion, - GCodeMoveInMachineCoords, - GCodeNURBS, - GCodeNURBSEnd, - GCodeNonModal, - GCodeOrientSpindle, - GCodeOtherModal, - GCodePalletChangePause, - GCodePathBlendingMode, - GCodePathControlMode, - GCodePauseProgram, - GCodePauseProgramOptional, - GCodePlaneSelect, - GCodeProgramControl, - GCodeProgramName, - GCodeQuadraticSpline, - GCodeRapidMove, - GCodeResetCoordSystemOffset, - GCodeRestoreCoordSystemOffset, - GCodeRigidTapping, - GCodeSelectCoordinateSystem, - GCodeSelectCoordinateSystem1, - GCodeSelectCoordinateSystem2, - GCodeSelectCoordinateSystem3, - GCodeSelectCoordinateSystem4, - GCodeSelectCoordinateSystem5, - GCodeSelectCoordinateSystem6, - GCodeSelectCoordinateSystem7, - GCodeSelectCoordinateSystem8, - GCodeSelectCoordinateSystem9, - GCodeSelectTool, - GCodeSelectUVPlane, - GCodeSelectVWPlane, - GCodeSelectWUPlane, - GCodeSelectXYPlane, - GCodeSelectYZPlane, - GCodeSelectZXPlane, - GCodeSet, - GCodeSetPredefinedPosition, - GCodeSpeedAndFeedOverrideOff, - GCodeSpeedAndFeedOverrideOn, - GCodeSpindle, - GCodeSpindleConstantSurfaceSpeedMode, - GCodeSpindleRPMMode, - GCodeSpindleSpeed, - GCodeSpindleSpeedMode, - GCodeSpindleSpeedOverride, - GCodeSpindleSyncMotion, - GCodeStartSpindle, - GCodeStartSpindleCCW, - GCodeStartSpindleCW, - GCodeStopSpindle, - GCodeStraightProbe, - GCodeThreadingCycle, - GCodeToolChange, - GCodeToolLength, - GCodeToolLengthOffset, - GCodeToolSetCurrent, - GCodeUnit, - GCodeUnitsPerMinuteMode, - GCodeUnitsPerRevolution, - GCodeUseInches, - GCodeUseMillimeters, - GCodeUserDefined, - GCodeWaitOnInput -) +from pygcode.dialects import get_default as get_default_dialect +match get_default_dialect(): + case 'marlin2': + pass + case _: + from .gcodes import ( + words2gcodes, text2gcodes, split_gcodes, + # $ python -c "from pygcode.gcodes import _gcode_class_infostr as x; print(x(prefix=' # '))" + # - GCode: + # - GCodeCannedCycle: + # G89 - GCodeBoringCycleDwellFeedOut: G89: Boring Cycle, Dwell, Feed Out + # G85 - GCodeBoringCycleFeedOut: G85: Boring Cycle, Feed Out + # G81 - GCodeDrillingCycle: G81: Drilling Cycle + # G73 - GCodeDrillingCycleChipBreaking: G73: Drilling Cycle, ChipBreaking + # G82 - GCodeDrillingCycleDwell: G82: Drilling Cycle, Dwell + # G83 - GCodeDrillingCyclePeck: G83: Drilling Cycle, Peck + # G76 - GCodeThreadingCycle: G76: Threading Cycle + # - GCodeCannedReturnMode: + # G98 - GCodeCannedCycleReturnPrevLevel: G98: Canned Cycle Return to the level set prior to cycle start + # G99 - GCodeCannedCycleReturnToR: G99: Canned Cycle Return to the level set by R + # - GCodeCoolant: + # M08 - GCodeCoolantFloodOn: M8: turn flood coolant on + # M07 - GCodeCoolantMistOn: M7: turn mist coolant on + # M09 - GCodeCoolantOff: M9: turn all coolant off + # - GCodeCutterRadiusComp: + # G41 - GCodeCutterCompLeft: G41: Cutter Radius Compensation (left) + # G42 - GCodeCutterCompRight: G42: Cutter Radius Compensation (right) + # G40 - GCodeCutterRadiusCompOff: G40: Cutter Radius Compensation Off + # G41.1 - GCodeDynamicCutterCompLeft: G41.1: Dynamic Cutter Radius Compensation (left) + # G42.1 - GCodeDynamicCutterCompRight: G42.1: Dynamic Cutter Radius Compensation (right) + # - GCodeDefinition: + # - GCodeLineNumber: N: Line Number + # - GCodeProgramName: O: Program Name + # - GCodeDistanceMode: + # G90.1 - GCodeAbsoluteArcDistanceMode: G90.1: Absolute Distance Mode for Arc IJK Parameters + # G90 - GCodeAbsoluteDistanceMode: G90: Absolute Distance Mode + # G91.1 - GCodeIncrementalArcDistanceMode: G91.1: Incremental Distance Mode for Arc IJK Parameters + # G91 - GCodeIncrementalDistanceMode: G91: Incremental Distance Mode + # G07 - GCodeLatheDiameterMode: G7: Lathe Diameter Mode + # G08 - GCodeLatheRadiusMode: G8: Lathe Radius Mode + # - GCodeFeedRateMode: + # G93 - GCodeInverseTimeMode: G93: Inverse Time Mode + # G94 - GCodeUnitsPerMinuteMode: G94: Units Per MinuteMode + # G95 - GCodeUnitsPerRevolution: G95: Units Per Revolution + # - GCodeIO: + # - GCodeAnalogOutput: Analog Output + # M68 - GCodeAnalogOutputImmediate: M68: Analog Output, Immediate + # M67 - GCodeAnalogOutputSyncd: M67: Analog Output, Synchronized + # - GCodeDigitalOutput: Digital Output Control + # M65 - GCodeDigitalOutputOff: M65: turn off digital output immediately + # M63 - GCodeDigitalOutputOffSyncd: M63: turn off digital output synchronized with motion + # M64 - GCodeDigitalOutputOn: M64: turn on digital output immediately + # M62 - GCodeDigitalOutputOnSyncd: M62: turn on digital output synchronized with motion + # M66 - GCodeWaitOnInput: M66: Wait on Input + # - GCodeMotion: + # - GCodeArcMove: Arc Move + # G03 - GCodeArcMoveCCW: G3: Arc Move (counter-clockwise) + # G02 - GCodeArcMoveCW: G2: Arc Move (clockwise) + # G80 - GCodeCancelCannedCycle: G80: Cancel Canned Cycle + # G05 - GCodeCublcSpline: G5: Cubic Spline + # G04 - GCodeDwell: G4: Dwell + # G01 - GCodeLinearMove: G1: Linear Move + # G05.2 - GCodeNURBS: G5.2: Non-uniform rational basis spline (NURBS) + # G05.3 - GCodeNURBSEnd: G5.3: end NURBS mode + # G05.1 - GCodeQuadraticSpline: G5.1: Quadratic Spline + # G00 - GCodeRapidMove: G0: Rapid Move + # G33.1 - GCodeRigidTapping: G33.1: Rigid Tapping + # G33 - GCodeSpindleSyncMotion: G33: Spindle Synchronized Motion + # - GCodeStraightProbe: G38.2-G38.5: Straight Probe + # - GCodeNonModal: + # G92 - GCodeCoordSystemOffset: G92: Coordinate System Offset + # - GCodeGotoPredefinedPosition: G28,G30: Goto Predefined Position (rapid movement) + # G53 - GCodeMoveInMachineCoords: G53: Move in Machine Coordinates + # - GCodeResetCoordSystemOffset: G92.1,G92.2: Reset Coordinate System Offset + # G92.3 - GCodeRestoreCoordSystemOffset: G92.3: Restore Coordinate System Offset + # G10 - GCodeSet: G10: Set stuff + # - GCodeSetPredefinedPosition: G28.1,G30.1: Set Predefined Position + # M06 - GCodeToolChange: M6: Tool Change + # M61 - GCodeToolSetCurrent: M61: Set Current Tool + # - GCodeUserDefined: M101-M199: User Defined Commands + # - GCodeOtherModal: + # M52 - GCodeAdaptiveFeed: M52: Adaptive Feed Control + # M50 - GCodeFeedOverride: M50: Feed Override Control + # - GCodeFeedRate: F: Set Feed Rate + # M53 - GCodeFeedStop: M53: Feed Stop Control + # - GCodeSelectCoordinateSystem: Select Coordinate System + # G54 - GCodeSelectCoordinateSystem1: Select Coordinate System 1 + # G55 - GCodeSelectCoordinateSystem2: Select Coordinate System 2 + # G56 - GCodeSelectCoordinateSystem3: Select Coordinate System 3 + # G57 - GCodeSelectCoordinateSystem4: Select Coordinate System 4 + # G58 - GCodeSelectCoordinateSystem5: Select Coordinate System 5 + # G59 - GCodeSelectCoordinateSystem6: Select Coordinate System 6 + # G59.1 - GCodeSelectCoordinateSystem7: Select Coordinate System 7 + # G59.2 - GCodeSelectCoordinateSystem8: Select Coordinate System 8 + # G59.3 - GCodeSelectCoordinateSystem9: Select Coordinate System 9 + # - GCodeSelectTool: T: Select Tool + # M49 - GCodeSpeedAndFeedOverrideOff: M49: Speed and Feed Override Control Off + # M48 - GCodeSpeedAndFeedOverrideOn: M48: Speed and Feed Override Control On + # - GCodeSpindleSpeed: S: Set Spindle Speed + # M51 - GCodeSpindleSpeedOverride: M51: Spindle Speed Override Control + # - GCodePathControlMode: + # G61 - GCodeExactPathMode: G61: Exact path mode + # G61.1 - GCodeExactStopMode: G61.1: Exact stop mode + # G64 - GCodePathBlendingMode: G64: Path Blending + # - GCodePlaneSelect: + # G17.1 - GCodeSelectUVPlane: G17.1: select UV plane + # G19.1 - GCodeSelectVWPlane: G19.1: select VW plane + # G18.1 - GCodeSelectWUPlane: G18.1: select WU plane + # G17 - GCodeSelectXYPlane: G17: select XY plane (default) + # G19 - GCodeSelectYZPlane: G19: select YZ plane + # G18 - GCodeSelectZXPlane: G18: select ZX plane + # - GCodeProgramControl: + # M02 - GCodeEndProgram: M2: Program End + # M30 - GCodeEndProgramPalletShuttle: M30: exchange pallet shuttles and end the program + # M60 - GCodePalletChangePause: M60: Pallet Change Pause + # M00 - GCodePauseProgram: M0: Program Pause + # M01 - GCodePauseProgramOptional: M1: Program Pause (optional) + # - GCodeSpindle: + # M19 - GCodeOrientSpindle: M19: Orient Spindle + # - GCodeSpindleSpeedMode: + # G96 - GCodeSpindleConstantSurfaceSpeedMode: G96: Spindle Constant Surface Speed + # G97 - GCodeSpindleRPMMode: G97: Spindle RPM Speed + # - GCodeStartSpindle: M3,M4: Start Spindle Clockwise + # M04 - GCodeStartSpindleCCW: M4: Start Spindle Counter-Clockwise + # M03 - GCodeStartSpindleCW: M3: Start Spindle Clockwise + # M05 - GCodeStopSpindle: M5: Stop Spindle + # - GCodeToolLength: + # G43.2 - GCodeAddToolLengthOffset: G43.2: Appkly Additional Tool Length Offset + # G49 - GCodeCancelToolLengthOffset: G49: Cancel Tool Length Compensation + # G43.1 - GCodeDynamicToolLengthOffset: G43.1: Dynamic Tool Length Offset + # G43 - GCodeToolLengthOffset: G43: Tool Length Offset + # - GCodeUnit: + # G20 - GCodeUseInches: G20: use inches for length units + # G21 - GCodeUseMillimeters: G21: use millimeters for length units + + # $ python -c "from pygcode.gcodes import GCode, _subclasses as sc; print(',\\n '.join(sorted(g.__name__ for g in sc(GCode))))" + GCode, + GCodeAbsoluteArcDistanceMode, + GCodeAbsoluteDistanceMode, + GCodeAdaptiveFeed, + GCodeAddToolLengthOffset, + GCodeAnalogOutput, + GCodeAnalogOutputImmediate, + GCodeAnalogOutputSyncd, + GCodeArcMove, + GCodeArcMoveCCW, + GCodeArcMoveCW, + GCodeBoringCycleDwellFeedOut, + GCodeBoringCycleFeedOut, + #GCodeCancelCannedCycle, + GCodeCancelToolLengthOffset, + GCodeCannedCycle, + GCodeCannedCycleReturnPrevLevel, + GCodeCannedCycleReturnToR, + GCodeCannedReturnMode, + GCodeCoolant, + GCodeCoolantFloodOn, + GCodeCoolantMistOn, + GCodeCoolantOff, + GCodeCoordSystemOffset, + GCodeCublcSpline, + GCodeCutterCompLeft, + GCodeCutterCompRight, + GCodeCutterRadiusComp, + GCodeCutterRadiusCompOff, + GCodeDefinition, + GCodeDigitalOutput, + GCodeDigitalOutputOff, + GCodeDigitalOutputOffSyncd, + GCodeDigitalOutputOn, + GCodeDigitalOutputOnSyncd, + GCodeDistanceMode, + GCodeDrillingCycle, + GCodeDrillingCycleChipBreaking, + GCodeDrillingCycleDwell, + GCodeDrillingCyclePeck, + GCodeDwell, + GCodeDynamicCutterCompLeft, + GCodeDynamicCutterCompRight, + GCodeDynamicToolLengthOffset, + GCodeEndProgram, + GCodeEndProgramPalletShuttle, + GCodeExactPathMode, + GCodeExactStopMode, + GCodeFeedOverride, + GCodeFeedRate, + GCodeFeedRateMode, + GCodeFeedStop, + GCodeGotoPredefinedPosition, + GCodeIO, + GCodeIncrementalArcDistanceMode, + GCodeIncrementalDistanceMode, + GCodeInverseTimeMode, + GCodeLatheDiameterMode, + GCodeLatheRadiusMode, + GCodeLineNumber, + GCodeLinearMove, + GCodeMotion, + GCodeMoveInMachineCoords, + GCodeNURBS, + GCodeNURBSEnd, + GCodeNonModal, + GCodeOrientSpindle, + GCodeOtherModal, + GCodePalletChangePause, + GCodePathBlendingMode, + GCodePathControlMode, + GCodePauseProgram, + GCodePauseProgramOptional, + GCodePlaneSelect, + GCodeProgramControl, + GCodeProgramName, + GCodeQuadraticSpline, + GCodeRapidMove, + GCodeResetCoordSystemOffset, + GCodeRestoreCoordSystemOffset, + GCodeRigidTapping, + GCodeSelectCoordinateSystem, + GCodeSelectCoordinateSystem1, + GCodeSelectCoordinateSystem2, + GCodeSelectCoordinateSystem3, + GCodeSelectCoordinateSystem4, + GCodeSelectCoordinateSystem5, + GCodeSelectCoordinateSystem6, + GCodeSelectCoordinateSystem7, + GCodeSelectCoordinateSystem8, + GCodeSelectCoordinateSystem9, + GCodeSelectTool, + GCodeSelectUVPlane, + GCodeSelectVWPlane, + GCodeSelectWUPlane, + GCodeSelectXYPlane, + GCodeSelectYZPlane, + GCodeSelectZXPlane, + GCodeSet, + GCodeSetPredefinedPosition, + GCodeSpeedAndFeedOverrideOff, + GCodeSpeedAndFeedOverrideOn, + GCodeSpindle, + GCodeSpindleConstantSurfaceSpeedMode, + GCodeSpindleRPMMode, + GCodeSpindleSpeed, + GCodeSpindleSpeedMode, + GCodeSpindleSpeedOverride, + GCodeSpindleSyncMotion, + GCodeStartSpindle, + GCodeStartSpindleCCW, + GCodeStartSpindleCW, + GCodeStopSpindle, + GCodeStraightProbe, + GCodeThreadingCycle, + GCodeToolChange, + GCodeToolLength, + GCodeToolLengthOffset, + GCodeToolSetCurrent, + GCodeUnit, + GCodeUnitsPerMinuteMode, + GCodeUnitsPerRevolution, + GCodeUseInches, + GCodeUseMillimeters, + GCodeUserDefined, + GCodeWaitOnInput + ) diff --git a/src/pygcode/dialects/__init__.py b/src/pygcode/dialects/__init__.py index 847b881..82c9603 100644 --- a/src/pygcode/dialects/__init__.py +++ b/src/pygcode/dialects/__init__.py @@ -19,7 +19,6 @@ from .mapping import word_dialect # Dialects from . import linuxcnc -from . import reprap from . import prusa from . import marlin2 diff --git a/src/pygcode/dialects/reprap.py b/src/pygcode/dialects/reprap.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/pygcode/gcodes.py b/src/pygcode/gcodes.py index 3e5f02a..bd54a13 100644 --- a/src/pygcode/gcodes.py +++ b/src/pygcode/gcodes.py @@ -1,3 +1,4 @@ +# vim: ts=4, number import sys from collections import defaultdict from copy import copy @@ -150,7 +151,7 @@ match get_default_dialect(): case 'prusa': from .gcodes_prusa import * case _: - from .gcodes_lecacy import * + from .gcodes_legacy import * # ======================= Utilities ======================= diff --git a/src/pygcode/gcodes_base.py b/src/pygcode/gcodes_base.py index 7324a90..2abc978 100644 --- a/src/pygcode/gcodes_base.py +++ b/src/pygcode/gcodes_base.py @@ -1,3 +1,6 @@ +from .gcodes import MODAL_GROUP_MAP +from .words import Word, text2words + class GCode(object): # Defining Word word_key = None # Word instance to use in lookup diff --git a/src/pygcode/gcodes_legacy.py b/src/pygcode/gcodes_legacy.py index 3266640..f4245f6 100644 --- a/src/pygcode/gcodes_legacy.py +++ b/src/pygcode/gcodes_legacy.py @@ -1,4 +1,6 @@ from .gcodes_base import * +from .gcodes import DIALECT_UNKNOWN +from .utils import Vector3, Quaternion, quat2coord_system # ======================= Motion ======================= # (X Y Z A B C U V W apply to all motions) diff --git a/src/pygcode/gcodes_marlin.patch b/src/pygcode/gcodes_marlin.patch new file mode 100644 index 0000000..8e80e38 --- /dev/null +++ b/src/pygcode/gcodes_marlin.patch @@ -0,0 +1,137 @@ +100,104c100,104 +< class GCodeBedLevelingPointg1(GCodeMotion): +< """G29: Probe the bed and enable leveling compensation.""" +< param_letters = "ACOQEDJV" +< dialects = ['marlin2'] +< word_key = Word('G', 29) +--- +> #class GCodeBedLevelingPointg1(GCodeMotion): +> # """G29: Probe the bed and enable leveling compensation.""" +> # param_letters = "ACOQEDJV" +> # dialects = ['marlin2'] +> # word_key = Word('G', 29) +112,134c112,134 +< class GCodeBedLevelingLinearg2(GCodeMotion): +< """G29: Probe the bed and enable leveling compensation.""" +< param_letters = "ACOQXYPSEDTHFBLRJV" +< dialects = ['marlin2'] +< word_key = Word('G', 29) +< +< class GCodeBedLevelingManualm1(GCodeMotion): +< """G29: Measure Z heights in a grid, enable leveling compensation""" +< param_letters = "SIJXYZ" +< dialects = ['marlin2'] +< word_key = Word('G', 29) +< +< class GCodeBedLeveling(GCodeMotion): +< """G29: Probe the bed and enable leveling compensation""" +< param_letters = "" +< dialects = ['marlin2'] +< word_key = Word('G', 29) +< +< class GCodeBedLevelingUnifiedm3(GCodeMotion): +< """G29: Probe the bed and enable leveling compensation.""" +< param_letters = "ABCDEFHIJKLPQRSTUVWXY" +< dialects = ['marlin2'] +< word_key = Word('G', 29) +--- +> #class GCodeBedLevelingLinearg2(GCodeMotion): +> # """G29: Probe the bed and enable leveling compensation.""" +> # param_letters = "ACOQXYPSEDTHFBLRJV" +> # dialects = ['marlin2'] +> # word_key = Word('G', 29) +> +> #class GCodeBedLevelingManualm1(GCodeMotion): +> # """G29: Measure Z heights in a grid, enable leveling compensation""" +> # param_letters = "SIJXYZ" +> # dialects = ['marlin2'] +> # word_key = Word('G', 29) +> +> #class GCodeBedLeveling(GCodeMotion): +> # """G29: Probe the bed and enable leveling compensation""" +> # param_letters = "" +> # dialects = ['marlin2'] +> # word_key = Word('G', 29) +> +> #class GCodeBedLevelingUnifiedm3(GCodeMotion): +> # """G29: Probe the bed and enable leveling compensation.""" +> # param_letters = "ABCDEFHIJKLPQRSTUVWXY" +> # dialects = ['marlin2'] +> # word_key = Word('G', 29) +160,164c160,164 +< class GCodeMechanicalGantryCalibrationb(GCodeMotion): +< """G34: Modern replacement for Průša's TMC_Z_CALIBRATION""" +< param_letters = "SZ" +< dialects = ['marlin2'] +< word_key = Word('G', 34) +--- +> #class GCodeMechanicalGantryCalibrationb(GCodeMotion): +> # """G34: Modern replacement for Průša's TMC_Z_CALIBRATION""" +> # param_letters = "SZ" +> # dialects = ['marlin2'] +> # word_key = Word('G', 34) +425,432c425,426 +< """M43: Get information about pins.""" +< param_letters = "PWETSI" +< dialects = ['marlin2'] +< word_key = Word('M', 43) +< +< class GCodeTogglePinsb(GCodeDigitalOutput): +< """M43T: Get information about pins.""" +< param_letters = "SLIRW" +--- +> """M43: Get information about pins / set pins""" +> param_letters = "PWETSIRL" +652c646 +< class GCodeBaricudaOpen(GCodeDigitalOutput): +--- +> class GCodeBaricuda1Open(GCodeDigitalOutput): +658c652 +< class GCodeBaricudaClose(GCodeDigitalOutput): +--- +> class GCodeBaricuda1Close(GCodeDigitalOutput): +664,665c658 +< # TODO: duplicate class name BaricudaOpen +< class GCodeBaricudaOpen(GCodeDigitalOutput): +--- +> class GCodeBaricuda2Open(GCodeDigitalOutput): +671,672c664 +< # TODO: duplicate class name BaricudaClose +< class GCodeBaricudaClose(GCodeDigitalOutput): +--- +> class GCodeBaricuda2Close(GCodeDigitalOutput): +768,769c760 +< # TODO: duplicate class name SetLaserCoolerTemperature +< class GCodeSetLaserCoolerTemperature(GCodeCoolant): +--- +> class GCodeSetLaserCoolerTemperatureAndWait(GCodeCoolant): +775c766 +< class GCodeSetFilamentDiameter(GCodeOtherModal): +--- +> class GCodeSetFilamentDiameterVolumetric(GCodeOtherModal): +1051d1041 +< # TODO: duplicate class name SetFilamentDiameter +1250,1254c1240,1244 +< class GCodeDeltaConfiguration(GCodeOtherModal): +< """M665: Set delta geometry values""" +< param_letters = "HLRSXYZABC" +< dialects = ['marlin2'] +< word_key = Word('M', 665) +--- +> #class GCodeDeltaConfiguration(GCodeOtherModal): +> # """M665: Set delta geometry values""" +> # param_letters = "HLRSXYZABC" +> # dialects = ['marlin2'] +> # word_key = Word('M', 665) +1268,1272c1258,1262 +< class GCodeSetDeltaEndstopAdjustmentsa(GCodeOtherModal): +< """M666: Set Delta endstop adjustments""" +< param_letters = "XYZ" +< dialects = ['marlin2'] +< word_key = Word('M', 666) +--- +> #class GCodeSetDeltaEndstopAdjustmentsa(GCodeOtherModal): +> # """M666: Set Delta endstop adjustments""" +> # param_letters = "XYZ" +> # dialects = ['marlin2'] +> # word_key = Word('M', 666) diff --git a/src/pygcode/gcodes_marlin.py b/src/pygcode/gcodes_marlin.py index 6d3b65a..dc2593e 100644 --- a/src/pygcode/gcodes_marlin.py +++ b/src/pygcode/gcodes_marlin.py @@ -1,7 +1,7 @@ -# DO NOT EDIT - file generated with src/pygcode/tools/marlin2_parse_MarlinDocumentation.py +# DO NOT EDIT - file generated with pygcode/src/pygcode/tools/marlin_parse_MarlinDocumentation.py from .gcodes_base import * -class GCodeG0LinearMove(GCodeMotion): +class GCodeLinearMove(GCodeMotion): """G0, G1: Add a straight line movement to the planner""" param_letters = "XYZEFS" dialects = ['marlin2'] @@ -11,7 +11,7 @@ class GCodeG0LinearMove(GCodeMotion): return (w.letter == 'G') and (w.value in [0, 1]) default_word = Word('G', 0) -class GCodeG2ArcOrCircleMove(GCodeArcMove): +class GCodeArcOrCircleMove(GCodeArcMove): """G2, G3: Add an arc or circle movement to the planner""" param_letters = "XYZIJREFPS" dialects = ['marlin2'] @@ -21,43 +21,43 @@ class GCodeG2ArcOrCircleMove(GCodeArcMove): return (w.letter == 'G') and (w.value in [2, 3]) default_word = Word('G', 2) -class GCodeG4Dwell(GCode): +class GCodeDwell(GCode): """G4: Pause the planner""" param_letters = "SP" dialects = ['marlin2'] word_key = Word('G', 4) -class GCodeG5BzierCubicSpline(GCodeMotion): +class GCodeBzierCubicSpline(GCodeMotion): """G5: Cubic B-spline with XYE destination and IJPQ offsets""" param_letters = "XYEFIJPQS" dialects = ['marlin2'] word_key = Word('G', 5) -class GCodeG6DirectStepperMove(GCodeMotion): +class GCodeDirectStepperMove(GCodeMotion): """G6: Perform a direct, uninterpolated, and non-kinematic synchronized move""" param_letters = "IRSXYZE" dialects = ['marlin2'] word_key = Word('G', 6) -class GCodeG10Retract(GCode): +class GCodeRetract(GCode): """G10: Retract the filament""" param_letters = "S" dialects = ['marlin2'] word_key = Word('G', 10) -class GCodeG11Recover(GCode): +class GCodeRecover(GCode): """G11: Recover the filament with firmware-based retract.""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 11) -class GCodeG12CleanTheNozzle(GCodeMotion): +class GCodeCleanTheNozzle(GCodeMotion): """G12: Perform the nozzle cleaning procedure.""" param_letters = "PRSTXYZ" dialects = ['marlin2'] word_key = Word('G', 12) -class GCodeG17CncWorkspacePlanes(GCodePlaneSelect): +class GCodeCncWorkspacePlanes(GCodePlaneSelect): """G17, G18, G19: Select CNC workspace plane""" param_letters = "" dialects = ['marlin2'] @@ -67,115 +67,115 @@ class GCodeG17CncWorkspacePlanes(GCodePlaneSelect): return (w.letter == 'G') and (w.value in [17, 18, 19]) default_word = Word('G', 17) -class GCodeG20InchUnits(GCodeUnit): +class GCodeInchUnits(GCodeUnit): """G20: Set Units to Inches.""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 20) - -class GCodeG21MillimeterUnits(GCodeUnit): + unit_id = 0 +class GCodeMillimeterUnits(GCodeUnit): """G21: Set Units to Millimeters.""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 21) - -class GCodeG26MeshValidationPattern(GCodeMotion): + unit_id = 1 +class GCodeMeshValidationPattern(GCodeMotion): """G26: Test the mesh and adjust.""" param_letters = "BCDFHIKLOPQRSUXY" dialects = ['marlin2'] word_key = Word('G', 26) -class GCodeG27ParkToolhead(GCodeMotion): +class GCodeParkToolhead(GCodeMotion): """G27: Park the current toolhead""" param_letters = "P" dialects = ['marlin2'] word_key = Word('G', 27) -class GCodeG28AutoHome(GCodeMotion): +class GCodeAutoHome(GCodeMotion): """G28: Auto home one or more axes.""" param_letters = "LORXYZ" dialects = ['marlin2'] word_key = Word('G', 28) -class GCodeG29BedLevelingPointg1(GCodeMotion): - """G29: Probe the bed and enable leveling compensation.""" - param_letters = "ACOQEDJV" - dialects = ['marlin2'] - word_key = Word('G', 29) +#class GCodeBedLevelingPointg1(GCodeMotion): +# """G29: Probe the bed and enable leveling compensation.""" +# param_letters = "ACOQEDJV" +# dialects = ['marlin2'] +# word_key = Word('G', 29) -class GCodeG29BedLevelingBilinearm2(GCodeMotion): +class GCodeBedLevelingBilinearm2(GCodeMotion): """G29: Probe the bed and enable leveling compensation.""" param_letters = "ACOQXYZWSEDHFBLRJV" dialects = ['marlin2'] word_key = Word('G', 29) -class GCodeG29BedLevelingLinearg2(GCodeMotion): - """G29: Probe the bed and enable leveling compensation.""" - param_letters = "ACOQXYPSEDTHFBLRJV" - dialects = ['marlin2'] - word_key = Word('G', 29) +#class GCodeBedLevelingLinearg2(GCodeMotion): +# """G29: Probe the bed and enable leveling compensation.""" +# param_letters = "ACOQXYPSEDTHFBLRJV" +# dialects = ['marlin2'] +# word_key = Word('G', 29) -class GCodeG29BedLevelingManualm1(GCodeMotion): - """G29: Measure Z heights in a grid, enable leveling compensation""" - param_letters = "SIJXYZ" - dialects = ['marlin2'] - word_key = Word('G', 29) +#class GCodeBedLevelingManualm1(GCodeMotion): +# """G29: Measure Z heights in a grid, enable leveling compensation""" +# param_letters = "SIJXYZ" +# dialects = ['marlin2'] +# word_key = Word('G', 29) -class GCodeG29BedLeveling(GCodeMotion): - """G29: Probe the bed and enable leveling compensation""" - param_letters = "" - dialects = ['marlin2'] - word_key = Word('G', 29) +#class GCodeBedLeveling(GCodeMotion): +# """G29: Probe the bed and enable leveling compensation""" +# param_letters = "" +# dialects = ['marlin2'] +# word_key = Word('G', 29) -class GCodeG29BedLevelingUnifiedm3(GCodeMotion): - """G29: Probe the bed and enable leveling compensation.""" - param_letters = "ABCDEFHIJKLPQRSTUVWXY" - dialects = ['marlin2'] - word_key = Word('G', 29) +#class GCodeBedLevelingUnifiedm3(GCodeMotion): +# """G29: Probe the bed and enable leveling compensation.""" +# param_letters = "ABCDEFHIJKLPQRSTUVWXY" +# dialects = ['marlin2'] +# word_key = Word('G', 29) -class GCodeG30SingleZProbe(GCodeMotion): +class GCodeSingleZProbe(GCodeMotion): """G30: Probe bed at current XY location""" param_letters = "CXYE" dialects = ['marlin2'] word_key = Word('G', 30) -class GCodeG31DockSled(GCodeMotion): +class GCodeDockSled(GCodeMotion): """G31: Dock the Z probe sled.""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 31) -class GCodeG32UndockSled(GCodeMotion): +class GCodeUndockSled(GCodeMotion): """G32: Undock the Z probe sled.""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 32) -class GCodeG33DeltaAutoCalibration(GCodeMotion): +class GCodeDeltaAutoCalibration(GCodeMotion): """G33: Calibrate various Delta parameters""" param_letters = "CEFPTVOR" dialects = ['marlin2'] word_key = Word('G', 33) -class GCodeG34MechanicalGantryCalibrationb(GCodeMotion): - """G34: Modern replacement for Průša's TMC_Z_CALIBRATION""" - param_letters = "SZ" - dialects = ['marlin2'] - word_key = Word('G', 34) +#class GCodeMechanicalGantryCalibrationb(GCodeMotion): +# """G34: Modern replacement for Průša's TMC_Z_CALIBRATION""" +# param_letters = "SZ" +# dialects = ['marlin2'] +# word_key = Word('G', 34) -class GCodeG34ZSteppersAutoAlignmenta(GCodeMotion): +class GCodeZSteppersAutoAlignmenta(GCodeMotion): """G34: Align multiple Z steppers using a bed probe""" param_letters = "ITAE" dialects = ['marlin2'] word_key = Word('G', 34) -class GCodeG35TrammingAssistant(GCodeMotion): +class GCodeTrammingAssistant(GCodeMotion): """G35: Run a procedure to tram the bed""" param_letters = "S" dialects = ['marlin2'] word_key = Word('G', 35) -class GCodeG38ProbeTarget(GCodeMotion): +class GCodeProbeTarget(GCodeMotion): """G38.2, G38.3, G38.4, G38.5: Probe towards (or away from) a workpiece""" param_letters = "XYZF" dialects = ['marlin2'] @@ -185,19 +185,19 @@ class GCodeG38ProbeTarget(GCodeMotion): return (w.letter == 'G') and (w.value in [38.2, 38.3, 38.4, 38.5]) default_word = Word('G', 38) -class GCodeG42MoveToMeshCoordinate(GCodeSelectCoordinateSystem): +class GCodeMoveToMeshCoordinate(GCodeSelectCoordinateSystem): """G42: Move to a specific point in the leveling mesh""" param_letters = "IJF" dialects = ['marlin2'] word_key = Word('G', 42) -class GCodeG53MoveInMachineCoordinates(GCodeSelectCoordinateSystem): +class GCodeMoveInMachineCoordinates(GCodeSelectCoordinateSystem): """G53: Apply native workspace to the current move.""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 53) -class GCodeG54WorkspaceCoordinateSystem(GCodeSelectCoordinateSystem): +class GCodeWorkspaceCoordinateSystem(GCodeSelectCoordinateSystem): """G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3: Select a workspace coordinate system""" param_letters = "" dialects = ['marlin2'] @@ -207,55 +207,55 @@ class GCodeG54WorkspaceCoordinateSystem(GCodeSelectCoordinateSystem): return (w.letter == 'G') and (w.value in [54, 55, 56, 57, 58, 59, 59.1, 59.2, 59.3]) default_word = Word('G', 54) -class GCodeG60SaveCurrentPosition(GCode): +class GCodeSaveCurrentPosition(GCode): """G60: Save current position to specified slot""" param_letters = "S" dialects = ['marlin2'] word_key = Word('G', 60) -class GCodeG61ReturnToSavedPosition(GCodeMotion): +class GCodeReturnToSavedPosition(GCodeMotion): """G61: Return to saved position of specified slot""" param_letters = "FSXYZE" dialects = ['marlin2'] word_key = Word('G', 61) -class GCodeG76ProbeTemperatureCalibration(GCodeOtherModal): +class GCodeProbeTemperatureCalibration(GCodeOtherModal): """G76: Calibrate probe temperature compensation""" param_letters = "BP" dialects = ['marlin2'] word_key = Word('G', 76) -class GCodeG80CancelCurrentMotionMode(GCode): +class GCodeCancelCurrentMotionMode(GCode): """G80: Cancel the current motion mode""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 80) -class GCodeG90AbsolutePositioning(GCodeOtherModal): +class GCodeAbsolutePositioning(GCodeOtherModal): """G90: Set the interpreter to absolute positions""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 90) -class GCodeG91RelativePositioning(GCodeOtherModal): +class GCodeRelativePositioning(GCodeOtherModal): """G91: Set the interpreter to relative positions""" param_letters = "" dialects = ['marlin2'] word_key = Word('G', 91) -class GCodeG92SetPosition(GCodeOtherModal): +class GCodeSetPosition(GCodeOtherModal): """G92: Set the current position of one or more axes.""" param_letters = "XYZE" dialects = ['marlin2'] word_key = Word('G', 92) -class GCodeG425BacklashCalibration(GCodeOtherModal): +class GCodeBacklashCalibration(GCodeOtherModal): """G425: Use a conductive object to calibrate XYZ backlash""" param_letters = "BTVU" dialects = ['marlin2'] word_key = Word('G', 425) -class GCodeM0UnconditionalStop(GCodeOtherModal): +class GCodeUnconditionalStop(GCodeOtherModal): """M0, M1: Stop and wait for user""" param_letters = "SPg" dialects = ['marlin2'] @@ -265,25 +265,25 @@ class GCodeM0UnconditionalStop(GCodeOtherModal): return (w.letter == 'M') and (w.value in [0, 1]) default_word = Word('M', 0) -class GCodeM3SpindleCwLaserOn(GCodeSpindle): +class GCodeSpindleCwLaserOn(GCodeSpindle): """M3: Set the spindle CW speed or laser power""" param_letters = "SOI" dialects = ['marlin2'] word_key = Word('M', 3) -class GCodeM4SpindleCcwLaserOn(GCodeSpindle): +class GCodeSpindleCcwLaserOn(GCodeSpindle): """M4: Set the spindle CCW speed or laser power""" param_letters = "SOI" dialects = ['marlin2'] word_key = Word('M', 4) -class GCodeM5SpindleLaserOff(GCodeSpindle): +class GCodeSpindleLaserOff(GCodeSpindle): """M5: Turn off spindle or laser""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 5) -class GCodeM7CoolantControls(GCodeCoolant): +class GCodeCoolantControls(GCodeCoolant): """M7, M8, M9: Turn mist or flood coolant on / off""" param_letters = "" dialects = ['marlin2'] @@ -293,7 +293,7 @@ class GCodeM7CoolantControls(GCodeCoolant): return (w.letter == 'M') and (w.value in [7, 8, 9]) default_word = Word('M', 7) -class GCodeM10VacuumBlowerControl(GCodeDigitalOutput): +class GCodeVacuumBlowerControl(GCodeDigitalOutput): """M10, M11: Enable and disable the Cutter Vacuum or Laser Blower Motor.""" param_letters = "" dialects = ['marlin2'] @@ -303,19 +303,19 @@ class GCodeM10VacuumBlowerControl(GCodeDigitalOutput): return (w.letter == 'M') and (w.value in [10, 11]) default_word = Word('M', 10) -class GCodeM16ExpectedPrinterCheck(GCodeOtherModal): +class GCodeExpectedPrinterCheck(GCodeOtherModal): """M16: Prevent G-code usage on the wrong machine""" param_letters = "g" dialects = ['marlin2'] word_key = Word('M', 16) -class GCodeM17EnableSteppers(GCodeOtherModal): +class GCodeEnableSteppers(GCodeOtherModal): """M17: Enable steppers""" param_letters = "'" dialects = ['marlin2'] word_key = Word('M', 17) -class GCodeM18DisableSteppers(GCodeOtherModal): +class GCodeDisableSteppers(GCodeOtherModal): """M18, M84: Disable steppers (same as M84).""" param_letters = "S'" dialects = ['marlin2'] @@ -325,985 +325,979 @@ class GCodeM18DisableSteppers(GCodeOtherModal): return (w.letter == 'M') and (w.value in [18, 84]) default_word = Word('M', 18) -class GCodeM20ListSdCard(GCodeIO): +class GCodeListSdCard(GCodeIO): """M20: List the contents of the SD Card.""" param_letters = "FLT" dialects = ['marlin2'] word_key = Word('M', 20) -class GCodeM21InitSdCard(GCodeIO): +class GCodeInitSdCard(GCodeIO): """M21: Attempt to detect an SD card in the slot.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 21) -class GCodeM22ReleaseSdCard(GCodeIO): +class GCodeReleaseSdCard(GCodeIO): """M22: Simulate ejection of the SD card""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 22) -class GCodeM23SelectSdFile(GCodeIO): +class GCodeSelectSdFile(GCodeIO): """M23: Select an SD file to be executed""" param_letters = "e" dialects = ['marlin2'] word_key = Word('M', 23) -class GCodeM24StartOrResumeSdPrint(GCodeOtherModal): +class GCodeStartOrResumeSdPrint(GCodeOtherModal): """M24: Start or resume a file selected with M23""" param_letters = "ST" dialects = ['marlin2'] word_key = Word('M', 24) -class GCodeM25PauseSdPrint(GCodeOtherModal): +class GCodePauseSdPrint(GCodeOtherModal): """M25: Pause printing from the SD card""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 25) -class GCodeM26SetSdPosition(GCodeIO): +class GCodeSetSdPosition(GCodeIO): """M26: Set the SD read position""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 26) -class GCodeM27ReportSdPrintStatus(GCodeNonModal): +class GCodeReportSdPrintStatus(GCodeNonModal): """M27: Print SD progress to serial""" param_letters = "SC" dialects = ['marlin2'] word_key = Word('M', 27) -class GCodeM28StartSdWrite(GCodeIO): +class GCodeStartSdWrite(GCodeIO): """M28: Start writing to a file on the SD card""" param_letters = "1e" dialects = ['marlin2'] word_key = Word('M', 28) -class GCodeM29StopSdWrite(GCodeIO): +class GCodeStopSdWrite(GCodeIO): """M29: Stop writing the file, end logging.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 29) -class GCodeM30DeleteSdFile(GCodeIO): +class GCodeDeleteSdFile(GCodeIO): """M30: Delete a specified file from SD.""" param_letters = "e" dialects = ['marlin2'] word_key = Word('M', 30) -class GCodeM31PrintTime(GCode): +class GCodePrintTime(GCode): """M31: Report the current print time.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 31) -class GCodeM32SelectAndStart(GCodeIO): +class GCodeSelectAndStart(GCodeIO): """M32: Begin an SD print from a file.""" param_letters = "PS" dialects = ['marlin2'] word_key = Word('M', 32) -class GCodeM33GetLongPath(GCodeIO): +class GCodeGetLongPath(GCodeIO): """M33: Convert a short pathname to a long pathname.""" param_letters = "h" dialects = ['marlin2'] word_key = Word('M', 33) -class GCodeM34SdcardSorting(GCodeIO): +class GCodeSdcardSorting(GCodeIO): """M34: Set SDCard file sorting options.""" param_letters = "SF" dialects = ['marlin2'] word_key = Word('M', 34) -class GCodeM42SetPinState(GCodeDigitalOutput): +class GCodeSetPinState(GCodeDigitalOutput): """M42: Set an analog or digital pin to a specified state.""" param_letters = "ITPS" dialects = ['marlin2'] word_key = Word('M', 42) -class GCodeM43DebugPins(GCodeIO): - """M43: Get information about pins.""" - param_letters = "PWETSI" +class GCodeDebugPins(GCodeIO): + """M43: Get information about pins / set pins""" + param_letters = "PWETSIRL" dialects = ['marlin2'] word_key = Word('M', 43) -class GCodeM43TogglePinsb(GCodeDigitalOutput): - """M43T: Get information about pins.""" - param_letters = "SLIRW" - dialects = ['marlin2'] - word_key = Word('M', 43) - -class GCodeM48ProbeRepeatabilityTest(GCodeMotion): +class GCodeProbeRepeatabilityTest(GCodeMotion): """M48: Measure Z Probe repeatability.""" param_letters = "CELPSVXY" dialects = ['marlin2'] word_key = Word('M', 48) -class GCodeM73SetPrintProgress(GCode): +class GCodeSetPrintProgress(GCode): """M73: Set current print progress percentage for LCD.""" param_letters = "PR" dialects = ['marlin2'] word_key = Word('M', 73) -class GCodeM75StartPrintJobTimer(GCodeOtherModal): +class GCodeStartPrintJobTimer(GCodeOtherModal): """M75: Start the print job timer.""" param_letters = "g" dialects = ['marlin2'] word_key = Word('M', 75) -class GCodeM76PausePrintJobTimer(GCodeOtherModal): +class GCodePausePrintJobTimer(GCodeOtherModal): """M76: Pause the print job timer.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 76) -class GCodeM77StopPrintJobTimer(GCodeOtherModal): +class GCodeStopPrintJobTimer(GCodeOtherModal): """M77: Stop the print job timer.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 77) -class GCodeM78PrintJobStats(GCode): +class GCodePrintJobStats(GCode): """M78: Print statistics about print jobs.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 78) -class GCodeM80PowerOn(GCodeOtherModal): +class GCodePowerOn(GCodeOtherModal): """M80: Turn on the power supply""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 80) -class GCodeM81PowerOff(GCodeOtherModal): +class GCodePowerOff(GCodeOtherModal): """M81: Turn off the power supply.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 81) -class GCodeM82EAbsolute(GCodeOtherModal): +class GCodeEAbsolute(GCodeOtherModal): """M82: Set E to absolute positioning.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 82) -class GCodeM83ERelative(GCodeOtherModal): +class GCodeERelative(GCodeOtherModal): """M83: Set E to relative positioning.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 83) -class GCodeM85InactivityShutdown(GCodeOtherModal): +class GCodeInactivityShutdown(GCodeOtherModal): """M85: Set the inactivity timeout.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 85) -class GCodeM86HotendIdleTimeout(GCodeOtherModal): +class GCodeHotendIdleTimeout(GCodeOtherModal): """M86: Set the hotend idle timeout.""" param_letters = "STEB" dialects = ['marlin2'] word_key = Word('M', 86) -class GCodeM87DisableHotendIdleTimeout(GCodeOtherModal): +class GCodeDisableHotendIdleTimeout(GCodeOtherModal): """M87: Disable the hotend idle timeout.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 87) -class GCodeM92SetAxisStepsPerUnit(GCodeUnit): +class GCodeSetAxisStepsPerUnit(GCodeUnit): """M92: Set the number of steps-per-mm, per-inch, or per-degree""" param_letters = "XYZET" dialects = ['marlin2'] word_key = Word('M', 92) -class GCodeM100FreeMemory(GCodeNonModal): +class GCodeFreeMemory(GCodeNonModal): """M100: Observe memory used by code""" param_letters = "DFIC" dialects = ['marlin2'] word_key = Word('M', 100) -class GCodeM102ConfigureBedDistanceSensor(GCodeOtherModal): +class GCodeConfigureBedDistanceSensor(GCodeOtherModal): """M102: Set parameters for the Bed Distance Sensor.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 102) -class GCodeM104SetHotendTemperature(GCodeOtherModal): +class GCodeSetHotendTemperature(GCodeOtherModal): """M104: Set a new target hot end temperature.""" param_letters = "ISFBT" dialects = ['marlin2'] word_key = Word('M', 104) -class GCodeM105ReportTemperatures(GCodeNonModal): +class GCodeReportTemperatures(GCodeNonModal): """M105: Send a temperature report to the host.""" param_letters = "RT" dialects = ['marlin2'] word_key = Word('M', 105) -class GCodeM106SetFanSpeed(GCodeDigitalOutput): +class GCodeSetFanSpeed(GCodeDigitalOutput): """M106: Turn on fan and set speed""" param_letters = "ISPT" dialects = ['marlin2'] word_key = Word('M', 106) -class GCodeM107FanOff(GCodeDigitalOutput): +class GCodeFanOff(GCodeDigitalOutput): """M107: Turn off a fan""" param_letters = "P" dialects = ['marlin2'] word_key = Word('M', 107) -class GCodeM108BreakAndContinue(GCodeOtherModal): +class GCodeBreakAndContinue(GCodeOtherModal): """M108: Break out of the current waiting loop""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 108) -class GCodeM109WaitForHotendTemperature(GCode): +class GCodeWaitForHotendTemperature(GCode): """M109: Wait for the hot end to reach its target.""" param_letters = "ISRFBT" dialects = ['marlin2'] word_key = Word('M', 109) -class GCodeM110SetLineNumber(GCodeOtherModal): +class GCodeSetLineNumber(GCodeOtherModal): """M110: Set the current line number.""" param_letters = "N" dialects = ['marlin2'] word_key = Word('M', 110) -class GCodeM111DebugLevel(GCodeOtherModal): +class GCodeDebugLevel(GCodeOtherModal): """M111: Report and optionally set the debug flags.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 111) -class GCodeM112FullShutdown(GCodeOtherModal): +class GCodeFullShutdown(GCodeOtherModal): """M112: Shut everything down and halt the machine.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 112) -class GCodeM113HostKeepalive(GCode): +class GCodeHostKeepalive(GCode): """M113: Get or set the host keepalive interval.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 113) -class GCodeM114GetCurrentPosition(GCodeNonModal): +class GCodeGetCurrentPosition(GCodeNonModal): """M114: Report the current tool position to the host.""" param_letters = "DER" dialects = ['marlin2'] word_key = Word('M', 114) -class GCodeM115FirmwareInfo(GCodeNonModal): +class GCodeFirmwareInfo(GCodeNonModal): """M115: Print the firmware info and capabilities.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 115) -class GCodeM117SetLcdMessage(GCodeIO): +class GCodeSetLcdMessage(GCodeIO): """M117: Set the message line on the LCD.""" param_letters = "g" dialects = ['marlin2'] word_key = Word('M', 117) -class GCodeM118SerialPrint(GCodeIO): +class GCodeSerialPrint(GCodeIO): """M118: Send text to serial""" param_letters = "g11n" dialects = ['marlin2'] word_key = Word('M', 118) -class GCodeM119EndstopStates(GCodeIO): +class GCodeEndstopStates(GCodeIO): """M119: Report endstop and probe states to the host.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 119) -class GCodeM120EnableEndstops(GCodeIO): +class GCodeEnableEndstops(GCodeIO): """M120: Enable endstops and keep them enabled even when not homing.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 120) -class GCodeM121DisableEndstops(GCodeIO): +class GCodeDisableEndstops(GCodeIO): """M121: Disable endstops and keep them disabled when not homing.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 121) -class GCodeM122TmcDebugging(GCodeIO): +class GCodeTmcDebugging(GCodeIO): """M122: Get TMC Debug Info""" param_letters = "IXYZEVSP" dialects = ['marlin2'] word_key = Word('M', 122) -class GCodeM123FanTachometers(GCodeIO): +class GCodeFanTachometers(GCodeIO): """M123: Report fan speeds from tachometers""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 123) -class GCodeM125ParkHead(GCodeMotion): +class GCodeParkHead(GCodeMotion): """M125: Save current position and move to filament change position.""" param_letters = "LXYZP" dialects = ['marlin2'] word_key = Word('M', 125) -class GCodeM126BaricudaOpen(GCodeDigitalOutput): +class GCodeBaricuda1Open(GCodeDigitalOutput): """M126: Open the valve for Baricuda 1.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 126) -class GCodeM127BaricudaClose(GCodeDigitalOutput): +class GCodeBaricuda1Close(GCodeDigitalOutput): """M127: Close the valve for Baricuda 1.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 127) -class GCodeM128BaricudaOpen(GCodeDigitalOutput): +class GCodeBaricuda2Open(GCodeDigitalOutput): """M128: Open the valve for Baricuda 2.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 128) -class GCodeM129BaricudaClose(GCodeDigitalOutput): +class GCodeBaricuda2Close(GCodeDigitalOutput): """M129: Close the valve for Baricuda 2.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 129) -class GCodeM140SetBedTemperature(GCodeOtherModal): +class GCodeSetBedTemperature(GCodeOtherModal): """M140: Set a new target bed temperature.""" param_letters = "IS" dialects = ['marlin2'] word_key = Word('M', 140) -class GCodeM141SetChamberTemperature(GCodeOtherModal): +class GCodeSetChamberTemperature(GCodeOtherModal): """M141: Set a new target chamber temperature.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 141) -class GCodeM143SetLaserCoolerTemperature(GCodeCoolant): +class GCodeSetLaserCoolerTemperature(GCodeCoolant): """M143: Set a new target laser coolant temperature.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 143) -class GCodeM145SetMaterialPreset(GCodeOtherModal): +class GCodeSetMaterialPreset(GCodeOtherModal): """M145: Set material presets in the LCD menu.""" param_letters = "SHBF" dialects = ['marlin2'] word_key = Word('M', 145) -class GCodeM149SetTemperatureUnits(GCodeUnit): +class GCodeSetTemperatureUnits(GCodeUnit): """M149: Set temperature units to Celsius, Fahrenheit, or Kelvin.""" param_letters = "CFK" dialects = ['marlin2'] word_key = Word('M', 149) -class GCodeM150SetRgbWColor(GCodeDigitalOutput): +class GCodeSetRgbWColor(GCodeDigitalOutput): """M150: Set the color of the RGB(W) LED, backlight, or LED strip.""" param_letters = "RUBWPISK" dialects = ['marlin2'] word_key = Word('M', 150) -class GCodeM154PositionAutoReport(GCodeNonModal): +class GCodePositionAutoReport(GCodeNonModal): """M154: Periodically auto-report position to serial""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 154) -class GCodeM155TemperatureAutoReport(GCodeNonModal): +class GCodeTemperatureAutoReport(GCodeNonModal): """M155: Auto-report temperatures to host periodically.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 155) -class GCodeM163SetMixFactor(GCodeOtherModal): +class GCodeSetMixFactor(GCodeOtherModal): """M163: Set a single mix factor for a mixing extruder.""" param_letters = "SP" dialects = ['marlin2'] word_key = Word('M', 163) -class GCodeM164SaveMix(GCodeOtherModal): +class GCodeSaveMix(GCodeOtherModal): """M164: Save the current mix as a virtual tool.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 164) -class GCodeM165SetMix(GCodeOtherModal): +class GCodeSetMix(GCodeOtherModal): """M165: Set all mix factors for the mixing extruder.""" param_letters = "ABCDHI" dialects = ['marlin2'] word_key = Word('M', 165) -class GCodeM166GradientMix(GCodeOtherModal): +class GCodeGradientMix(GCodeOtherModal): """M166: Set a Gradient Mix""" param_letters = "AZIJST" dialects = ['marlin2'] word_key = Word('M', 166) -class GCodeM190WaitForBedTemperature(GCode): +class GCodeWaitForBedTemperature(GCode): """M190: Wait for the bed to reach target temperature.""" param_letters = "ISRT" dialects = ['marlin2'] word_key = Word('M', 190) -class GCodeM191WaitForChamberTemperature(GCode): +class GCodeWaitForChamberTemperature(GCode): """M191: Wait for the chamber to reach target temperature.""" param_letters = "SR" dialects = ['marlin2'] word_key = Word('M', 191) -class GCodeM192WaitForProbeTemperature(GCode): +class GCodeWaitForProbeTemperature(GCode): """M192: Wait for the probe temperature sensor to reach a target""" param_letters = "RS" dialects = ['marlin2'] word_key = Word('M', 192) -class GCodeM193SetLaserCoolerTemperature(GCodeCoolant): +class GCodeSetLaserCoolerTemperatureAndWait(GCodeCoolant): """M193: Set a new target laser coolant temperature.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 193) -class GCodeM200SetFilamentDiameter(GCodeOtherModal): +class GCodeSetFilamentDiameterVolumetric(GCodeOtherModal): """M200: Set the diameter for volumetric extrusion.""" param_letters = "DLST" dialects = ['marlin2'] word_key = Word('M', 200) -class GCodeM201PrintTravelMoveLimits(GCodeNonModal): +class GCodePrintTravelMoveLimits(GCodeNonModal): """M201: Set acceleration / frequency limits for print and travel moves.""" param_letters = "XYZETFS" dialects = ['marlin2'] word_key = Word('M', 201) -class GCodeM203SetMaxFeedrate(GCodeFeedRateMode): +class GCodeSetMaxFeedrate(GCodeFeedRateMode): """M203: Set maximum feedrate for one or more axes.""" param_letters = "XYZET" dialects = ['marlin2'] word_key = Word('M', 203) -class GCodeM204SetStartingAcceleration(GCodeOtherModal): +class GCodeSetStartingAcceleration(GCodeOtherModal): """M204: Set the starting acceleration for moves by type.""" param_letters = "PRTS" dialects = ['marlin2'] word_key = Word('M', 204) -class GCodeM205SetAdvancedSettings(GCodeOtherModal): +class GCodeSetAdvancedSettings(GCodeOtherModal): """M205: Set some advanced settings related to movement.""" param_letters = "XYZEBSTJ" dialects = ['marlin2'] word_key = Word('M', 205) -class GCodeM206SetHomeOffsets(GCodeOtherModal): +class GCodeSetHomeOffsets(GCodeOtherModal): """M206: Apply a persistent offset""" param_letters = "PTXYZ" dialects = ['marlin2'] word_key = Word('M', 206) -class GCodeM207SetFirmwareRetraction(GCodeOtherModal): +class GCodeSetFirmwareRetraction(GCodeOtherModal): """M207: Set options for firmware-based retraction.""" param_letters = "SWFZ" dialects = ['marlin2'] word_key = Word('M', 207) -class GCodeM208FirmwareRecover(GCodeOtherModal): +class GCodeFirmwareRecover(GCodeOtherModal): """M208: Firmware-retraction recover settings.""" param_letters = "SWFR" dialects = ['marlin2'] word_key = Word('M', 208) -class GCodeM209SetAutoRetract(GCodeOtherModal): +class GCodeSetAutoRetract(GCodeOtherModal): """M209: Enable / disable auto-retraction.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 209) -class GCodeM211SoftwareEndstops(GCodeOtherModal): +class GCodeSoftwareEndstops(GCodeOtherModal): """M211: Set and/or get the software endstops state""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 211) -class GCodeM217FilamentSwapParameters(GCodeOtherModal): +class GCodeFilamentSwapParameters(GCodeOtherModal): """M217: Set length and speed for filament swapping""" param_letters = "QSBEPRUFGALWXYVZ" dialects = ['marlin2'] word_key = Word('M', 217) -class GCodeM218SetHotendOffset(GCodeOtherModal): +class GCodeSetHotendOffset(GCodeOtherModal): """M218: Set the offset of a hotend (from hotend 0).""" param_letters = "TXYZ" dialects = ['marlin2'] word_key = Word('M', 218) -class GCodeM220SetFeedratePercentage(GCodeFeedRateMode): +class GCodeSetFeedratePercentage(GCodeFeedRateMode): """M220: Set the global feedrate percentage.""" param_letters = "SBR" dialects = ['marlin2'] word_key = Word('M', 220) -class GCodeM221SetFlowPercentage(GCodeOtherModal): +class GCodeSetFlowPercentage(GCodeOtherModal): """M221: Set the flow percentage, which applies to all E moves.""" param_letters = "ST" dialects = ['marlin2'] word_key = Word('M', 221) -class GCodeM226WaitForPinState(GCodeIO): +class GCodeWaitForPinState(GCodeIO): """M226: Wait for a pin to have a given state.""" param_letters = "PS" dialects = ['marlin2'] word_key = Word('M', 226) -class GCodeM240TriggerCamera(GCodeIO): +class GCodeTriggerCamera(GCodeIO): """M240: Trigger a camera shutter""" param_letters = "ABDFIJPRSXYZ" dialects = ['marlin2'] word_key = Word('M', 240) -class GCodeM250LcdContrast(GCodeIO): +class GCodeLcdContrast(GCodeIO): """M250: Set and/or get the LCD contrast.""" param_letters = "C" dialects = ['marlin2'] word_key = Word('M', 250) -class GCodeM255LcdSleepBacklightTimeout(GCodeIO): +class GCodeLcdSleepBacklightTimeout(GCodeIO): """M255: Set and/or get the LCD Sleep Timeout.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 255) -class GCodeM256LcdBrightness(GCodeIO): +class GCodeLcdBrightness(GCodeIO): """M256: Set and/or get the LCD brightness.""" param_letters = "B" dialects = ['marlin2'] word_key = Word('M', 256) -class GCodeM260ICSend(GCodeDigitalOutput): +class GCodeICSend(GCodeDigitalOutput): """M260: Send data to the I2C bus.""" param_letters = "ABRS" dialects = ['marlin2'] word_key = Word('M', 260) -class GCodeM261ICRequest(GCodeIO): +class GCodeICRequest(GCodeIO): """M261: Request and echo bytes from the I2C bus.""" param_letters = "ABS" dialects = ['marlin2'] word_key = Word('M', 261) -class GCodeM280ServoPosition(GCodeIO): +class GCodeServoPosition(GCodeIO): """M280: Set or get a servo position.""" param_letters = "PS" dialects = ['marlin2'] word_key = Word('M', 280) -class GCodeM281EditServoAngles(GCodeOtherModal): +class GCodeEditServoAngles(GCodeOtherModal): """M281: Set servo deploy and/or stow angles""" param_letters = "PLU" dialects = ['marlin2'] word_key = Word('M', 281) -class GCodeM282DetachServo(GCodeOtherModal): +class GCodeDetachServo(GCodeOtherModal): """M282: Detach a servo until its next move""" param_letters = "P" dialects = ['marlin2'] word_key = Word('M', 282) -class GCodeM290Babystep(GCodeMotion): +class GCodeBabystep(GCodeMotion): """M290: Babystep one or more axes""" param_letters = "XYZSP" dialects = ['marlin2'] word_key = Word('M', 290) -class GCodeM300PlayTone(GCodeDigitalOutput): +class GCodePlayTone(GCodeDigitalOutput): """M300: Play a single tone, buzz, or beep.""" param_letters = "PS" dialects = ['marlin2'] word_key = Word('M', 300) -class GCodeM301SetHotendPid(GCodeOtherModal): +class GCodeSetHotendPid(GCodeOtherModal): """M301: Set PID values for a hotend.""" param_letters = "EPIDCLF" dialects = ['marlin2'] word_key = Word('M', 301) -class GCodeM302ColdExtrude(GCodeOtherModal): +class GCodeColdExtrude(GCodeOtherModal): """M302: Set minimum extrusion temperature, allow cold extrusion.""" param_letters = "SP" dialects = ['marlin2'] word_key = Word('M', 302) -class GCodeM303PidAutotune(GCodeOtherModal): +class GCodePidAutotune(GCodeOtherModal): """M303: Auto-tune the PID system to find stable values.""" param_letters = "ECSUD" dialects = ['marlin2'] word_key = Word('M', 303) -class GCodeM304SetBedPid(GCodeOtherModal): +class GCodeSetBedPid(GCodeOtherModal): """M304: Set PID values for the heated bed.""" param_letters = "PID" dialects = ['marlin2'] word_key = Word('M', 304) -class GCodeM305UserThermistorParameters(GCodeOtherModal): +class GCodeUserThermistorParameters(GCodeOtherModal): """M305: Set (or report) custom thermistor parameters""" param_letters = "PRTBC" dialects = ['marlin2'] word_key = Word('M', 305) -class GCodeM306ModelPredictiveTempControl(GCodeOtherModal): +class GCodeModelPredictiveTempControl(GCodeOtherModal): """M306: Set MPC values for a hotend.""" param_letters = "ACEFHPRST" dialects = ['marlin2'] word_key = Word('M', 306) -class GCodeM350SetMicroStepping(GCodeOtherModal): +class GCodeSetMicroStepping(GCodeOtherModal): """M350: Set micro-stepping for drivers that support it""" param_letters = "BSXYZE" dialects = ['marlin2'] word_key = Word('M', 350) -class GCodeM351SetMicrostepPins(GCodeOtherModal): +class GCodeSetMicrostepPins(GCodeOtherModal): """M351: Directly set the micro-stepping pins""" param_letters = "SBXYZE" dialects = ['marlin2'] word_key = Word('M', 351) -class GCodeM355CaseLightControl(GCodeDigitalOutput): +class GCodeCaseLightControl(GCodeDigitalOutput): """M355: Turn the case light on or off, set brightness""" param_letters = "PS" dialects = ['marlin2'] word_key = Word('M', 355) -class GCodeM360ScaraThetaA(GCodeMotion): +class GCodeScaraThetaA(GCodeMotion): """M360: Move to Theta A""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 360) -class GCodeM361ScaraThetaB(GCodeMotion): +class GCodeScaraThetaB(GCodeMotion): """M361: Move to Theta-B""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 361) -class GCodeM362ScaraPsiA(GCodeMotion): +class GCodeScaraPsiA(GCodeMotion): """M362: Move to Psi-A""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 362) -class GCodeM363ScaraPsiB(GCodeMotion): +class GCodeScaraPsiB(GCodeMotion): """M363: Move to Psi-B""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 363) -class GCodeM364ScaraPsiC(GCodeMotion): +class GCodeScaraPsiC(GCodeMotion): """M364: Move to Psi-C""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 364) -class GCodeM380ActivateSolenoid(GCodeDigitalOutput): +class GCodeActivateSolenoid(GCodeDigitalOutput): """M380: Activate""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 380) -class GCodeM381DeactivateSolenoids(GCodeDigitalOutput): +class GCodeDeactivateSolenoids(GCodeDigitalOutput): """M381: Deactivate all extruder solenoids""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 381) -class GCodeM400FinishMoves(GCodeOtherModal): +class GCodeFinishMoves(GCodeOtherModal): """M400: Wait for all moves to finish""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 400) -class GCodeM401DeployProbe(GCodeDigitalOutput): +class GCodeDeployProbe(GCodeDigitalOutput): """M401: Deploy the bed probe""" param_letters = "HS" dialects = ['marlin2'] word_key = Word('M', 401) -class GCodeM402StowProbe(GCodeDigitalOutput): +class GCodeStowProbe(GCodeDigitalOutput): """M402: Stow the bed probe""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 402) -class GCodeM403MmuFilamentType(GCodeOtherModal): +class GCodeMmuFilamentType(GCodeOtherModal): """M403: Set filament type for Multi-Material Unit 2.0""" param_letters = "EF" dialects = ['marlin2'] word_key = Word('M', 403) -class GCodeM404SetFilamentDiameter(GCodeOtherModal): +class GCodeSetFilamentDiameter(GCodeOtherModal): """M404: Set the nominal diameter for filament width sensor auto-flow""" param_letters = "W" dialects = ['marlin2'] word_key = Word('M', 404) -class GCodeM405FilamentWidthSensorOn(GCodeOtherModal): +class GCodeFilamentWidthSensorOn(GCodeOtherModal): """M405: Enable filament width sensor flow control""" param_letters = "D" dialects = ['marlin2'] word_key = Word('M', 405) -class GCodeM406FilamentWidthSensorOff(GCodeOtherModal): +class GCodeFilamentWidthSensorOff(GCodeOtherModal): """M406: Disable filament width sensor flow control""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 406) -class GCodeM407FilamentWidth(GCodeNonModal): +class GCodeFilamentWidth(GCodeNonModal): """M407: Report the measured filament width""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 407) -class GCodeM410Quickstop(GCodeOtherModal): +class GCodeQuickstop(GCodeOtherModal): """M410: Stop all steppers instantly""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 410) -class GCodeM412FilamentRunout(GCodeOtherModal): +class GCodeFilamentRunout(GCodeOtherModal): """M412: Get/set filament runout detection parameters""" param_letters = "DHSR" dialects = ['marlin2'] word_key = Word('M', 412) -class GCodeM413PowerLossRecovery(GCodeOtherModal): +class GCodePowerLossRecovery(GCodeOtherModal): """M413: Enable / disable power-loss recovery""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 413) -class GCodeM420BedLevelingState(GCodeNonModal): +class GCodeBedLevelingState(GCodeNonModal): """M420: Get and/or set bed leveling state and parameters""" param_letters = "LSVTZC" dialects = ['marlin2'] word_key = Word('M', 420) -class GCodeM421SetMeshValue(GCodeOtherModal): +class GCodeSetMeshValue(GCodeOtherModal): """M421: Set a single mesh Z height""" param_letters = "IJXYZQCN" dialects = ['marlin2'] word_key = Word('M', 421) -class GCodeM422SetZMotorXy(GCodeOtherModal): +class GCodeSetZMotorXy(GCodeOtherModal): """M422: Set a Z motor position for G34 Auto-Alignment""" param_letters = "RSWXY" dialects = ['marlin2'] word_key = Word('M', 422) -class GCodeM423XTwistCompensation(GCodeOtherModal): +class GCodeXTwistCompensation(GCodeOtherModal): """M423: Modify, reset, and report X-Axis Twist Compensation data""" param_letters = "RAIXZ" dialects = ['marlin2'] word_key = Word('M', 423) -class GCodeM425BacklashCompensation(GCodeOtherModal): +class GCodeBacklashCompensation(GCodeOtherModal): """M425: Enable and tune backlash compensation""" param_letters = "FSXYZZ" dialects = ['marlin2'] word_key = Word('M', 425) -class GCodeM428HomeOffsetsHere(GCodeOtherModal): +class GCodeHomeOffsetsHere(GCodeOtherModal): """M428: Set home offsets based on current position""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 428) -class GCodeM430PowerMonitor(GCodeOtherModal): +class GCodePowerMonitor(GCodeOtherModal): """M430: Read and display current (A), voltage (V), and power (W)""" param_letters = "IVW" dialects = ['marlin2'] word_key = Word('M', 430) -class GCodeM486CancelObjects(GCodeOtherModal): +class GCodeCancelObjects(GCodeOtherModal): """M486: Identify and cancel objects""" param_letters = "CPSTU" dialects = ['marlin2'] word_key = Word('M', 486) -class GCodeM493FixedTimeMotion(GCodeOtherModal): +class GCodeFixedTimeMotion(GCodeOtherModal): """M493: Enable/disable and configure Fixed-Time Motion, Linear Advance, and Input Shaping""" param_letters = "SPKDABFH" dialects = ['marlin2'] word_key = Word('M', 493) -class GCodeM500SaveSettings(GCodeNonModal): +class GCodeSaveSettings(GCodeNonModal): """M500: Save settings to EEPROM.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 500) -class GCodeM501RestoreSettings(GCodeOtherModal): +class GCodeRestoreSettings(GCodeOtherModal): """M501: Restore settings from EEPROM.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 501) -class GCodeM502FactoryReset(GCodeOtherModal): +class GCodeFactoryReset(GCodeOtherModal): """M502: Restore all settings to factory defaults.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 502) -class GCodeM503ReportSettings(GCodeNonModal): +class GCodeReportSettings(GCodeNonModal): """M503: Report all settings that may be saved to EEPROM.""" param_letters = "SC" dialects = ['marlin2'] word_key = Word('M', 503) -class GCodeM504ValidateEepromContents(GCodeNonModal): +class GCodeValidateEepromContents(GCodeNonModal): """M504: Validate the contents of the EEPROM.""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 504) -class GCodeM510LockMachine(GCodeOtherModal): +class GCodeLockMachine(GCodeOtherModal): """M510: Lock the machine if it has a passcode""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 510) -class GCodeM511UnlockMachine(GCodeOtherModal): +class GCodeUnlockMachine(GCodeOtherModal): """M511: Unlock the machine if it has a passcode""" param_letters = "P" dialects = ['marlin2'] word_key = Word('M', 511) -class GCodeM512SetPasscode(GCodeNonModal): +class GCodeSetPasscode(GCodeNonModal): """M512: Set a numeric passcode for locking the machine""" param_letters = "PS" dialects = ['marlin2'] word_key = Word('M', 512) -class GCodeM524AbortSdPrint(GCodeOtherModal): +class GCodeAbortSdPrint(GCodeOtherModal): """M524: Abort an SD print started with [`M24`](/docs/gcode/M024.html)""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 524) -class GCodeM540EndstopsAbortSd(GCodeNonModal): +class GCodeEndstopsAbortSd(GCodeNonModal): """M540: Abort SD printing when an endstop is triggered.""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 540) -class GCodeM569SetTmcSteppingMode(GCodeOtherModal): +class GCodeSetTmcSteppingMode(GCodeOtherModal): """M569: Toggle stealthChop""" param_letters = "XYZEIT" dialects = ['marlin2'] word_key = Word('M', 569) -class GCodeM575SerialBaudRate(GCodeOtherModal): +class GCodeSerialBaudRate(GCodeOtherModal): """M575: Change the serial baud rate""" param_letters = "PB" dialects = ['marlin2'] word_key = Word('M', 575) -class GCodeM592NonlinearExtrusionControl(GCodeOtherModal): +class GCodeNonlinearExtrusionControl(GCodeOtherModal): """M592: Get or set Nonlinear Extrusion parameters""" param_letters = "ABC" dialects = ['marlin2'] word_key = Word('M', 592) -class GCodeM593ZvInputShaping(GCodeOtherModal): +class GCodeZvInputShaping(GCodeOtherModal): """M593: Get or set Marlin's integrated ZV Input Shaping parameters""" param_letters = "DFXY" dialects = ['marlin2'] word_key = Word('M', 593) -class GCodeM600FilamentChange(GCode): +class GCodeFilamentChange(GCode): """M600: Automatically change filament""" param_letters = "TEULXYZBR" dialects = ['marlin2'] word_key = Word('M', 600) -class GCodeM603ConfigureFilamentChange(GCodeOtherModal): +class GCodeConfigureFilamentChange(GCodeOtherModal): """M603: Configure automatic filament change parameters""" param_letters = "TUL" dialects = ['marlin2'] word_key = Word('M', 603) -class GCodeM605MultiNozzleMode(GCodeOtherModal): +class GCodeMultiNozzleMode(GCodeOtherModal): """M605: Set the behavior mode for a multiple nozzle setup""" param_letters = "SXRPE" dialects = ['marlin2'] word_key = Word('M', 605) -class GCodeM665DeltaConfiguration(GCodeOtherModal): - """M665: Set delta geometry values""" - param_letters = "HLRSXYZABC" - dialects = ['marlin2'] - word_key = Word('M', 665) +#class GCodeDeltaConfiguration(GCodeOtherModal): +# """M665: Set delta geometry values""" +# param_letters = "HLRSXYZABC" +# dialects = ['marlin2'] +# word_key = Word('M', 665) -class GCodeM665ScaraConfigurationb(GCodeOtherModal): +class GCodeScaraConfigurationb(GCodeOtherModal): """M665: Set SCARA geometry values""" param_letters = "SPTAXBY" dialects = ['marlin2'] word_key = Word('M', 665) -class GCodeM666SetDualEndstopOffsetsb(GCodeOtherModal): +class GCodeSetDualEndstopOffsetsb(GCodeOtherModal): """M666: Set dual endstop offsets""" param_letters = "XYZ" dialects = ['marlin2'] word_key = Word('M', 666) -class GCodeM666SetDeltaEndstopAdjustmentsa(GCodeOtherModal): - """M666: Set Delta endstop adjustments""" - param_letters = "XYZ" - dialects = ['marlin2'] - word_key = Word('M', 666) +#class GCodeSetDeltaEndstopAdjustmentsa(GCodeOtherModal): +# """M666: Set Delta endstop adjustments""" +# param_letters = "XYZ" +# dialects = ['marlin2'] +# word_key = Word('M', 666) -class GCodeM672DuetSmartEffectorSensitivity(GCodeOtherModal): +class GCodeDuetSmartEffectorSensitivity(GCodeOtherModal): """M672: Set Duet Smart Effector sensitivity""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 672) -class GCodeM701LoadFilament(GCodeOtherModal): +class GCodeLoadFilament(GCodeOtherModal): """M701: Load filament""" param_letters = "TZL" dialects = ['marlin2'] word_key = Word('M', 701) -class GCodeM702UnloadFilament(GCodeOtherModal): +class GCodeUnloadFilament(GCodeOtherModal): """M702: Unload filament""" param_letters = "TZU" dialects = ['marlin2'] word_key = Word('M', 702) -class GCodeM710ControllerFanSettings(GCodeOtherModal): +class GCodeControllerFanSettings(GCodeOtherModal): """M710: Set or report controller fan settings""" param_letters = "SIARD" dialects = ['marlin2'] word_key = Word('M', 710) -class GCodeM7219MaxControl(GCodeDigitalOutput): +class GCodeMaxControl(GCodeDigitalOutput): """M7219: Control Max7219 Segmented LEDs""" param_letters = "CDRIFPUVXY" dialects = ['marlin2'] word_key = Word('M', 7219) -class GCodeM808RepeatMarker(GCodeOtherModal): +class GCodeRepeatMarker(GCodeOtherModal): """M808: Set or go to a marker for looping G-code""" param_letters = "L" dialects = ['marlin2'] word_key = Word('M', 808) -class GCodeM810GCodeMacros(GCodeOtherModal): +class GCodeGCodeMacros(GCodeOtherModal): """M810, M811, M812, M813, M814, M815, M816, M817, M818, M819: Set/execute one of ten G-code macros""" param_letters = "g" dialects = ['marlin2'] @@ -1313,19 +1307,19 @@ class GCodeM810GCodeMacros(GCodeOtherModal): return (w.letter == 'M') and (w.value in [810, 811, 812, 813, 814, 815, 816, 817, 818, 819]) default_word = Word('M', 810) -class GCodeM851XyzProbeOffset(GCodeOtherModal): +class GCodeXyzProbeOffset(GCodeOtherModal): """M851: Set the Z probe XYZ offset from nozzle""" param_letters = "XYZ" dialects = ['marlin2'] word_key = Word('M', 851) -class GCodeM852BedSkewCompensation(GCodeOtherModal): +class GCodeBedSkewCompensation(GCodeOtherModal): """M852: Misalignment in the XYZ axes.""" param_letters = "IJKS" dialects = ['marlin2'] word_key = Word('M', 852) -class GCodeM860ICPositionEncoders(GCodeOtherModal): +class GCodeICPositionEncoders(GCodeOtherModal): """M860, M861, M862, M863, M864, M865, M866, M867, M868, M869: I2C position encoders for closed loop control""" param_letters = "IOXYZEUPSRST" dialects = ['marlin2'] @@ -1335,151 +1329,151 @@ class GCodeM860ICPositionEncoders(GCodeOtherModal): return (w.letter == 'M') and (w.value in [860, 861, 862, 863, 864, 865, 866, 867, 868, 869]) default_word = Word('M', 860) -class GCodeM871ProbeTemperatureConfig(GCodeOtherModal): +class GCodeProbeTemperatureConfig(GCodeOtherModal): """M871: Configure probe temperature compensation""" param_letters = "VIBPER" dialects = ['marlin2'] word_key = Word('M', 871) -class GCodeM876HandlePromptResponse(GCode): +class GCodeHandlePromptResponse(GCode): """M876: Handle Host prompt responses""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 876) -class GCodeM900LinearAdvanceFactor(GCodeOtherModal): +class GCodeLinearAdvanceFactor(GCodeOtherModal): """M900: Get and set Linear Advance K value""" param_letters = "KLST" dialects = ['marlin2'] word_key = Word('M', 900) -class GCodeM906StepperMotorCurrent(GCodeOtherModal): +class GCodeStepperMotorCurrent(GCodeOtherModal): """M906: Set the motor current (in milliamps)""" param_letters = "EITXYZ" dialects = ['marlin2'] word_key = Word('M', 906) -class GCodeM907SetMotorCurrent(GCodeOtherModal): +class GCodeSetMotorCurrent(GCodeOtherModal): """M907: Set motor current via digital trimpot""" param_letters = "BCDESXYZ" dialects = ['marlin2'] word_key = Word('M', 907) -class GCodeM908SetTrimpotPins(GCodeOtherModal): +class GCodeSetTrimpotPins(GCodeOtherModal): """M908: Set a digital trimpot directly""" param_letters = "PS" dialects = ['marlin2'] word_key = Word('M', 908) -class GCodeM909DacPrintValues(GCodeNonModal): +class GCodeDacPrintValues(GCodeNonModal): """M909: Report DAC current values to host""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 909) -class GCodeM910CommitDacToEeprom(GCodeNonModal): +class GCodeCommitDacToEeprom(GCodeNonModal): """M910: Commit digipot/DAC value to external EEPROM""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 910) -class GCodeM911TmcOtPreWarnCondition(GCode): +class GCodeTmcOtPreWarnCondition(GCode): """M911: Driver overtemperature pre-warn condition""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 911) -class GCodeM912ClearTmcOtPreWarn(GCode): +class GCodeClearTmcOtPreWarn(GCode): """M912: Clear overtemperature pre-warn condition flag""" param_letters = "IXYZE" dialects = ['marlin2'] word_key = Word('M', 912) -class GCodeM913SetHybridThresholdSpeed(GCodeOtherModal): +class GCodeSetHybridThresholdSpeed(GCodeOtherModal): """M913: TMC driver switching to spreadCycle""" param_letters = "ITXYZE" dialects = ['marlin2'] word_key = Word('M', 913) -class GCodeM914TmcBumpSensitivity(GCodeOtherModal): +class GCodeTmcBumpSensitivity(GCodeOtherModal): """M914: Set sensorless homing sensitivity""" param_letters = "IXYZ" dialects = ['marlin2'] word_key = Word('M', 914) -class GCodeM915TmcZAxisCalibration(GCode): +class GCodeTmcZAxisCalibration(GCode): """M915: Align ends of the Z axis and test torque""" param_letters = "SZ" dialects = ['marlin2'] word_key = Word('M', 915) -class GCodeM916LThermalWarningTest(GCode): +class GCodeLThermalWarningTest(GCode): """M916: Find L6474 drive level (KVAL_HOLD) threshold""" param_letters = "JXYZEFTKD" dialects = ['marlin2'] word_key = Word('M', 916) -class GCodeM917LOvercurrentWarningTest(GCode): +class GCodeLOvercurrentWarningTest(GCode): """M917: Find L6474 minimum current thresholds""" param_letters = "JXYZEFITK" dialects = ['marlin2'] word_key = Word('M', 917) -class GCodeM918LSpeedWarningTest(GCode): +class GCodeLSpeedWarningTest(GCode): """M918: Find L6474 speed threshold""" param_letters = "JXYZEITKM" dialects = ['marlin2'] word_key = Word('M', 918) -class GCodeM919TmcChopperTiming(GCodeOtherModal): +class GCodeTmcChopperTiming(GCodeOtherModal): """M919: Set Chopper Timing values for TMC stepper drivers""" param_letters = "OPSITXYZABCUVW" dialects = ['marlin2'] word_key = Word('M', 919) -class GCodeM928StartSdLogging(GCodeIO): +class GCodeStartSdLogging(GCodeIO): """M928: Log serial input to an SD file""" param_letters = "e" dialects = ['marlin2'] word_key = Word('M', 928) -class GCodeM951MagneticParkingExtruder(GCodeOtherModal): +class GCodeMagneticParkingExtruder(GCodeOtherModal): """M951: Set / report Magnetic Parking Extruder settings""" param_letters = "LRIJHDC" dialects = ['marlin2'] word_key = Word('M', 951) -class GCodeM993BackUpFlashSettingsToSd(GCodeIO): +class GCodeBackUpFlashSettingsToSd(GCodeIO): """M993: Create a backup of SPI Flash to SD""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 993) -class GCodeM994RestoreFlashFromSd(GCodeIO): +class GCodeRestoreFlashFromSd(GCodeIO): """M994: Restore a backup from SD to SPI Flash""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 994) -class GCodeM995TouchScreenCalibration(GCodeIO): +class GCodeTouchScreenCalibration(GCodeIO): """M995: Touch screen calibration for TFT display""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 995) -class GCodeM997FirmwareUpdate(GCode): +class GCodeFirmwareUpdate(GCode): """M997: Perform in-application firmware update""" param_letters = "" dialects = ['marlin2'] word_key = Word('M', 997) -class GCodeM999StopRestart(GCodeOtherModal): +class GCodeStopRestart(GCodeOtherModal): """M999: Return the machine to Running state""" param_letters = "S" dialects = ['marlin2'] word_key = Word('M', 999) -class GCodeT0SelectOrReportTool(GCodeOtherModal): +class GCodeSelectOrReportTool(GCodeOtherModal): """T0, T1, T2, T3, T4, T5, T6, T7: Set or report the current extruder or other tool""" param_letters = "FS" dialects = ['marlin2'] @@ -1489,7 +1483,7 @@ class GCodeT0SelectOrReportTool(GCodeOtherModal): return (w.letter == 'T') and (w.value in [0, 1, 2, 3, 4, 5, 6, 7]) default_word = Word('T', 0) -class GCodeT1MmuSpecialCommands(GCode): +class GCodeMmuSpecialCommands(GCode): """'T?', Tc, Tx: MMU2 special filament loading commands""" param_letters = "" dialects = ['marlin2'] diff --git a/src/pygcode/gcodes_prusa.py b/src/pygcode/gcodes_prusa.py index 24c2374..e9a3b02 100644 --- a/src/pygcode/gcodes_prusa.py +++ b/src/pygcode/gcodes_prusa.py @@ -1,6 +1,6 @@ from .gcodes_base import * -from gcodes_legacy import * +from .gcodes_legacy import * # ======================= Prusa ======================= # CODE PARAMETERS DESCRIPTION diff --git a/src/pygcode/machine.py b/src/pygcode/machine.py index a946f3c..7b61899 100644 --- a/src/pygcode/machine.py +++ b/src/pygcode/machine.py @@ -4,13 +4,13 @@ from collections import defaultdict from .gcodes import ( MODAL_GROUP_MAP, GCode, - # Modal GCodes - GCodeMotion, - GCodeIncrementalDistanceMode, - GCodeUseInches, GCodeUseMillimeters, # Utilities words2gcodes, ) +from .gcodes_base import ( + # Modal GCodes + GCodeMotion, +) from .block import Block from .line import Line from .words import Word @@ -18,6 +18,20 @@ from .utils import Vector3, Quaternion from .exceptions import MachineInvalidAxis, MachineInvalidState +from pygcode.dialects import get_default as get_default_dialect +match get_default_dialect(): + case 'marlin2': + from .gcodes_marlin import ( + GCodeRelativePositioning as GCodeIncrementalDistanceMode, + GCodeInchUnits as GCodeUseInches, + GCodeMillimeterUnits as GCodeUseMillimeters, + ) + case _: + from .gcodes_legacy import ( + GCodeIncrementalDistanceMode, + GCodeUseInches, GCodeUseMillimeters, + ) + UNIT_IMPERIAL = GCodeUseInches.unit_id # G20 UNIT_METRIC = GCodeUseMillimeters.unit_id # G21 UNIT_MAP = { diff --git a/src/pygcode/tools/marlin_parse_MarlinDocumentation.py b/src/pygcode/tools/marlin_parse_MarlinDocumentation.py new file mode 100755 index 0000000..a2d59e1 --- /dev/null +++ b/src/pygcode/tools/marlin_parse_MarlinDocumentation.py @@ -0,0 +1,347 @@ +#!/usr/bin/env python +# vim: number ts=4 +""" + generate src/pygcode/gcode_marlin.py based on official documentation +""" +from string import ascii_letters + +class_types = { + # unused: GCodeDistanceMode + # unused: GCodePathControlMode + # unused: GCodeProgramControl + 'g000': 'GCodeMotion', # LinearMove + 'g002': 'GCodeArcMove', # ArcOrCircleMove + 'g004': 'GCode', # Dwell + 'g005': 'GCodeMotion', # BzierCubicSpline + 'g006': 'GCodeMotion', # DirectStepperMove + 'g010': 'GCode', # Retract + 'g011': 'GCode', # Recover + 'g012': 'GCodeMotion', # CleanTheNozzle + 'g017': 'GCodePlaneSelect', # CncWorkspacePlanes + 'g020': 'GCodeUnit', # InchUnits + 'g021': 'GCodeUnit', # MillimeterUnits + 'g026': 'GCodeMotion', # MeshValidationPattern + 'g027': 'GCodeMotion', # ParkToolhead + 'g028': 'GCodeMotion', # AutoHome + 'g029': 'GCodeMotion', # BedLeveling + 'g029g1': 'GCodeMotion', # BedLevelingPoint + 'g029m2': 'GCodeMotion', # BedLevelingBilinear + 'g029g2': 'GCodeMotion', # BedLevelingLinear + 'g029m1': 'GCodeMotion', # BedLevelingManual + 'g029m3': 'GCodeMotion', # BedLevelingUnified + 'g030': 'GCodeMotion', # SingleZProbe + 'g031': 'GCodeMotion', # DockSled + 'g032': 'GCodeMotion', # UndockSled + 'g033': 'GCodeMotion', # DeltaAutoCalibration + 'g034b': 'GCodeMotion', # MechanicalGantryCalibration + 'g034a': 'GCodeMotion', # ZSteppersAutoAlignment + 'g035': 'GCodeMotion', # TrammingAssistant + 'g038': 'GCodeMotion', # ProbeTarget + 'g042': 'GCodeSelectCoordinateSystem', # MoveToMeshCoordinate + 'g053': 'GCodeSelectCoordinateSystem', # MoveInMachineCoordinates + 'g054': 'GCodeSelectCoordinateSystem', # WorkspaceCoordinateSystem + 'g060': 'GCode', # SaveCurrentPosition + 'g061': 'GCodeMotion', # ReturnToSavedPosition + 'g076': 'GCodeOtherModal', # ProbeTemperatureCalibration + 'g080': 'GCode', # CancelCurrentMotionMode + 'g090': 'GCodeOtherModal', # AbsolutePositioning + 'g091': 'GCodeOtherModal', # RelativePositioning + 'g092': 'GCodeOtherModal', # SetPosition + 'g425': 'GCodeOtherModal', # BacklashCalibration + 'm0000': 'GCodeOtherModal', # UnconditionalStop + 'm0003': 'GCodeSpindle', # SpindleCwLaserOn + 'm0004': 'GCodeSpindle', # SpindleCcwLaserOn + 'm0005': 'GCodeSpindle', # SpindleLaserOff + 'm0007': 'GCodeCoolant', # CoolantControls + 'm0010': 'GCodeDigitalOutput', # VacuumBlowerControl + 'm0016': 'GCodeOtherModal', # ExpectedPrinterCheck + 'm0017': 'GCodeOtherModal', # EnableSteppers + 'm0018': 'GCodeOtherModal', # DisableSteppers + 'm0020': 'GCodeIO', # ListSdCard + 'm0021': 'GCodeIO', # InitSdCard + 'm0022': 'GCodeIO', # ReleaseSdCard + 'm0023': 'GCodeIO', # SelectSdFile + 'm0024': 'GCodeOtherModal', # StartOrResumeSdPrint + 'm0025': 'GCodeOtherModal', # PauseSdPrint + 'm0026': 'GCodeIO', # SetSdPosition + 'm0027': 'GCodeNonModal', # ReportSdPrintStatus + 'm0028': 'GCodeIO', # StartSdWrite + 'm0029': 'GCodeIO', # StopSdWrite + 'm0030': 'GCodeIO', # DeleteSdFile + 'm0031': 'GCode', # PrintTime + 'm0032': 'GCodeIO', # SelectAndStart + 'm0033': 'GCodeIO', # GetLongPath + 'm0034': 'GCodeIO', # SdcardSorting + 'm0042': 'GCodeDigitalOutput', # SetPinState + 'm0043': 'GCodeIO', # DebugPins + 'm0043b': 'GCodeDigitalOutput', # TogglePins + 'm0048': 'GCodeMotion', # ProbeRepeatabilityTest + 'm0073': 'GCode', # SetPrintProgress + 'm0075': 'GCodeOtherModal', # StartPrintJobTimer + 'm0076': 'GCodeOtherModal', # PausePrintJobTimer + 'm0077': 'GCodeOtherModal', # StopPrintJobTimer + 'm0078': 'GCode', # PrintJobStats + 'm0080': 'GCodeOtherModal', # PowerOn + 'm0081': 'GCodeOtherModal', # PowerOff + 'm0082': 'GCodeOtherModal', # EAbsolute + 'm0083': 'GCodeOtherModal', # ERelative + 'm0085': 'GCodeOtherModal', # InactivityShutdown + 'm0086': 'GCodeOtherModal', # HotendIdleTimeout + 'm0087': 'GCodeOtherModal', # DisableHotendIdleTimeout + 'm0092': 'GCodeUnit', # SetAxisStepsPerUnit + 'm0100': 'GCodeNonModal', # FreeMemory + 'm0102': 'GCodeOtherModal', # ConfigureBedDistanceSensor + 'm0104': 'GCodeOtherModal', # SetHotendTemperature + 'm0105': 'GCodeNonModal', # ReportTemperatures + 'm0106': 'GCodeDigitalOutput', # SetFanSpeed + 'm0107': 'GCodeDigitalOutput', # FanOff + 'm0108': 'GCodeOtherModal', # BreakAndContinue + 'm0109': 'GCode', # WaitForHotendTemperature + 'm0110': 'GCodeOtherModal', # SetLineNumber + 'm0111': 'GCodeOtherModal', # DebugLevel + 'm0112': 'GCodeOtherModal', # FullShutdown + 'm0113': 'GCode', # HostKeepalive + 'm0114': 'GCodeNonModal', # GetCurrentPosition + 'm0115': 'GCodeNonModal', # FirmwareInfo + 'm0117': 'GCodeIO', # SetLcdMessage + 'm0118': 'GCodeIO', # SerialPrint + 'm0119': 'GCodeIO', # EndstopStates + 'm0120': 'GCodeIO', # EnableEndstops + 'm0121': 'GCodeIO', # DisableEndstops + 'm0122': 'GCodeIO', # TmcDebugging + 'm0123': 'GCodeIO', # FanTachometers + 'm0125': 'GCodeMotion', # ParkHead + 'm0126': 'GCodeDigitalOutput', # BaricudaOpen + 'm0127': 'GCodeDigitalOutput', # BaricudaClose + 'm0128': 'GCodeDigitalOutput', # BaricudaOpen + 'm0129': 'GCodeDigitalOutput', # BaricudaClose + 'm0140': 'GCodeOtherModal', # SetBedTemperature + 'm0141': 'GCodeOtherModal', # SetChamberTemperature + 'm0143': 'GCodeCoolant', # SetLaserCoolerTemperature + 'm0145': 'GCodeOtherModal', # SetMaterialPreset + 'm0149': 'GCodeUnit', # SetTemperatureUnits + 'm0150': 'GCodeDigitalOutput', # SetRgbWColor + 'm0154': 'GCodeNonModal', # PositionAutoReport + 'm0155': 'GCodeNonModal', # TemperatureAutoReport + 'm0163': 'GCodeOtherModal', # SetMixFactor + 'm0164': 'GCodeOtherModal', # SaveMix + 'm0165': 'GCodeOtherModal', # SetMix + 'm0166': 'GCodeOtherModal', # GradientMix + 'm0190': 'GCode', # WaitForBedTemperature + 'm0191': 'GCode', # WaitForChamberTemperature + 'm0192': 'GCode', # WaitForProbeTemperature + 'm0193': 'GCodeCoolant', # SetLaserCoolerTemperature + 'm0200': 'GCodeOtherModal', # SetFilamentDiameter + 'm0201': 'GCodeNonModal', # PrintTravelMoveLimits + 'm0203': 'GCodeFeedRateMode', # SetMaxFeedrate + 'm0204': 'GCodeOtherModal', # SetStartingAcceleration + 'm0205': 'GCodeOtherModal', # SetAdvancedSettings + 'm0206': 'GCodeOtherModal', # SetHomeOffsets + 'm0207': 'GCodeOtherModal', # SetFirmwareRetraction + 'm0208': 'GCodeOtherModal', # FirmwareRecover + 'm0209': 'GCodeOtherModal', # SetAutoRetract + 'm0211': 'GCodeOtherModal', # SoftwareEndstops + 'm0217': 'GCodeOtherModal', # FilamentSwapParameters + 'm0218': 'GCodeOtherModal', # SetHotendOffset + 'm0220': 'GCodeFeedRateMode', # SetFeedratePercentage + 'm0221': 'GCodeOtherModal', # SetFlowPercentage + 'm0226': 'GCodeIO', # WaitForPinState + 'm0240': 'GCodeIO', # TriggerCamera + 'm0250': 'GCodeIO', # LcdContrast + 'm0255': 'GCodeIO', # LcdSleepBacklightTimeout + 'm0256': 'GCodeIO', # LcdBrightness + 'm0260': 'GCodeDigitalOutput', # ICSend + 'm0261': 'GCodeIO', # ICRequest + 'm0280': 'GCodeIO', # ServoPosition + 'm0281': 'GCodeOtherModal', # EditServoAngles + 'm0282': 'GCodeOtherModal', # DetachServo + 'm0290': 'GCodeMotion', # Babystep + 'm0300': 'GCodeDigitalOutput', # PlayTone + 'm0301': 'GCodeOtherModal', # SetHotendPid + 'm0302': 'GCodeOtherModal', # ColdExtrude + 'm0303': 'GCodeOtherModal', # PidAutotune + 'm0304': 'GCodeOtherModal', # SetBedPid + 'm0305': 'GCodeOtherModal', # UserThermistorParameters + 'm0306': 'GCodeOtherModal', # ModelPredictiveTempControl + 'm0350': 'GCodeOtherModal', # SetMicroStepping + 'm0351': 'GCodeOtherModal', # SetMicrostepPins + 'm0355': 'GCodeDigitalOutput', # CaseLightControl + 'm0360': 'GCodeMotion', # ScaraThetaA + 'm0361': 'GCodeMotion', # ScaraThetaB + 'm0362': 'GCodeMotion', # ScaraPsiA + 'm0363': 'GCodeMotion', # ScaraPsiB + 'm0364': 'GCodeMotion', # ScaraPsiC + 'm0380': 'GCodeDigitalOutput', # ActivateSolenoid + 'm0381': 'GCodeDigitalOutput', # DeactivateSolenoids + 'm0400': 'GCodeOtherModal', # FinishMoves + 'm0401': 'GCodeDigitalOutput', # DeployProbe + 'm0402': 'GCodeDigitalOutput', # StowProbe + 'm0403': 'GCodeOtherModal', # MmuFilamentType + 'm0404': 'GCodeOtherModal', # SetFilamentDiameter + 'm0405': 'GCodeOtherModal', # FilamentWidthSensorOn + 'm0406': 'GCodeOtherModal', # FilamentWidthSensorOff + 'm0407': 'GCodeNonModal', # FilamentWidth + 'm0410': 'GCodeOtherModal', # Quickstop + 'm0412': 'GCodeOtherModal', # FilamentRunout + 'm0413': 'GCodeOtherModal', # PowerLossRecovery + 'm0420': 'GCodeNonModal', # BedLevelingState + 'm0421': 'GCodeOtherModal', # SetMeshValue + 'm0422': 'GCodeOtherModal', # SetZMotorXy + 'm0423': 'GCodeOtherModal', # XTwistCompensation + 'm0425': 'GCodeOtherModal', # BacklashCompensation + 'm0428': 'GCodeOtherModal', # HomeOffsetsHere + 'm0430': 'GCodeOtherModal', # PowerMonitor + 'm0486': 'GCodeOtherModal', # CancelObjects + 'm0493': 'GCodeOtherModal', # FixedTimeMotion + 'm0500': 'GCodeNonModal', # SaveSettings + 'm0501': 'GCodeOtherModal', # RestoreSettings + 'm0502': 'GCodeOtherModal', # FactoryReset + 'm0503': 'GCodeNonModal', # ReportSettings + 'm0504': 'GCodeNonModal', # ValidateEepromContents + 'm0510': 'GCodeOtherModal', # LockMachine + 'm0511': 'GCodeOtherModal', # UnlockMachine + 'm0512': 'GCodeNonModal', # SetPasscode + 'm0524': 'GCodeOtherModal', # AbortSdPrint + 'm0540': 'GCodeNonModal', # EndstopsAbortSd + 'm0569': 'GCodeOtherModal', # SetTmcSteppingMode + 'm0575': 'GCodeOtherModal', # SerialBaudRate + 'm0592': 'GCodeOtherModal', # NonlinearExtrusionControl + 'm0593': 'GCodeOtherModal', # ZvInputShaping + 'm0600': 'GCode', # FilamentChange + 'm0603': 'GCodeOtherModal', # ConfigureFilamentChange + 'm0605': 'GCodeOtherModal', # MultiNozzleMode + 'm0665': 'GCodeOtherModal', # DeltaConfiguration + 'm0665b': 'GCodeOtherModal', # ScaraConfiguration + 'm0666b': 'GCodeOtherModal', # SetDualEndstopOffsets + 'm0666a': 'GCodeOtherModal', # SetDeltaEndstopAdjustments + 'm0672': 'GCodeOtherModal', # DuetSmartEffectorSensitivity + 'm0701': 'GCodeOtherModal', # LoadFilament + 'm0702': 'GCodeOtherModal', # UnloadFilament + 'm0710': 'GCodeOtherModal', # ControllerFanSettings + 'm7219': 'GCodeDigitalOutput', # MaxControl + 'm0808': 'GCodeOtherModal', # RepeatMarker + 'm0810': 'GCodeOtherModal', # GCodeMacros + 'm0851': 'GCodeOtherModal', # XyzProbeOffset + 'm0852': 'GCodeOtherModal', # BedSkewCompensation + 'm0860': 'GCodeOtherModal', # ICPositionEncoders + 'm0871': 'GCodeOtherModal', # ProbeTemperatureConfig + 'm0876': 'GCode', # HandlePromptResponse + 'm0900': 'GCodeOtherModal', # LinearAdvanceFactor + 'm0906': 'GCodeOtherModal', # StepperMotorCurrent + 'm0907': 'GCodeOtherModal', # SetMotorCurrent + 'm0908': 'GCodeOtherModal', # SetTrimpotPins + 'm0909': 'GCodeNonModal', # DacPrintValues + 'm0910': 'GCodeNonModal', # CommitDacToEeprom + 'm0911': 'GCode', # TmcOtPreWarnCondition + 'm0912': 'GCode', # ClearTmcOtPreWarn + 'm0913': 'GCodeOtherModal', # SetHybridThresholdSpeed + 'm0914': 'GCodeOtherModal', # TmcBumpSensitivity + 'm0915': 'GCode', # TmcZAxisCalibration + 'm0916': 'GCode', # LThermalWarningTest + 'm0917': 'GCode', # LOvercurrentWarningTest + 'm0918': 'GCode', # LSpeedWarningTest + 'm0919': 'GCodeOtherModal', # TmcChopperTiming + 'm0928': 'GCodeIO', # StartSdLogging + 'm0951': 'GCodeOtherModal', # MagneticParkingExtruder + 'm0993': 'GCodeIO', # BackUpFlashSettingsToSd + 'm0994': 'GCodeIO', # RestoreFlashFromSd + 'm0995': 'GCodeIO', # TouchScreenCalibration + 'm0997': 'GCode', # FirmwareUpdate + 'm0999': 'GCodeOtherModal', # StopRestart + 't0000': 'GCodeOtherModal', # SelectOrReportTool + 't0001': 'GCode', # MmuSpecialCommands +} + +extra_attributes = { + 'g020': ['unit_id = 0'], # InchUnits + 'g021': ['unit_id = 1'], # MillimeterUnits +} + +def sanitize(string): + return ''.join([char if char in ascii_letters else '' for char in string]) + +def code_val(string): + try: + return int(string[1:]) + except ValueError: + try: + return float(string[1:]) + except ValueError: + return string.strip("'")[1:] + +def extract_data(filename): + param_letters = [] + with open(filename,'r') as file: + for line in file.readlines(): + comment = '' + if line.startswith('tag: '): + tag = line[5:].rstrip() + name_suffix = '' + try: + letter, code = line[5].upper(), int(line[6:].lstrip('0')) + except ValueError as e: + try: + letter, code = line[5].upper(), line[6:].lstrip('0') + if code == '\n': code = 0 + else: raise ValueError + except ValueError: + code = int(code[:-2].rstrip(ascii_letters)) + comment = f"# NOTE: {line}" + name_suffix = line.rstrip('\n')[6:].replace(str(code), '').lstrip('0') + code = int(code) + elif line.startswith('title: '): + title = line[7:].rstrip() + class_name = sanitize(title.title()) + elif line.startswith('codes: '): + codes = line[8:-2].replace(' ','').split(',') + elif line.startswith('brief: '): + brief = line.rstrip()[7:] + elif line.startswith('- tag: '): + param_letters.append(line[-2]) + + #print(f"\t'{tag}': 'GCode', # {class_name}") + out = "" + + out += f'''class {comment}GCode{class_name}{name_suffix}({class_types[tag]}): + """{', '.join(codes)}: {brief}""" + param_letters = "{''.join(param_letters)}" + dialects = ['marlin2'] +''' + + if len(codes) > 1: + out += f''' + @classmethod + def word_matches(cls, w): + return (w.letter == '{letter}') and (w.value in {[code_val(v) for v in codes]}) + default_word = Word('{letter}', {code}) +''' + else: + out += f" word_key = Word('{letter}', {code})\n" + + try: + for extra_attr in extra_attributes[tag]: + out += f" {extra_attr}" + except KeyError: + pass + + return class_name, out + + + +if __name__ == '__main__': + from sys import argv, stderr + all_classes = [] + + print("# DO NOT EDIT - file generated with pygcode/src/pygcode/tools/marlin_parse_MarlinDocumentation.py\nfrom .gcodes_base import *\n") + print("# TODO: manual changes have been made! see pygcode/src/pygcode/gcode_marlin.patch", file=stderr) + + for filename in argv[1:]: + name, body = extract_data(filename) + if name in all_classes: + print(f"# TODO: duplicate class name GCode{name}", file=stderr) + print(f"# TODO: duplicate class name GCode{name}") + pass + else: + all_classes.append(name) + print(body) +