Grotti 3.4.0: Dateien umbenennen, Bedarf/PLA-Match, Pause- und gklib-Fixes.
This commit is contained in:
1 parent
67a89d1794
commit
dd0e7ebc6b
16 files changed
+430
-58
No files matched your search
@@ -17,6 +17,8 @@ TRAILER_RE = re.compile(rb";\s*referenced_tools\s*=", re.I)
|
||||
RINKHALS_FINGERPRINT = b"; processed by MmuAcePatcher"
|
||||
_SLICER_RE = re.compile(rb"^;.*generated by ([A-Za-z]*) .*$|^; (BambuStudio) .*$", re.I)
|
||||
_TOOL_RE = re.compile(rb"^(?:MMU_CHANGE_TOOL(?:_STANDALONE)? .*?TOOL=|T)(\d{1,2})", re.I)
|
||||
# Orca `; filament_colour_type` — gklib parsed wie `filament_colour` und panickt (10111).
|
||||
_COLOUR_TYPE_LINE_RE = re.compile(rb"(?m)^;\s*filament_colour_type\b[^\n]*\n?")
|
||||
_AUTHORIZED_SLICERS = {
|
||||
"prusaslicer",
|
||||
"superslicer",
|
||||
@@ -244,6 +246,36 @@ def _paint_tool_indexes(content):
|
||||
return found
|
||||
|
||||
|
||||
def gcode_is_multicolor(content, tools=None):
|
||||
"""Mehr als ein Slicer-/ACE-Tool → Multicolor (Header nicht antasten)."""
|
||||
if not content or content[:2] == b"PK":
|
||||
return False
|
||||
indexes = set()
|
||||
for value in tools or []:
|
||||
try:
|
||||
indexes.add(int(value))
|
||||
except (TypeError, ValueError):
|
||||
continue
|
||||
for line in _gcode_lines(content):
|
||||
match = _TOOL_RE.match(line)
|
||||
if match:
|
||||
indexes.add(int(match.group(1)))
|
||||
indexes |= _paint_tool_indexes(content)
|
||||
return len(indexes) > 1
|
||||
|
||||
|
||||
def strip_filament_colour_type(content, tools=None):
|
||||
"""`; filament_colour_type` nur bei Einfarbig entfernen (gklib 10111).
|
||||
|
||||
Multicolor unverändert — ACE/paint_index und `; filament_colour` bleiben.
|
||||
"""
|
||||
if not content or content[:2] == b"PK":
|
||||
return content
|
||||
if gcode_is_multicolor(content, tools=tools):
|
||||
return content
|
||||
return _COLOUR_TYPE_LINE_RE.sub(b"", content)
|
||||
|
||||
|
||||
def prepare_rinkhals_gcode(content, tools=None):
|
||||
"""Kopfzeile für Rinkhals plus `; referenced_tools`, wenn sie fehlt.
|
||||
|
||||
@@ -253,6 +285,7 @@ def prepare_rinkhals_gcode(content, tools=None):
|
||||
"""
|
||||
if not content or content[:2] == b"PK":
|
||||
return content
|
||||
content = strip_filament_colour_type(content, tools=tools)
|
||||
first_end = content.find(b"\n")
|
||||
first = content if first_end < 0 else content[:first_end]
|
||||
if first.endswith(b"\r"):
|
||||
|
||||
Reference in new issue
Block a user