diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2020-08-05 11:43:45 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2020-08-20 21:03:22 -0400 |
commit | 4c5e93d51dca2393946a67646499fef5fdd034b0 (patch) | |
tree | 5450c95a3aa8fe5554dad97df2adf9b2b05c1a64 /klippy/extras | |
parent | cd7c1b8e68d8234524149c62e8ea2ad0bda07d2f (diff) | |
download | kutter-4c5e93d51dca2393946a67646499fef5fdd034b0.tar.gz kutter-4c5e93d51dca2393946a67646499fef5fdd034b0.tar.xz kutter-4c5e93d51dca2393946a67646499fef5fdd034b0.zip |
gcode: Split G0/G1 command handling to new gcode_move class
Split up the main GCodeParser class into GCodeDispatch and GCodeMove
classes. The GCodeMove class is now available using the "gcode_move"
printer object name. This split simplifies the gcode.py code.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras')
-rw-r--r-- | klippy/extras/bed_mesh.py | 7 | ||||
-rw-r--r-- | klippy/extras/bed_tilt.py | 7 | ||||
-rw-r--r-- | klippy/extras/display/display.cfg | 4 | ||||
-rw-r--r-- | klippy/extras/display/menu.cfg | 26 | ||||
-rw-r--r-- | klippy/extras/gcode_arcs.py | 7 | ||||
-rw-r--r-- | klippy/extras/homing_override.py | 4 | ||||
-rw-r--r-- | klippy/extras/print_stats.py | 6 | ||||
-rw-r--r-- | klippy/extras/skew_correction.py | 8 | ||||
-rw-r--r-- | klippy/extras/tuning_tower.py | 8 | ||||
-rw-r--r-- | klippy/extras/virtual_sdcard.py | 1 |
10 files changed, 42 insertions, 36 deletions
diff --git a/klippy/extras/bed_mesh.py b/klippy/extras/bed_mesh.py index cfc7807e..b1c0f6b8 100644 --- a/klippy/extras/bed_mesh.py +++ b/klippy/extras/bed_mesh.py @@ -87,7 +87,9 @@ class BedMesh: self.gcode.register_command( 'BED_MESH_CLEAR', self.cmd_BED_MESH_CLEAR, desc=self.cmd_BED_MESH_CLEAR_help) - self.gcode.set_move_transform(self) + # Register transform + gcode_move = self.printer.lookup_object('gcode_move') + gcode_move.set_move_transform(self) def handle_ready(self): self.toolhead = self.printer.lookup_object('toolhead') self.bmc.print_generated_points(logging.info) @@ -126,7 +128,8 @@ class BedMesh: self.z_mesh = mesh self.splitter.initialize(mesh) # cache the current position before a transform takes place - self.gcode.reset_last_position() + gcode_move = self.printer.lookup_object('gcode_move') + gcode_move.reset_last_position() def get_z_factor(self, z_pos): if z_pos >= self.fade_end: return 0. diff --git a/klippy/extras/bed_tilt.py b/klippy/extras/bed_tilt.py index dd75655a..dfcb682f 100644 --- a/klippy/extras/bed_tilt.py +++ b/klippy/extras/bed_tilt.py @@ -19,8 +19,8 @@ class BedTilt: BedTiltCalibrate(config, self) self.toolhead = None # Register move transform with g-code class - gcode = self.printer.lookup_object('gcode') - gcode.set_move_transform(self) + gcode_move = self.printer.lookup_object('gcode_move') + gcode_move.set_move_transform(self) def handle_connect(self): self.toolhead = self.printer.lookup_object('toolhead') def get_position(self): @@ -34,6 +34,8 @@ class BedTilt: self.x_adjust = x_adjust self.y_adjust = y_adjust self.z_adjust = z_adjust + gcode_move = self.printer.lookup_object('gcode_move') + gcode_move.reset_last_position() configfile = self.printer.lookup_object('configfile') configfile.set('bed_tilt', 'x_adjust', "%.6f" % (x_adjust,)) configfile.set('bed_tilt', 'y_adjust', "%.6f" % (y_adjust,)) @@ -80,7 +82,6 @@ class BedTiltCalibrate: z_adjust = (new_params['z_adjust'] - z_offset - x_adjust * offsets[0] - y_adjust * offsets[1]) self.bedtilt.update_adjust(x_adjust, y_adjust, z_adjust) - self.gcode.reset_last_position() # Log and report results logging.info("Calculated bed_tilt parameters: %s", new_params) for pos in positions: diff --git a/klippy/extras/display/display.cfg b/klippy/extras/display/display.cfg index 35a68dd7..a6377914 100644 --- a/klippy/extras/display/display.cfg +++ b/klippy/extras/display/display.cfg @@ -83,7 +83,7 @@ text: { render("_heater_temperature", param_heater_name="heater_bed") } position: 1, 10 text: ~feedrate~ - { "{:>4.0%}".format(printer.gcode.speed_factor) } + { "{:>4.0%}".format(printer.gcode_move.speed_factor) } [display_data _default_16x4 print_progress] position: 2, 0 @@ -164,7 +164,7 @@ text: position: 2, 0 text: ~feedrate~ - { "{:^4.0%}".format(printer.gcode.speed_factor) } + { "{:^4.0%}".format(printer.gcode_move.speed_factor) } [display_data _default_20x4 print_progress] position: 2, 8 diff --git a/klippy/extras/display/menu.cfg b/klippy/extras/display/menu.cfg index 8ac61c4e..77009a1d 100644 --- a/klippy/extras/display/menu.cfg +++ b/klippy/extras/display/menu.cfg @@ -96,7 +96,7 @@ name: Tune [menu __main __tune __speed] type: input name: Speed: {'%3d' % (menu.input*100)}% -input: {printer.gcode.speed_factor} +input: {printer.gcode_move.speed_factor} input_min: 0 input_max: 2 input_step: 0.01 @@ -107,7 +107,7 @@ gcode: [menu __main __tune __flow] type: input name: Flow: {'%3d' % (menu.input*100)}% -input: {printer.gcode.extrude_factor} +input: {printer.gcode_move.extrude_factor} input_min: 0 input_max: 2 input_step: 0.01 @@ -118,7 +118,7 @@ gcode: [menu __main __tune __offsetz] type: input name: Offset Z:{'%05.3f' % menu.input} -input: {printer.gcode.homing_origin.z} +input: {printer.gcode_move.homing_origin.z} input_min: -5 input_max: 5 input_step: 0.005 @@ -260,7 +260,7 @@ name: Move 10mm [menu __main __control __move_10mm __axis_x] type: input name: Move X:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.x} +input: {printer.gcode_move.gcode_position.x} input_min: 0 input_max: 200 input_step: 10.0 @@ -273,7 +273,7 @@ gcode: [menu __main __control __move_10mm __axis_y] type: input name: Move Y:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.y} +input: {printer.gcode_move.gcode_position.y} input_min: 0 input_max: 200 input_step: 10.0 @@ -287,7 +287,7 @@ gcode: type: input enable: {not printer.idle_timeout.state == "Printing"} name: Move Z:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.z} +input: {printer.gcode_move.gcode_position.z} input_min: 0 input_max: 200 input_step: 10.0 @@ -320,7 +320,7 @@ name: Move 1mm [menu __main __control __move_1mm __axis_x] type: input name: Move X:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.x} +input: {printer.gcode_move.gcode_position.x} input_min: 0 input_max: 200 input_step: 1.0 @@ -333,7 +333,7 @@ gcode: [menu __main __control __move_1mm __axis_y] type: input name: Move Y:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.y} +input: {printer.gcode_move.gcode_position.y} input_min: 0 input_max: 200 input_step: 1.0 @@ -347,7 +347,7 @@ gcode: type: input enable: {not printer.idle_timeout.state == "Printing"} name: Move Z:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.z} +input: {printer.gcode_move.gcode_position.z} input_min: 0 input_max: 200 input_step: 1.0 @@ -380,7 +380,7 @@ name: Move 0.1mm [menu __main __control __move_01mm __axis_x] type: input name: Move X:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.x} +input: {printer.gcode_move.gcode_position.x} input_min: 0 input_max: 200 input_step: 0.1 @@ -393,7 +393,7 @@ gcode: [menu __main __control __move_01mm __axis_y] type: input name: Move Y:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.y} +input: {printer.gcode_move.gcode_position.y} input_min: 0 input_max: 200 input_step: 0.1 @@ -407,7 +407,7 @@ gcode: type: input enable: {not printer.idle_timeout.state == "Printing"} name: Move Z:{'%05.1f' % menu.input} -input: {printer.gcode.gcode_position.z} +input: {printer.gcode_move.gcode_position.z} input_min: 0 input_max: 200 input_step: 0.1 @@ -677,7 +677,7 @@ gcode: [menu __main __setup __calib __delta_calib_man __move_z] type: input name: Move Z: {'%03.2f' % menu.input} -input: {printer.gcode.gcode_position.z} +input: {printer.gcode_move.gcode_position.z} input_step: 1 realtime: True gcode: diff --git a/klippy/extras/gcode_arcs.py b/klippy/extras/gcode_arcs.py index 13a02697..ad973562 100644 --- a/klippy/extras/gcode_arcs.py +++ b/klippy/extras/gcode_arcs.py @@ -17,14 +17,15 @@ class ArcSupport: self.printer = config.get_printer() self.mm_per_arc_segment = config.getfloat('resolution', 1., above=0.0) + self.gcode_move = self.printer.lookup_object('gcode_move') self.gcode = self.printer.lookup_object('gcode') self.gcode.register_command("G2", self.cmd_G2) self.gcode.register_command("G3", self.cmd_G2) def cmd_G2(self, gcmd): - gcodestatus = self.gcode.get_status() + gcodestatus = self.gcode_move.get_status() if not gcodestatus['absolute_coordinates']: - raise self.gcode.error("G2/G3 does not support relative move mode") + raise gcmd.error("G2/G3 does not support relative move mode") currentPos = gcodestatus['gcode_position'] # Parse parameters @@ -60,7 +61,7 @@ class ArcSupport: if asF is not None: g1_params['F'] = asF g1_gcmd = self.gcode.create_gcode_command("G1", "G1", g1_params) - self.gcode.cmd_G1(g1_gcmd) + self.gcode_move.cmd_G1(g1_gcmd) # function planArc() originates from marlin plan_arc() # https://github.com/MarlinFirmware/Marlin diff --git a/klippy/extras/homing_override.py b/klippy/extras/homing_override.py index d7a9a874..9d683537 100644 --- a/klippy/extras/homing_override.py +++ b/klippy/extras/homing_override.py @@ -32,14 +32,14 @@ class HomingOverride: if no_axis: override = True else: - # check if we home an axsis which needs the override + # check if we home an axis which needs the override override = False for axis in self.axes: if gcmd.get(axis, None) is not None: override = True if not override: - self.gcode.cmd_G28(gcmd) + self.prev_G28(gcmd) return # Calculate forced position (if configured) diff --git a/klippy/extras/print_stats.py b/klippy/extras/print_stats.py index 1a3fcb22..67bb2f33 100644 --- a/klippy/extras/print_stats.py +++ b/klippy/extras/print_stats.py @@ -7,11 +7,11 @@ class PrintStats: def __init__(self, config): printer = config.get_printer() - self.gcode = printer.lookup_object('gcode') + self.gcode_move = printer.lookup_object('gcode_move') self.reactor = printer.get_reactor() self.reset() def _update_filament_usage(self, eventtime): - gc_status = self.gcode.get_status(eventtime) + gc_status = self.gcode_move.get_status(eventtime) cur_epos = gc_status['position'].e self.filament_used += (cur_epos - self.last_epos) \ / gc_status['extrude_factor'] @@ -29,7 +29,7 @@ class PrintStats: self.prev_pause_duration += pause_duration self.last_pause_time = None # Reset last e-position - gc_status = self.gcode.get_status(curtime) + gc_status = self.gcode_move.get_status(curtime) self.last_epos = gc_status['position'].e self.state = "printing" self.error_message = "" diff --git a/klippy/extras/skew_correction.py b/klippy/extras/skew_correction.py index afb68bbb..9a0ee2ad 100644 --- a/klippy/extras/skew_correction.py +++ b/klippy/extras/skew_correction.py @@ -40,8 +40,8 @@ class PrinterSkew: gcode.register_command('SKEW_PROFILE', self.cmd_SKEW_PROFILE, desc=self.cmd_SKEW_PROFILE_help) def _handle_ready(self): - gcode = self.printer.lookup_object('gcode') - self.next_transform = gcode.set_move_transform(self, force=True) + gcode_move = self.printer.lookup_object('gcode_move') + self.next_transform = gcode_move.set_move_transform(self, force=True) def _load_storage(self, config): stored_profs = config.get_prefix_sections(self.name) # Remove primary skew_correction section, as it is not a stored profile @@ -73,8 +73,8 @@ class PrinterSkew: self.xy_factor = xy_factor self.xz_factor = xz_factor self.yz_factor = yz_factor - gcode = self.printer.lookup_object('gcode') - gcode.reset_last_position() + gcode_move = self.printer.lookup_object('gcode_move') + gcode_move.reset_last_position() cmd_GET_CURRENT_SKEW_help = "Report current printer skew" def cmd_GET_CURRENT_SKEW(self, gcmd): out = "Current Printer Skew:" diff --git a/klippy/extras/tuning_tower.py b/klippy/extras/tuning_tower.py index 87a0093d..e16192d5 100644 --- a/klippy/extras/tuning_tower.py +++ b/klippy/extras/tuning_tower.py @@ -15,6 +15,7 @@ class TuningTower: self.last_z = self.start = self.factor = self.band = 0. self.last_command_value = None self.command_fmt = "" + self.gcode_move = self.printer.lookup_object("gcode_move") # Register command self.gcode = self.printer.lookup_object("gcode") self.gcode.register_command("TUNING_TOWER", self.cmd_TUNING_TOWER, @@ -34,7 +35,8 @@ class TuningTower: self.command_fmt = "%s %s%%.9f" % (command, parameter) else: self.command_fmt = "%s %s=%%.9f" % (command, parameter) - self.normal_transform = self.gcode.set_move_transform(self, force=True) + nt = self.gcode_move.set_move_transform(self, force=True) + self.normal_transform = nt self.last_z = -99999999.9 self.last_command_value = None self.get_position() @@ -59,7 +61,7 @@ class TuningTower: self.end_test() else: # Process update - gcode_z = self.gcode.get_status()['gcode_position'].z + gcode_z = self.gcode_move.get_status()['gcode_position'].z newval = self.calc_value(gcode_z) self.last_z = z if newval != self.last_command_value: @@ -71,7 +73,7 @@ class TuningTower: normal_transform.move(newpos, speed) def end_test(self): self.gcode.respond_info("Ending tuning test mode") - self.gcode.set_move_transform(self.normal_transform, force=True) + self.gcode_move.set_move_transform(self.normal_transform, force=True) self.normal_transform = None def load_config(config): diff --git a/klippy/extras/virtual_sdcard.py b/klippy/extras/virtual_sdcard.py index 7ab58654..699add31 100644 --- a/klippy/extras/virtual_sdcard.py +++ b/klippy/extras/virtual_sdcard.py @@ -24,7 +24,6 @@ class VirtualSD: self.work_timer = None # Register commands self.gcode = printer.lookup_object('gcode') - self.gcode.register_command('M21', None) for cmd in ['M20', 'M21', 'M23', 'M24', 'M25', 'M26', 'M27']: self.gcode.register_command(cmd, getattr(self, 'cmd_' + cmd)) for cmd in ['M28', 'M29', 'M30']: |