deal with wrong layer count in Gcode
This commit is contained in:
@@ -6,7 +6,7 @@ import re
|
|||||||
from math import isclose
|
from math import isclose
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG,
|
logging.basicConfig(level=logging.DEBUG,
|
||||||
format='%(asctime)s - %(message)s')
|
format='%(asctime)s - %(levelname)s: %(message)s')
|
||||||
|
|
||||||
FLOAT_OR_INT = r'\d+(\.\d*)?'
|
FLOAT_OR_INT = r'\d+(\.\d*)?'
|
||||||
|
|
||||||
@@ -59,6 +59,12 @@ class GcodeFileAnalyzer:
|
|||||||
layerCountMatch = RE_LAYER_COUNT.search(fullCode)
|
layerCountMatch = RE_LAYER_COUNT.search(fullCode)
|
||||||
self.layerCount = int(layerCountMatch.group(1))
|
self.layerCount = int(layerCountMatch.group(1))
|
||||||
layersList = RE_LAYER.findall(fullCode)
|
layersList = RE_LAYER.findall(fullCode)
|
||||||
|
|
||||||
|
if len(layersList) != self.layerCount:
|
||||||
|
logging.warning('Gcode states wrong layer count {}. But found {} layers.'
|
||||||
|
.format(layerCountMatch.group(0), len(layersList)))
|
||||||
|
self.layerCount = len(layersList)
|
||||||
|
|
||||||
layersIndices = [self.lines.index(layer) for layer in layersList] + [startOfFooterIndex]
|
layersIndices = [self.lines.index(layer) for layer in layersList] + [startOfFooterIndex]
|
||||||
self.layers = [Layer(self.lines[i:j]) for i, j in zip(layersIndices[:-1], layersIndices[1:])]
|
self.layers = [Layer(self.lines[i:j]) for i, j in zip(layersIndices[:-1], layersIndices[1:])]
|
||||||
|
|
||||||
@@ -202,6 +208,8 @@ class Layer:
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
GcodeFileAnalyzer.SplitFileAtLayers('test/BigL.gcode', ['2.8001mm', 300])
|
# GcodeFileAnalyzer.SplitFileAtLayers('test/BigL.gcode', ['2.8001mm', 300])
|
||||||
# GcodeFileAnalyzer.SplitFileAtLayers(r"Q:\DIY\3Dprint\Models\Thingiverse\Murmelbahnen\The_Cyclone_triple_lift_triple_track_marble_machine\files\gcode\Marble_machine.gcode",
|
# GcodeFileAnalyzer.SplitFileAtLayers(r"Q:\DIY\3Dprint\Models\Thingiverse\Murmelbahnen\The_Cyclone_triple_lift_triple_track_marble_machine\files\gcode\Marble_machine.gcode",
|
||||||
# [118, 160, 240, 360, 480])
|
# ['97.3mm', 405, 480])
|
||||||
|
GcodeFileAnalyzer.SplitFileAtLayers(r"Q:\DIY\3Dprint\Models\Thingiverse\Shuttle\Shuttle.gcode",
|
||||||
|
[334])
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class GcodeTest(unittest.TestCase):
|
|||||||
self.assertEqual(gcode.layers[3].lines, [';LAYER:3', 'G0 Z0.9', 'G1 E33.33', ';TIME_ELAPSED:4.11',])
|
self.assertEqual(gcode.layers[3].lines, [';LAYER:3', 'G0 Z0.9', 'G1 E33.33', ';TIME_ELAPSED:4.11',])
|
||||||
self.assertEqual(gcode.layerCount, 4)
|
self.assertEqual(gcode.layerCount, 4)
|
||||||
self.assertEqual(gcode.fanSpeedCode, 'M106 S255')
|
self.assertEqual(gcode.fanSpeedCode, 'M106 S255')
|
||||||
|
self.assertEqual(gcode.layerCount, len(gcode.layers))
|
||||||
|
|
||||||
def test_SplitInTwo(self):
|
def test_SplitInTwo(self):
|
||||||
gcode = GcodeFileAnalyzer(dummyGcode)
|
gcode = GcodeFileAnalyzer(dummyGcode)
|
||||||
|
|||||||
Reference in New Issue
Block a user