diff --git a/cura/Scene/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py index bc4ba3ffd5..b15eaf2ae1 100644 --- a/cura/Scene/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -383,9 +383,9 @@ class ConvexHullDecorator(SceneNodeDecorator): # Shrinkage compensation. if not self._global_stack: # Should never happen. return convex_hull - scale_factor = self._global_stack.getProperty("material_shrinkage_percentage", "value") / 100.0 + scale_factor = self._global_stack.getProperty("material_shrinkage_percentage_xy", "value") / 100.0 result = convex_hull - if scale_factor != 1.0 and not self.getNode().callDecoration("isGroup"): + if scale_factor != 1.0 and scale_factor > 0 and not self.getNode().callDecoration("isGroup"): center = None if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time": # Find the root node that's placed in the scene; the root of the mesh group. @@ -498,7 +498,7 @@ class ConvexHullDecorator(SceneNodeDecorator): "adhesion_type", "raft_margin", "print_sequence", "skirt_gap", "skirt_line_count", "skirt_brim_line_width", "skirt_distance", "brim_line_count"] - _influencing_settings = {"xy_offset", "xy_offset_layer_0", "mold_enabled", "mold_width", "anti_overhang_mesh", "infill_mesh", "cutting_mesh", "material_shrinkage_percentage"} + _influencing_settings = {"xy_offset", "xy_offset_layer_0", "mold_enabled", "mold_width", "anti_overhang_mesh", "infill_mesh", "cutting_mesh", "material_shrinkage_percentage_xy"} """Settings that change the convex hull. If these settings change, the convex hull should be recalculated. diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 56e1a7ab07..9e12d7f7e1 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1124,15 +1124,28 @@ }, "wall_transition_filter_distance": { - "label": "Wall Transition Distance Filter", + "label": "Wall Transitioning Filter Distance", "description": "If it would be transitioning back and forth between different numbers of walls in quick succession, don't transition at all. Remove transitions if they are closer together than this distance.", "type": "float", "unit": "mm", - "default_value": 1.4, - "value": "4 * math.cos(wall_transition_angle / 180 * math.pi) * wall_line_width_x", + "value": "100", + "enabled": false, + "default_value": 100, "minimum_value": "wall_transition_length", "minimum_value_warning": "math.cos(wall_transition_angle / 180 * math.pi) * wall_line_width_x", - "maximum_value_warning": "10 * math.cos(wall_transition_angle / 180 * math.pi) * wall_line_width_x" + "maximum_value": "999999" + }, + "wall_transition_filter_deviation": + { + "label": "Wall Transitioning Filter Margin", + "description": "Prevent transitioning back and forth between one extra wall and one less. This margin extends the range of line widths which follow to [Minimum Wall Line Width - Margin, 2 * Minimum Wall Line Width + Margin]. Increasing this margin reduces the number of transitions, which reduces the number of extrusion starts/stops and travel time. However, large line width variation can lead to under- or overextrusion problems.", + "type": "float", + "unit": "mm", + "default_value": 0.1, + "value": ".25 * machine_nozzle_size", + "minimum_value": "0", + "minimum_value_warning": ".01", + "maximum_value_warning": "machine_nozzle_size" }, "wall_0_wipe_dist": { diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index b5b1ab7b1a..ea6536a44c 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -30,6 +30,7 @@ wall_thickness wall_line_count wall_0_wipe_dist wall_0_inset +wall_transition_filter_distance optimize_wall_printing_order inset_direction alternate_extra_perimeter