Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kliment/Printrun.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkliment <kliment.yanev@gmail.com>2021-02-02 20:33:41 +0300
committerGitHub <noreply@github.com>2021-02-02 20:33:41 +0300
commitbde80f015eb9cd67aa708d2289428bac209ba406 (patch)
treef6d9e096ce411d644bc68f04dd6a6b11a252d592
parent669375df09592d52fc6eb0cc81507ccc94940c42 (diff)
parent1618ae51a681da0ce5f5666a4c115c4257814f3c (diff)
Merge pull request #1158 from volconst/layer-counts
Refine layer counting
-rwxr-xr-xprintrun/gcoder.py7
-rw-r--r--testfiles/layer-detect2.gcode17
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')