From ad8680be3836517e4c269a5f30a4e59d5bc7a7ee Mon Sep 17 00:00:00 2001 From: Arksine Date: Tue, 8 Sep 2020 12:25:46 -0400 Subject: [PATCH] extract_metadata: Add support for IceSL slicer Signed-off-by: Eric Callahan --- scripts/extract_metadata.py | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/scripts/extract_metadata.py b/scripts/extract_metadata.py index 8ab370d..96ba748 100644 --- a/scripts/extract_metadata.py +++ b/scripts/extract_metadata.py @@ -66,15 +66,15 @@ class BaseSlicer(object): def get_id_pattern(self): return self.id_pattern - def _parse_min_float(self, pattern, data): - result = _regex_find_floats(pattern, data) + def _parse_min_float(self, pattern, data, strict=False): + result = _regex_find_floats(pattern, data, strict) if result: return min(result) else: return None - def _parse_max_float(self, pattern, data): - result = _regex_find_floats(pattern, data) + def _parse_max_float(self, pattern, data, strict=False): + result = _regex_find_floats(pattern, data, strict) if result: return max(result) else: @@ -383,11 +383,37 @@ class IdeaMaker(BaseSlicer): return _regex_find_first( r"M190 S(\d+\.?\d*)", self.header_data) +class IceSL(BaseSlicer): + def __init__(self, name="IceSL", id_pattern=r"; ",): + super(IceSL, self).__init__(name, id_pattern) + + def parse_first_layer_height(self): + return _regex_find_first( + r"; z_layer_height_first_layer_mm :\s+(\d+\.\d+)", + self.header_data, float) + + def parse_layer_height(self): + return _regex_find_first( + r"; z_layer_height_mm :\s+(\d+\.\d+)", + self.header_data, float) + + def parse_object_height(self): + return self._parse_max_float( + r"G0 F\d+ Z\d+\.\d+", self.footer_data, strict=True) + + def parse_first_layer_extr_temp(self): + return _regex_find_first( + r"; extruder_temp_degree_c_0 :\s+(\d+\.?\d*)", self.header_data) + + def parse_first_layer_bed_temp(self): + return _regex_find_first( + r"; bed_temp_degree_c :\s+(\d+\.?\d*)", self.header_data) + READ_SIZE = 512 * 1024 SUPPORTED_SLICERS = [ PrusaSlicer, Slic3rPE, Slic3r, SuperSlicer, - Cura, Simplify3D, KISSlicer, IdeaMaker] + Cura, Simplify3D, KISSlicer, IdeaMaker, IceSL] SUPPORTED_DATA = [ 'first_layer_height', 'layer_height', 'object_height', 'filament_total', 'estimated_time', 'thumbnails',