mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-06-30 08:45:12 +08:00
Merge pull request #20039 from Ultimaker/CURA-12352_different-minimum-layer-time-for-layers-that-contain-overhangs
CURA-12352 Different minimum layer time for layers that contain overhangs
This commit is contained in:
commit
28cf7daf76
@ -0,0 +1,68 @@
|
||||
import configparser
|
||||
import io
|
||||
from typing import Dict, Tuple, List
|
||||
|
||||
from UM.VersionUpgrade import VersionUpgrade
|
||||
|
||||
_RENAMED_SETTINGS = {
|
||||
"wall_overhang_speed_factor": "wall_overhang_speed_factors"
|
||||
} # type: Dict[str, str]
|
||||
|
||||
_NEW_SETTING_VERSION = "25"
|
||||
|
||||
|
||||
class VersionUpgrade59to510(VersionUpgrade):
|
||||
def upgradePreferences(self, serialized: str, filename: str):
|
||||
parser = configparser.ConfigParser(interpolation = None)
|
||||
parser.read_string(serialized)
|
||||
|
||||
# Fix 'renamed'(ish) settings for visibility
|
||||
if "visible_settings" in parser["general"]:
|
||||
all_setting_keys = parser["general"]["visible_settings"].strip().split(";")
|
||||
if all_setting_keys:
|
||||
for idx, key in enumerate(all_setting_keys):
|
||||
if key in _RENAMED_SETTINGS:
|
||||
all_setting_keys[idx] = _RENAMED_SETTINGS[key]
|
||||
parser["general"]["visible_settings"] = ";".join(all_setting_keys)
|
||||
|
||||
# Update version number.
|
||||
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
|
||||
|
||||
result = io.StringIO()
|
||||
parser.write(result)
|
||||
return [filename], [result.getvalue()]
|
||||
|
||||
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
|
||||
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
|
||||
parser.read_string(serialized)
|
||||
|
||||
# Update version number.
|
||||
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
|
||||
|
||||
if "values" in parser:
|
||||
for old_name, new_name in _RENAMED_SETTINGS.items():
|
||||
if old_name in parser["values"]:
|
||||
parser["values"][new_name] = parser["values"][old_name]
|
||||
del parser["values"][old_name]
|
||||
if "wall_overhang_speed_factors" in parser["values"]:
|
||||
old_value = float(parser["values"]["wall_overhang_speed_factors"])
|
||||
new_value = [max(1, int(round(old_value)))]
|
||||
parser["values"]["wall_overhang_speed_factor"] = str(new_value)
|
||||
|
||||
result = io.StringIO()
|
||||
parser.write(result)
|
||||
return [filename], [result.getvalue()]
|
||||
|
||||
def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
|
||||
parser = configparser.ConfigParser(interpolation = None)
|
||||
parser.read_string(serialized)
|
||||
|
||||
# Update version number.
|
||||
if "metadata" not in parser:
|
||||
parser["metadata"] = {}
|
||||
|
||||
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
|
||||
|
||||
result = io.StringIO()
|
||||
parser.write(result)
|
||||
return [filename], [result.getvalue()]
|
60
plugins/VersionUpgrade/VersionUpgrade59to510/__init__.py
Normal file
60
plugins/VersionUpgrade/VersionUpgrade59to510/__init__.py
Normal file
@ -0,0 +1,60 @@
|
||||
# Copyright (c) 2024 UltiMaker
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from typing import Any, Dict, TYPE_CHECKING
|
||||
|
||||
from . import VersionUpgrade59to510
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from UM.Application import Application
|
||||
|
||||
upgrade = VersionUpgrade59to510.VersionUpgrade59to510()
|
||||
|
||||
def getMetaData() -> Dict[str, Any]:
|
||||
return {
|
||||
"version_upgrade": {
|
||||
# From To Upgrade function
|
||||
("preferences", 7000024): ("preferences", 7000025, upgrade.upgradePreferences),
|
||||
("machine_stack", 6000024): ("machine_stack", 6000025, upgrade.upgradeStack),
|
||||
("extruder_train", 6000024): ("extruder_train", 6000025, upgrade.upgradeStack),
|
||||
("definition_changes", 4000024): ("definition_changes", 4000025, upgrade.upgradeInstanceContainer),
|
||||
("quality_changes", 4000024): ("quality_changes", 4000025, upgrade.upgradeInstanceContainer),
|
||||
("quality", 4000024): ("quality", 4000025, upgrade.upgradeInstanceContainer),
|
||||
("user", 4000024): ("user", 4000025, upgrade.upgradeInstanceContainer),
|
||||
("intent", 4000024): ("intent", 4000025, upgrade.upgradeInstanceContainer),
|
||||
},
|
||||
"sources": {
|
||||
"preferences": {
|
||||
"get_version": upgrade.getCfgVersion,
|
||||
"location": {"."}
|
||||
},
|
||||
"machine_stack": {
|
||||
"get_version": upgrade.getCfgVersion,
|
||||
"location": {"./machine_instances"}
|
||||
},
|
||||
"extruder_train": {
|
||||
"get_version": upgrade.getCfgVersion,
|
||||
"location": {"./extruders"}
|
||||
},
|
||||
"definition_changes": {
|
||||
"get_version": upgrade.getCfgVersion,
|
||||
"location": {"./definition_changes"}
|
||||
},
|
||||
"quality_changes": {
|
||||
"get_version": upgrade.getCfgVersion,
|
||||
"location": {"./quality_changes"}
|
||||
},
|
||||
"quality": {
|
||||
"get_version": upgrade.getCfgVersion,
|
||||
"location": {"./quality"}
|
||||
},
|
||||
"user": {
|
||||
"get_version": upgrade.getCfgVersion,
|
||||
"location": {"./user"}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def register(app: "Application") -> Dict[str, Any]:
|
||||
return {"version_upgrade": upgrade}
|
8
plugins/VersionUpgrade/VersionUpgrade59to510/plugin.json
Normal file
8
plugins/VersionUpgrade/VersionUpgrade59to510/plugin.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "Version Upgrade 5.9 to 5.10",
|
||||
"author": "Ultimaker B.V.",
|
||||
"version": "1.0.0",
|
||||
"description": "Upgrades configurations from Cura 5.9 to Cura 5.10",
|
||||
"api": 8,
|
||||
"i18n-catalog": "cura"
|
||||
}
|
@ -120,7 +120,12 @@
|
||||
"support_z_distance": { "value": "layer_height * 2" },
|
||||
"top_bottom_thickness": { "value": "layer_height * 4" },
|
||||
"wall_overhang_angle": { "value": 55 },
|
||||
"wall_overhang_speed_factor": { "value": 55 },
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"value": [
|
||||
55
|
||||
]
|
||||
},
|
||||
"zig_zaggify_infill": { "value": "infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'lines'" }
|
||||
}
|
||||
}
|
@ -238,7 +238,12 @@
|
||||
"wall_extruder_nr": { "value": -1 },
|
||||
"wall_line_width_0": { "value": 0.44 },
|
||||
"wall_overhang_angle": { "value": 45 },
|
||||
"wall_overhang_speed_factor": { "value": 40 },
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"value": [
|
||||
40
|
||||
]
|
||||
},
|
||||
"wall_thickness": { "value": 0.84 },
|
||||
"wall_x_extruder_nr": { "value": -1 },
|
||||
"zig_zaggify_infill": { "value": true }
|
||||
|
@ -167,7 +167,12 @@
|
||||
"travel_avoid_supports": { "value": "True" },
|
||||
"wall_line_width": { "value": "machine_nozzle_size" },
|
||||
"wall_overhang_angle": { "value": "75" },
|
||||
"wall_overhang_speed_factor": { "value": "50" },
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"value": [
|
||||
50
|
||||
]
|
||||
},
|
||||
"zig_zaggify_infill": { "value": "True" }
|
||||
}
|
||||
}
|
@ -107,7 +107,7 @@
|
||||
"travel_retract_before_outer_wall": { "value": true },
|
||||
"wall_0_wipe_dist": { "value": 0.0 },
|
||||
"wall_overhang_angle": { "default_value": 75 },
|
||||
"wall_overhang_speed_factor": { "default_value": 50 },
|
||||
"wall_overhang_speed_factors": { "default_value": "[50]" },
|
||||
"wall_thickness": { "value": "line_width * 2" },
|
||||
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
|
||||
"z_seam_type": { "value": "'back'" }
|
||||
|
@ -4728,6 +4728,31 @@
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"cool_min_layer_time_overhang":
|
||||
{
|
||||
"label": "Minimum Layer Time with Overhang",
|
||||
"description": "The minimum time spent in a layer that contains overhanging extrusions. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated.",
|
||||
"unit": "s",
|
||||
"type": "float",
|
||||
"default_value": 5,
|
||||
"value": "cool_min_layer_time",
|
||||
"minimum_value": "0",
|
||||
"maximum_value_warning": "600",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"cool_min_layer_time_overhang_min_segment_length":
|
||||
{
|
||||
"label": "Minimum Overhang Segment Length",
|
||||
"description": "When trying to apply the minimum layer time specific for overhanging layers, it will be applied only if at least one consecutive overhanging extrusion move is longer than this value.",
|
||||
"unit": "mm",
|
||||
"type": "float",
|
||||
"default_value": 5,
|
||||
"minimum_value": "0",
|
||||
"maximum_value_warning": "500",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"cool_min_speed":
|
||||
{
|
||||
"label": "Minimum Speed",
|
||||
|
@ -109,7 +109,12 @@
|
||||
"travel_avoid_other_parts": { "default_value": false },
|
||||
"wall_line_width": { "value": "machine_nozzle_size" },
|
||||
"wall_overhang_angle": { "default_value": 75 },
|
||||
"wall_overhang_speed_factor": { "default_value": 50 },
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"default_value": [
|
||||
50
|
||||
]
|
||||
},
|
||||
"zig_zaggify_infill": { "value": true }
|
||||
}
|
||||
}
|
@ -61,7 +61,12 @@
|
||||
"support_pattern": { "default_value": "lines" },
|
||||
"switch_extruder_retraction_amount": { "value": 100 },
|
||||
"switch_extruder_retraction_speeds": { "value": 60 },
|
||||
"wall_overhang_speed_factor": { "value": 50 },
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"value": [
|
||||
50
|
||||
]
|
||||
},
|
||||
"z_seam_corner": { "default_value": "z_seam_corner_any" },
|
||||
"z_seam_relative": { "value": true },
|
||||
"z_seam_type": { "default_value": "sharpest_corner" },
|
||||
|
@ -109,7 +109,12 @@
|
||||
"travel_avoid_other_parts": { "default_value": false },
|
||||
"wall_line_width": { "value": "machine_nozzle_size" },
|
||||
"wall_overhang_angle": { "default_value": 75 },
|
||||
"wall_overhang_speed_factor": { "default_value": 50 },
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"default_value": [
|
||||
50
|
||||
]
|
||||
},
|
||||
"zig_zaggify_infill": { "value": true }
|
||||
}
|
||||
}
|
@ -379,10 +379,12 @@
|
||||
"wall_0_wipe_dist": { "value": 0.2 },
|
||||
"wall_line_width_x": { "value": 0.58 },
|
||||
"wall_overhang_angle": { "value": 35 },
|
||||
"wall_overhang_speed_factor":
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"minimum_value_warning": 15,
|
||||
"value": 17.5
|
||||
"value": [
|
||||
18
|
||||
]
|
||||
},
|
||||
"wall_thickness": { "value": 1 },
|
||||
"wall_x_material_flow_layer_0": { "value": "material_flow" },
|
||||
|
@ -119,7 +119,12 @@
|
||||
"travel_avoid_other_parts": { "default_value": false },
|
||||
"wall_line_width": { "value": "machine_nozzle_size" },
|
||||
"wall_overhang_angle": { "default_value": 75 },
|
||||
"wall_overhang_speed_factor": { "default_value": 50 },
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"default_value": [
|
||||
50
|
||||
]
|
||||
},
|
||||
"zig_zaggify_infill": { "value": true }
|
||||
}
|
||||
}
|
@ -195,7 +195,12 @@
|
||||
"travel_avoid_other_parts": { "default_value": false },
|
||||
"wall_line_width": { "value": "machine_nozzle_size" },
|
||||
"wall_overhang_angle": { "default_value": 75 },
|
||||
"wall_overhang_speed_factor": { "default_value": 50 },
|
||||
"wall_overhang_speed_factors":
|
||||
{
|
||||
"default_value": [
|
||||
50
|
||||
]
|
||||
},
|
||||
"xy_offset_layer_0": { "value": -0.3 },
|
||||
"z_seam_type": { "value": "'back'" },
|
||||
"zig_zaggify_infill": { "value": true }
|
||||
|
@ -115,7 +115,7 @@ travel_avoid_other_parts = True
|
||||
travel_avoid_supports = True
|
||||
travel_retract_before_outer_wall = False
|
||||
wall_overhang_angle = 35.0
|
||||
wall_overhang_speed_factor = 60.0
|
||||
wall_overhang_speed_factors = [60]
|
||||
wall_thickness = =line_width*2
|
||||
z_seam_corner = z_seam_corner_inner
|
||||
z_seam_position = backright
|
||||
|
@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -52,5 +52,5 @@ support_xy_distance = 0.3
|
||||
support_xy_distance_overhang = 0.25
|
||||
support_z_distance = 0.15
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 50
|
||||
wall_overhang_speed_factors = [50]
|
||||
|
||||
|
@ -58,5 +58,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -58,5 +58,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -54,5 +54,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.22
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -52,5 +52,5 @@ support_xy_distance = 0.3
|
||||
support_xy_distance_overhang = 0.25
|
||||
support_z_distance = 0.15
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 50
|
||||
wall_overhang_speed_factors = [50]
|
||||
|
||||
|
@ -58,5 +58,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -54,5 +54,5 @@ support_xy_distance = 0.3
|
||||
support_xy_distance_overhang = 0.25
|
||||
support_z_distance = 0.15
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 50
|
||||
wall_overhang_speed_factors = [50]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -54,5 +54,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.22
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -54,5 +54,5 @@ support_xy_distance = 0.3
|
||||
support_xy_distance_overhang = 0.25
|
||||
support_z_distance = 0.15
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 50
|
||||
wall_overhang_speed_factors = [50]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z
|
||||
support_z_distance = 0.15
|
||||
top_skin_expand_distance = 2.4
|
||||
wall_overhang_angle = 30
|
||||
wall_overhang_speed_factor = 40
|
||||
wall_overhang_speed_factors = [40]
|
||||
|
||||
|
@ -248,6 +248,7 @@ cool_fan_speed_0
|
||||
cool_fan_full_at_height
|
||||
cool_fan_full_layer
|
||||
cool_min_layer_time
|
||||
cool_min_layer_time_overhang
|
||||
cool_min_speed
|
||||
cool_lift_head
|
||||
cool_during_extruder_switch
|
||||
|
Loading…
x
Reference in New Issue
Block a user