Upgrade extruder stacks

Stupid stuff. All of these containers need to be copied. It's not possible to work this out for all materials properly, since we can't read into these materials what their GUIDs and material types are.
This commit is contained in:
Ghostkeeper 2020-04-09 01:04:53 +02:00
parent a5b4b15ae4
commit 2410d05100
No known key found for this signature in database
GPG key ID: D2A8871EE34EC59A
2 changed files with 63 additions and 6 deletions

View file

@ -7,6 +7,28 @@ from typing import Tuple, List
import io
from UM.VersionUpgrade import VersionUpgrade
renamed_nozzles = {
"deltacomb_025_e3d": "deltacomb_dc20_fbe025",
"deltacomb_040_e3d": "deltacomb_dc20_fbe040",
"deltacomb_080_e3d": "deltacomb_dc20_vfbe080"
}
default_qualities_per_nozzle_and_material = { # Can't define defaults for user-defined materials, since we only have the material ID. Those will get reset to empty quality :(
"deltacomb_dc20_fbe025": {
"generic_pla_175": "deltacomb_FBE0.25_PLA_C",
"generic_abs_175": "deltacomb_FBE0.25_ABS_C"
},
"deltacomb_dc20_fbe040": {
"generic_pla_175": "deltacomb_FBE0.40_PLA_C",
"generic_abs_175": "deltacomb_FBE0.40_ABS_C",
"generic_petg_175": "deltacomb_FBE0.40_PETG_C",
"generic_tpu_175": "deltacomb_FBE0.40_TPU_C"
},
"deltacomb_dc20_vfbe080": {
"generic_pla_175": "deltacomb_VFBE0.80_PLA_D",
"generic_abs_175": "deltacomb_VFBE0.80_ABS_D"
}
}
class VersionUpgrade46to47(VersionUpgrade):
def getCfgVersion(self, serialised: str) -> int:
parser = configparser.ConfigParser(interpolation = None)
@ -61,8 +83,8 @@ class VersionUpgrade46to47(VersionUpgrade):
parser["general"]["definition"] = "deltacomb_base_extruder_1"
third_extruder_changes["general"]["definition"] = "deltacomb_base_extruder_2"
fourth_extruder_changes["general"]["definition"] = "deltacomb_base_extruder_3"
results.append((third_extruder_changes, filename + "_e2_upgrade")) # Hopefully not already taken.
results.append((fourth_extruder_changes, filename + "_e3_upgrade")) # Hopefully not already taken.
results.append((third_extruder_changes, filename[:-len(".inst.cfg")] + "_e2_upgrade.inst.cfg")) # Hopefully not already taken.
results.append((fourth_extruder_changes, filename[:-len(".inst.cfg")] + "_e3_upgrade.inst.cfg")) # Hopefully not already taken.
elif parser["general"]["definition"] == "deltacomb": # Global stack.
parser["general"]["definition"] = "deltacomb_dc20"
@ -116,6 +138,9 @@ class VersionUpgrade46to47(VersionUpgrade):
def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
"""
Upgrades stacks to have the new version number.
This upgrades Deltacomb printers to their new profile structure, and
gives them 4 extruders.
:param serialized: The original contents of the stack.
:param filename: The original file name of the stack.
:return: A list of new file names, and a list of the new contents for
@ -123,12 +148,44 @@ class VersionUpgrade46to47(VersionUpgrade):
"""
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
result_parsers = [parser]
result_filenames = [filename]
# Update version number.
if "metadata" not in parser:
parser["metadata"] = {}
parser["metadata"]["setting_version"] = "13"
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
if "containers" in parser and "7" in parser["containers"]:
if parser["containers"]["7"] == "deltacomb_extruder_0" or parser["containers"]["7"] == "deltacomb_extruder_1":
if "5" in parser["containers"]:
parser["containers"]["5"] = renamed_nozzles.get(parser["containers"]["5"], default = parser["containers"]["5"])
if "3" in parser["containers"] and "4" in parser["containers"] and parser["containers"]["3"] == "empty_quality":
parser["containers"]["3"] = default_qualities_per_nozzle_and_material[parser["containers"]["5"]].get(parser["containers"]["4"], "empty_quality")
if parser["containers"]["7"] == "deltacomb_extruder_1":
parser["containers"]["7"] = "deltacomb_base_extruder_1"
else:
parser["containers"]["7"] = "deltacomb_base_extruder_0"
# Copy this extruder to extruder 3 and 4.
extruder3 = copy.copy(parser)
extruder3["metadata"]["position"] = "2"
extruder3["containers"]["0"] += "_e2_upgrade"
extruder3["containers"]["6"] += "_e2_upgrade"
extruder3["containers"]["7"] = "deltacomb_base_extuder_2"
result_parsers.append(extruder3)
result_filenames.append(filename[:-len(".extruder.cfg")] + "_e2_upgrade.extruder.cfg")
extruder4 = copy.copy(parser)
extruder4["metadata"]["position"] = "3"
extruder4["containers"]["0"] += ".inst.cfg_e3_upgrade"
extruder4["containers"]["6"] += ".inst.cfg_e3_upgrade"
extruder4["containers"]["7"] = "deltacomb_base_extruder_3"
result_parsers.append(extruder4)
result_filenames.append(filename[:-len(".extruder.cfg")] + "_e3_upgrade.extruder.cfg")
result_serialized = []
for result_parser in result_parsers:
result_ss = io.StringIO()
result_parser.write(result_ss)
result_serialized.append(result_ss.getvalue())
return result_filenames, result_serialized