Skip to content

Commit 2e1a12c

Browse files
authored
Merge pull request #21367 from Ultimaker/CURA-12950-5.12_upgrade-script
CURA-12950 5.12 upgrade script
2 parents 635d9fc + 0748b98 commit 2e1a12c

File tree

8,218 files changed

+8380
-8216
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

8,218 files changed

+8380
-8216
lines changed

cura/CuraApplication.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ class CuraApplication(QtApplication):
140140
# SettingVersion represents the set of settings available in the machine/extruder definitions.
141141
# You need to make sure that this version number needs to be increased if there is any non-backwards-compatible
142142
# changes of the settings.
143-
SettingVersion = 25
143+
SettingVersion = 26
144144

145145
Created = False
146146

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# Copyright (c) 2026 UltiMaker
2+
# Cura is released under the terms of the LGPLv3 or higher.
3+
4+
import configparser
5+
import io
6+
from typing import Tuple, List
7+
8+
from UM.VersionUpgrade import VersionUpgrade
9+
10+
_REMOVED_SETTINGS = {
11+
"skin_edge_support_thickness",
12+
"skin_edge_support_layers",
13+
"extra_infill_lines_to_support_skins",
14+
"bridge_sparse_infill_max_density",
15+
}
16+
17+
_HIGH_SPEED_PRINTERS = {
18+
"ultimaker_factor4",
19+
}
20+
21+
_OVERLAPPING_INFILLS = {
22+
"grid",
23+
"triangles",
24+
"cubic"
25+
}
26+
27+
_NEW_SETTING_VERSION = "26"
28+
29+
30+
class VersionUpgrade511to512(VersionUpgrade):
31+
def upgradePreferences(self, serialized: str, filename: str):
32+
parser = configparser.ConfigParser(interpolation = None)
33+
parser.read_string(serialized)
34+
35+
# Update version number.
36+
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
37+
38+
# Remove deleted settings from the visible settings list.
39+
if "general" in parser and "visible_settings" in parser["general"]:
40+
visible_settings = set(parser["general"]["visible_settings"].split(";"))
41+
for removed in _REMOVED_SETTINGS:
42+
if removed in visible_settings:
43+
visible_settings.remove(removed)
44+
45+
parser["general"]["visible_settings"] = ";".join(visible_settings)
46+
47+
result = io.StringIO()
48+
parser.write(result)
49+
return [filename], [result.getvalue()]
50+
51+
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
52+
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
53+
parser.read_string(serialized)
54+
55+
# Update version number.
56+
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
57+
58+
if "values" in parser:
59+
# Enable the new skin_support based on the value of bridge_sparse_infill_max_density
60+
if "bridge_sparse_infill_max_density" in parser["values"]:
61+
parser["values"]["skin_support"] = f"=infill_sparse_density < {parser["values"]["bridge_sparse_infill_max_density"]}"
62+
63+
# Remove deleted settings from the instance containers.
64+
for removed in _REMOVED_SETTINGS:
65+
if removed in parser["values"]:
66+
del parser["values"][removed]
67+
68+
# Force honeycomb infill pattern for high speed printers if using an overlapping pattern
69+
printer_definition = ""
70+
if "general" in parser and "definition" in parser["general"]:
71+
printer_definition = parser["general"]["definition"]
72+
73+
infill_pattern = ""
74+
if "infill_pattern" in parser["values"]:
75+
infill_pattern = parser["values"]["infill_pattern"]
76+
77+
if printer_definition in _HIGH_SPEED_PRINTERS and infill_pattern in _OVERLAPPING_INFILLS:
78+
parser["values"]["infill_pattern"] = "honeycomb"
79+
80+
result = io.StringIO()
81+
parser.write(result)
82+
return [filename], [result.getvalue()]
83+
84+
def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
85+
parser = configparser.ConfigParser(interpolation = None)
86+
parser.read_string(serialized)
87+
88+
# Update version number.
89+
if "metadata" not in parser:
90+
parser["metadata"] = {}
91+
92+
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
93+
94+
result = io.StringIO()
95+
parser.write(result)
96+
return [filename], [result.getvalue()]
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Copyright (c) 2026 UltiMaker
2+
# Cura is released under the terms of the LGPLv3 or higher.
3+
4+
from typing import Any, Dict, TYPE_CHECKING
5+
6+
from . import VersionUpgrade511to512
7+
8+
if TYPE_CHECKING:
9+
from UM.Application import Application
10+
11+
upgrade = VersionUpgrade511to512.VersionUpgrade511to512()
12+
13+
def getMetaData() -> Dict[str, Any]:
14+
return {
15+
"version_upgrade": {
16+
# From To Upgrade function
17+
("preferences", 7000025): ("preferences", 7000026, upgrade.upgradePreferences),
18+
("machine_stack", 6000025): ("machine_stack", 6000026, upgrade.upgradeStack),
19+
("extruder_train", 6000025): ("extruder_train", 6000026, upgrade.upgradeStack),
20+
("definition_changes", 4000025): ("definition_changes", 4000026, upgrade.upgradeInstanceContainer),
21+
("quality_changes", 4000025): ("quality_changes", 4000026, upgrade.upgradeInstanceContainer),
22+
("quality", 4000025): ("quality", 4000026, upgrade.upgradeInstanceContainer),
23+
("user", 4000025): ("user", 4000026, upgrade.upgradeInstanceContainer),
24+
("intent", 4000025): ("intent", 4000026, upgrade.upgradeInstanceContainer),
25+
},
26+
"sources": {
27+
"preferences": {
28+
"get_version": upgrade.getCfgVersion,
29+
"location": {"."}
30+
},
31+
"machine_stack": {
32+
"get_version": upgrade.getCfgVersion,
33+
"location": {"./machine_instances"}
34+
},
35+
"extruder_train": {
36+
"get_version": upgrade.getCfgVersion,
37+
"location": {"./extruders"}
38+
},
39+
"definition_changes": {
40+
"get_version": upgrade.getCfgVersion,
41+
"location": {"./definition_changes"}
42+
},
43+
"quality_changes": {
44+
"get_version": upgrade.getCfgVersion,
45+
"location": {"./quality_changes"}
46+
},
47+
"quality": {
48+
"get_version": upgrade.getCfgVersion,
49+
"location": {"./quality"}
50+
},
51+
"user": {
52+
"get_version": upgrade.getCfgVersion,
53+
"location": {"./user"}
54+
}
55+
}
56+
}
57+
58+
59+
def register(app: "Application") -> Dict[str, Any]:
60+
return {"version_upgrade": upgrade}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "Version Upgrade 5.11 to 5.12",
3+
"author": "Ultimaker B.V.",
4+
"version": "1.0.0",
5+
"description": "Upgrades configurations from Cura 5.11 to Cura 5.12",
6+
"api": 8,
7+
"i18n-catalog": "cura"
8+
}

resources/definitions/fdmextruder.def.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"author": "Ultimaker",
88
"manufacturer": "Unknown",
99
"position": "0",
10-
"setting_version": 25,
10+
"setting_version": 26,
1111
"type": "extruder"
1212
},
1313
"settings":

resources/definitions/fdmprinter.def.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"type": "machine",
77
"author": "Unknown",
88
"manufacturer": "Unknown",
9-
"setting_version": 25,
9+
"setting_version": 26,
1010
"file_formats": "text/x-gcode;model/stl;application/x-wavefront-obj;application/x3g",
1111
"visible": false,
1212
"has_materials": true,
@@ -2465,7 +2465,7 @@
24652465
"description": "Print a solid infill pattern just below skin to avoid printing the skin over air.",
24662466
"type": "bool",
24672467
"default_value": true,
2468-
"value": "infill_sparse_density < 50",
2468+
"value": "infill_sparse_density < 40",
24692469
"enabled": "infill_sparse_density > 0 and top_layers > 0",
24702470
"settable_per_mesh": true,
24712471
"settable_per_extruder": true

resources/intent/deltacomb/ABS/deltacomb_DBE0.40_ABS_accurate_B.inst.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ version = 4
77
intent_category = engineering
88
material = generic_abs
99
quality_type = D010
10-
setting_version = 25
10+
setting_version = 26
1111
type = intent
1212
variant = DBE 0.40mm
1313

resources/intent/deltacomb/ABS/deltacomb_DBE0.40_ABS_accurate_C.inst.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ version = 4
77
intent_category = engineering
88
material = generic_abs
99
quality_type = D015
10-
setting_version = 25
10+
setting_version = 26
1111
type = intent
1212
variant = DBE 0.40mm
1313

resources/intent/deltacomb/ABS/deltacomb_DBE0.40_ABS_accurate_D.inst.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ version = 4
77
intent_category = engineering
88
material = generic_abs
99
quality_type = D020
10-
setting_version = 25
10+
setting_version = 26
1111
type = intent
1212
variant = DBE 0.40mm
1313

resources/intent/deltacomb/ABS/deltacomb_DBE0.40_ABS_quick_D.inst.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ version = 4
77
intent_category = quick
88
material = generic_abs
99
quality_type = D020
10-
setting_version = 25
10+
setting_version = 26
1111
type = intent
1212
variant = DBE 0.40mm
1313

0 commit comments

Comments
 (0)