diff options
author | kliment <kliment.yanev@gmail.com> | 2021-02-02 20:33:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-02 20:33:41 +0300 |
commit | bde80f015eb9cd67aa708d2289428bac209ba406 (patch) | |
tree | f6d9e096ce411d644bc68f04dd6a6b11a252d592 | |
parent | 669375df09592d52fc6eb0cc81507ccc94940c42 (diff) | |
parent | 1618ae51a681da0ce5f5666a4c115c4257814f3c (diff) |
Merge pull request #1158 from volconst/layer-counts
Refine layer counting
-rwxr-xr-x | printrun/gcoder.py | 7 | ||||
-rw-r--r-- | testfiles/layer-detect2.gcode | 17 |
2 files changed, 20 insertions, 4 deletions
diff --git a/printrun/gcoder.py b/printrun/gcoder.py index 9c11729..07fd8d3 100755 --- a/printrun/gcoder.py +++ b/printrun/gcoder.py @@ -403,11 +403,12 @@ class GCode: return nonlocal layerbeginduration, last_layer_z if cur_layer_has_extrusion and prev_z != last_layer_z \ - or not all_layers or isEnd: + or not all_layers: layer = Layer([], prev_z) last_layer_z = prev_z finished_layer = len(all_layers)-1 if all_layers else None all_layers.append(layer) + all_zs.add(prev_z) else: layer = all_layers[-1] finished_layer = None @@ -543,7 +544,7 @@ class GCode: max_e = max(max_e, total_e) max_e_multi=max(max_e_multi, total_e_multi) - cur_layer_has_extrusion |= line.extruding + cur_layer_has_extrusion |= line.extruding and (line.x is not None or line.y is not None) elif line.command == "G92": offset_e = current_e - line.e offset_e_multi = current_e_multi - line.e @@ -654,7 +655,6 @@ class GCode: if cur_z != prev_z and cur_layer_has_extrusion: append_lines(cur_lines, False) - all_zs.add(prev_z) cur_lines = [] cur_layer_has_extrusion = False @@ -689,7 +689,6 @@ class GCode: if build_layers: if cur_lines: append_lines(cur_lines, True) - all_zs.add(prev_z) self.append_layer_id = len(all_layers) self.append_layer = Layer([]) diff --git a/testfiles/layer-detect2.gcode b/testfiles/layer-detect2.gcode new file mode 100644 index 0000000..7fa3f56 --- /dev/null +++ b/testfiles/layer-detect2.gcode @@ -0,0 +1,17 @@ +; Print this file to see the parsed layers +; This file tests problem reported in +; https://github.com/kliment/Printrun/pull/1069#issuecomment-770091308 + +G28 +G0 Z15 +G1 E6 ; should not count as x,y not moved + +G0 X10 Y10 Z0.2 +G1 X20 E7 + +G0 Z10 +M83 ;relative extrusion mode +G1 E-3 ; retract should not create layer + +;@!print([l.z for l in self.fgcode.all_layers]) +;@!print('test ', 'passed' if len(self.fgcode.all_layers) == 1 else 'failed') |