(self, line)
| 351 | except: |
| 352 | return {} |
| 353 | def handle_gcode_state(self, line): |
| 354 | kv = self.extract_params(line) |
| 355 | out = ['; Start g-code state restore', 'G28'] |
| 356 | if not kv.get('absolute_coord', kv.get('absolutecoord')): |
| 357 | out.append('G91') |
| 358 | if not kv.get('absolute_extrude', kv.get('absoluteextrude')): |
| 359 | out.append('M83') |
| 360 | lp = kv['last_position'] |
| 361 | out.append('G1 X%f Y%f Z%f F%f' % ( |
| 362 | lp[0], lp[1], lp[2], kv['speed'] * 60.)) |
| 363 | bp = kv['base_position'] |
| 364 | if bp[:3] != [0., 0., 0.]: |
| 365 | out.append('; Must manually set base position...') |
| 366 | out.append('G92 E%f' % (lp[3] - bp[3],)) |
| 367 | hp = kv['homing_position'] |
| 368 | if hp != [0., 0., 0., 0.]: |
| 369 | out.append('; Must manually set homing position...') |
| 370 | if abs(kv['speed_factor'] - 1. / 60.) > .000001: |
| 371 | out.append('M220 S%f' % (kv['speed_factor'] * 60. * 100.,)) |
| 372 | if kv['extrude_factor'] != 1.: |
| 373 | out.append('M221 S%f' % (kv['extrude_factor'] * 100.,)) |
| 374 | out.extend(['; End of state restore', '', '']) |
| 375 | self.gcode_state = '\n'.join(out) |
| 376 | def parse_line(self, line_num, line): |
| 377 | m = gcode_cmd_r.match(line) |
| 378 | if m is not None: |
no test coverage detected