gcode_arcs: Add back in support for E moves in absolute extrude mode

This reverts commit 43fa41c1af.

The above commit disabled absolute extrude moves because it was
unclear if the code would work properly when an M221 extrude factor or
G92 offset was in use.  However, since the calculation is done
relative to the raw E position and is sent as a raw E position to
gcode.cmd_G1() these modes should not matter.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2020-06-04 15:19:08 -04:00
parent 2a66286d1c
commit 5d26c2a08e
2 changed files with 7 additions and 5 deletions

View File

@ -38,20 +38,23 @@ class ArcSupport:
if not asI and not asJ: if not asI and not asJ:
raise gcmd.error("G2/G3 neither I nor J given") raise gcmd.error("G2/G3 neither I nor J given")
asE = gcmd.get_float("E", None) asE = gcmd.get_float("E", None)
if asE is not None and gcodestatus['absolute_extrude']:
raise gcmd.error("G2/G3 only supports relative extrude mode")
asF = gcmd.get_float("F", None) asF = gcmd.get_float("F", None)
clockwise = (gcmd.get_command() == 'G2') clockwise = (gcmd.get_command() == 'G2')
# Build list of linear coordinates to move to # Build list of linear coordinates to move to
coords = self.planArc(currentPos, [asX, asY, asZ], [asI, asJ], coords = self.planArc(currentPos, [asX, asY, asZ], [asI, asJ],
clockwise) clockwise)
e_per_move = e_base = 0.
if asE is not None:
if gcodestatus['absolute_extrude']:
e_base = currentPos[3]
e_per_move = (asE - e_base) / len(coords)
# Convert coords into G1 commands # Convert coords into G1 commands
for coord in coords: for coord in coords:
g1_params = {'X': coord[0], 'Y': coord[1], 'Z': coord[2]} g1_params = {'X': coord[0], 'Y': coord[1], 'Z': coord[2]}
if asE is not None: if e_per_move:
g1_params['E'] = asE / len(coords) g1_params['E'] = e_base + e_per_move
if asF is not None: if asF is not None:
g1_params['F'] = asF g1_params['F'] = asF
g1_gcmd = self.gcode.create_gcode_command("G1", "G1", g1_params) g1_gcmd = self.gcode.create_gcode_command("G1", "G1", g1_params)

View File

@ -3,7 +3,6 @@ DICTIONARY atmega2560.dict
CONFIG gcode_arcs.cfg CONFIG gcode_arcs.cfg
# Home and move in arcs # Home and move in arcs
M83
G28 G28
G1 X20 Y20 Z20 G1 X20 Y20 Z20
G2 X125 Y32 Z20 E1 I10.5 J10.5 G2 X125 Y32 Z20 E1 I10.5 J10.5