gcode_arcs: Disable E moves in absolute extrude mode

Commit 402110f6 didn't actually fix absolute extrude mode.  For now,
report an error if an extrude move is requested in absolute extrude
mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2020-04-23 10:05:05 -04:00
parent fc627ec470
commit 43fa41c1af
2 changed files with 5 additions and 7 deletions

View File

@ -38,23 +38,20 @@ class ArcSupport:
if not asI and not asJ: if not asI and not asJ:
raise self.gcode.error("G2/G3 neither I nor J given") raise self.gcode.error("G2/G3 neither I nor J given")
asE = self.gcode.get_float("E", params, None) asE = self.gcode.get_float("E", params, None)
if asE is not None and gcodestatus['absolute_extrude']:
raise self.gcode.error("G2/G3 only supports relative extrude mode")
asF = self.gcode.get_float("F", params, None) asF = self.gcode.get_float("F", params, None)
clockwise = (params['#command'] == 'G2') clockwise = (params['#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 e_per_move: if asE is not None:
g1_params['E'] = e_base + e_per_move g1_params['E'] = asE / len(coords)
if asF is not None: if asF is not None:
g1_params['F'] = asF g1_params['F'] = asF
self.gcode.cmd_G1(g1_params) self.gcode.cmd_G1(g1_params)

View File

@ -3,6 +3,7 @@ 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