mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-08-06 13:34:01 -06:00
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:
parent
a5b4b15ae4
commit
2410d05100
2 changed files with 63 additions and 6 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue