Remove wireprinting options.

Wireprinting wasn't actively maintained, and almost an entire different min-engine. It's also rarely used, and presumed broken. Remove it, so it doesn't have to be maintained or clog up other maintanance and/or refactor tasks.

frontend part of CURA-10394
This commit is contained in:
Remco Burema 2023-03-28 13:50:20 +02:00
parent 30e671a94c
commit 5b209161ac
6 changed files with 187 additions and 375 deletions

1
.gitignore vendored
View file

@ -31,6 +31,7 @@ LC_MESSAGES
.directory .directory
.idea .idea
cura.desktop cura.desktop
*.bak
# Eclipse+PyDev # Eclipse+PyDev
.project .project

View file

@ -125,10 +125,6 @@ class SimulationView(CuraView):
self._only_show_top_layers = bool(Application.getInstance().getPreferences().getValue("view/only_show_top_layers")) self._only_show_top_layers = bool(Application.getInstance().getPreferences().getValue("view/only_show_top_layers"))
self._compatibility_mode = self._evaluateCompatibilityMode() self._compatibility_mode = self._evaluateCompatibilityMode()
self._wireprint_warning_message = Message(catalog.i18nc("@info:status",
"Cura does not accurately display layers when Wire Printing is enabled."),
title = catalog.i18nc("@info:title", "Simulation View"),
message_type = Message.MessageType.WARNING)
self._slice_first_warning_message = Message(catalog.i18nc("@info:status", self._slice_first_warning_message = Message(catalog.i18nc("@info:status",
"Nothing is shown because you need to slice first."), "Nothing is shown because you need to slice first."),
title = catalog.i18nc("@info:title", "No layers to show"), title = catalog.i18nc("@info:title", "No layers to show"),
@ -671,11 +667,8 @@ class SimulationView(CuraView):
elif event.type == Event.ViewDeactivateEvent: elif event.type == Event.ViewDeactivateEvent:
self._controller.getScene().getRoot().childrenChanged.disconnect(self._onSceneChanged) self._controller.getScene().getRoot().childrenChanged.disconnect(self._onSceneChanged)
Application.getInstance().getPreferences().preferenceChanged.disconnect(self._onPreferencesChanged) Application.getInstance().getPreferences().preferenceChanged.disconnect(self._onPreferencesChanged)
self._wireprint_warning_message.hide()
self._slice_first_warning_message.hide() self._slice_first_warning_message.hide()
Application.getInstance().globalContainerStackChanged.disconnect(self._onGlobalStackChanged) Application.getInstance().globalContainerStackChanged.disconnect(self._onGlobalStackChanged)
if self._global_container_stack:
self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged)
if self._nozzle_node: if self._nozzle_node:
self._nozzle_node.setParent(None) self._nozzle_node.setParent(None)
@ -698,23 +691,10 @@ class SimulationView(CuraView):
return self._current_layer_jumps return self._current_layer_jumps
def _onGlobalStackChanged(self) -> None: def _onGlobalStackChanged(self) -> None:
if self._global_container_stack:
self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged)
self._global_container_stack = Application.getInstance().getGlobalContainerStack() self._global_container_stack = Application.getInstance().getGlobalContainerStack()
if self._global_container_stack: if self._global_container_stack:
self._global_container_stack.propertyChanged.connect(self._onPropertyChanged)
self._extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") self._extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value")
self._onPropertyChanged("wireframe_enabled", "value")
self.globalStackChanged.emit() self.globalStackChanged.emit()
else:
self._wireprint_warning_message.hide()
def _onPropertyChanged(self, key: str, property_name: str) -> None:
if key == "wireframe_enabled" and property_name == "value":
if self._global_container_stack and self._global_container_stack.getProperty("wireframe_enabled", "value"):
self._wireprint_warning_message.show()
else:
self._wireprint_warning_message.hide()
def _onCurrentLayerNumChanged(self) -> None: def _onCurrentLayerNumChanged(self) -> None:
self.calculateMaxPathsOnLayer(self._current_layer_num) self.calculateMaxPathsOnLayer(self._current_layer_num)

View file

@ -0,0 +1,117 @@
# Copyright (c) 2023 UltiMaker
# Cura is released under the terms of the LGPLv3 or higher.
import configparser
from typing import Tuple, List
import io
from UM.VersionUpgrade import VersionUpgrade
_REMOVED_SETTINGS = {
"wireframe_enabled",
"wireframe_height",
"wireframe_roof_inset",
"wireframe_printspeed",
"wireframe_printspeed_bottom",
"wireframe_printspeed_up",
"wireframe_printspeed_down",
"wireframe_printspeed_flat",
"wireframe_flow",
"wireframe_flow_connection",
"wireframe_flow_flat",
"wireframe_top_delay",
"wireframe_bottom_delay",
"wireframe_flat_delay",
"wireframe_up_half_speed",
"wireframe_top_jump",
"wireframe_fall_down",
"wireframe_drag_along",
"wireframe_strategy",
"wireframe_straight_before_down",
"wireframe_roof_fall_down",
"wireframe_roof_drag_along",
"wireframe_roof_outer_delay",
"wireframe_nozzle_clearance",
}
class VersionUpgrade53to54(VersionUpgrade):
def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
"""
Upgrades preferences to remove from the visibility list the settings that were removed in this version.
It also changes the preferences to have the new version number.
This removes any settings that were removed in the new Cura version.
:param serialized: The original contents of the preferences file.
:param filename: The file name of the preferences file.
:return: A list of new file names, and a list of the new contents for
those files.
"""
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
# Update version number.
parser["metadata"]["setting_version"] = "22"
# Remove deleted settings from the visible settings list.
if "general" in parser and "visible_settings" in parser["general"]:
visible_settings = set(parser["general"]["visible_settings"].split(";"))
for removed in _REMOVED_SETTINGS:
if removed in visible_settings:
visible_settings.remove(removed)
parser["general"]["visible_settings"] = ";".join(visible_settings)
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
"""
Upgrades instance containers to remove the settings that were removed in this version.
It also changes the instance containers to have the new version number.
This removes any settings that were removed in the new Cura version and updates settings that need to be updated
with a new value.
:param serialized: The original contents of the instance container.
:param filename: The original file name of the instance container.
:return: A list of new file names, and a list of the new contents for
those files.
"""
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.
parser["metadata"]["setting_version"] = "22"
if "values" in parser:
# Remove deleted settings from the instance containers.
for removed in _REMOVED_SETTINGS:
if removed in parser["values"]:
del parser["values"][removed]
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
"""
Upgrades stacks to have the new version number.
: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
those files.
"""
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
# Update version number.
if "metadata" not in parser:
parser["metadata"] = {}
parser["metadata"]["setting_version"] = "22"
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]

View file

@ -0,0 +1,61 @@
# Copyright (c) 2023 UltiMaker
# Cura is released under the terms of the LGPLv3 or higher.
from typing import Any, Dict, TYPE_CHECKING
from . import VersionUpgrade53to54
if TYPE_CHECKING:
from UM.Application import Application
upgrade = VersionUpgrade53to54.VersionUpgrade53to54()
def getMetaData() -> Dict[str, Any]:
return {
"version_upgrade": {
# From To Upgrade function
("preferences", 7000021): ("preferences", 7000022, upgrade.upgradePreferences),
("machine_stack", 5000021): ("machine_stack", 5000022, upgrade.upgradeStack),
("extruder_train", 5000021): ("extruder_train", 5000022, upgrade.upgradeStack),
("definition_changes", 4000021): ("definition_changes", 4000022, upgrade.upgradeInstanceContainer),
("quality_changes", 4000021): ("quality_changes", 4000022, upgrade.upgradeInstanceContainer),
("quality", 4000021): ("quality", 4000022, upgrade.upgradeInstanceContainer),
("user", 4000021): ("user", 4000022, upgrade.upgradeInstanceContainer),
("intent", 4000021): ("intent", 4000022, 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}

View file

@ -0,0 +1,8 @@
{
"name": "Version Upgrade 5.3 to 5.4",
"author": "UltiMaker",
"version": "1.0.0",
"description": "Upgrades configurations from Cura 5.3 to Cura 5.4.",
"api": 8,
"i18n-catalog": "cura"
}

View file

@ -7328,361 +7328,6 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"wireframe_enabled":
{
"label": "Wire Printing",
"description": "Print only the outside surface with a sparse webbed structure, printing 'in thin air'. This is realized by horizontally printing the contours of the model at given Z intervals which are connected via upward and diagonally downward lines.",
"type": "bool",
"default_value": false,
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_height":
{
"label": "WP Connection Height",
"description": "The height of the upward and diagonally downward lines between two horizontal parts. This determines the overall density of the net structure. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 3,
"value": "machine_nozzle_head_distance",
"minimum_value": "0.001",
"maximum_value_warning": "20",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_roof_inset":
{
"label": "WP Roof Inset Distance",
"description": "The distance covered when making a connection from a roof outline inward. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 3,
"minimum_value": "0",
"minimum_value_warning": "machine_nozzle_size",
"maximum_value_warning": "20",
"enabled": "wireframe_enabled",
"value": "wireframe_height",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_printspeed":
{
"label": "WP Speed",
"description": "Speed at which the nozzle moves when extruding material. Only applies to Wire Printing.",
"unit": "mm/s",
"type": "float",
"default_value": 5,
"minimum_value": "0.05",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)",
"maximum_value_warning": "50",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false,
"children":
{
"wireframe_printspeed_bottom":
{
"label": "WP Bottom Printing Speed",
"description": "Speed of printing the first layer, which is the only layer touching the build platform. Only applies to Wire Printing.",
"unit": "mm/s",
"type": "float",
"default_value": 5,
"minimum_value": "0.05",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
"maximum_value_warning": "50",
"enabled": "wireframe_enabled",
"value": "wireframe_printspeed_flat",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_printspeed_up":
{
"label": "WP Upward Printing Speed",
"description": "Speed of printing a line upward 'in thin air'. Only applies to Wire Printing.",
"unit": "mm/s",
"type": "float",
"default_value": 5,
"minimum_value": "0.05",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)",
"maximum_value_warning": "50",
"enabled": "wireframe_enabled",
"value": "wireframe_printspeed",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_printspeed_down":
{
"label": "WP Downward Printing Speed",
"description": "Speed of printing a line diagonally downward. Only applies to Wire Printing.",
"unit": "mm/s",
"type": "float",
"default_value": 5,
"minimum_value": "0.05",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)",
"maximum_value_warning": "50",
"enabled": "wireframe_enabled",
"value": "wireframe_printspeed",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_printspeed_flat":
{
"label": "WP Horizontal Printing Speed",
"description": "Speed of printing the horizontal contours of the model. Only applies to Wire Printing.",
"unit": "mm/s",
"type": "float",
"default_value": 5,
"minimum_value": "0.05",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
"maximum_value_warning": "100",
"value": "wireframe_printspeed",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
}
}
},
"wireframe_flow":
{
"label": "WP Flow",
"description": "Flow compensation: the amount of material extruded is multiplied by this value. Only applies to Wire Printing.",
"unit": "%",
"default_value": 100,
"minimum_value": "0",
"maximum_value_warning": "100",
"type": "float",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false,
"children":
{
"wireframe_flow_connection":
{
"label": "WP Connection Flow",
"description": "Flow compensation when going up or down. Only applies to Wire Printing.",
"unit": "%",
"default_value": 100,
"minimum_value": "0",
"maximum_value_warning": "100",
"type": "float",
"enabled": "wireframe_enabled",
"value": "wireframe_flow",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_flow_flat":
{
"label": "WP Flat Flow",
"description": "Flow compensation when printing flat lines. Only applies to Wire Printing.",
"unit": "%",
"default_value": 100,
"minimum_value": "0",
"maximum_value_warning": "100",
"type": "float",
"enabled": "wireframe_enabled",
"value": "wireframe_flow",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
}
}
},
"wireframe_top_delay":
{
"label": "WP Top Delay",
"description": "Delay time after an upward move, so that the upward line can harden. Only applies to Wire Printing.",
"unit": "s",
"type": "float",
"default_value": 0,
"minimum_value": "0",
"maximum_value_warning": "1",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_bottom_delay":
{
"label": "WP Bottom Delay",
"description": "Delay time after a downward move. Only applies to Wire Printing.",
"unit": "s",
"type": "float",
"default_value": 0,
"minimum_value": "0",
"maximum_value_warning": "1",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_flat_delay":
{
"label": "WP Flat Delay",
"description": "Delay time between two horizontal segments. Introducing such a delay can cause better adhesion to previous layers at the connection points, while too long delays cause sagging. Only applies to Wire Printing.",
"unit": "s",
"type": "float",
"default_value": 0.1,
"minimum_value": "0",
"maximum_value_warning": "0.5",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_up_half_speed":
{
"label": "WP Ease Upward",
"description": "Distance of an upward move which is extruded with half speed.\nThis can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 0.3,
"minimum_value": "0",
"maximum_value_warning": "5.0",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_top_jump":
{
"label": "WP Knot Size",
"description": "Creates a small knot at the top of an upward line, so that the consecutive horizontal layer has a better chance to connect to it. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 0.6,
"minimum_value": "0",
"maximum_value_warning": "2.0",
"enabled": "wireframe_enabled and wireframe_strategy == 'knot'",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_fall_down":
{
"label": "WP Fall Down",
"description": "Distance with which the material falls down after an upward extrusion. This distance is compensated for. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 0.5,
"minimum_value": "0",
"maximum_value_warning": "wireframe_height",
"enabled": "wireframe_enabled and wireframe_strategy == 'compensate'",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_drag_along":
{
"label": "WP Drag Along",
"description": "Distance with which the material of an upward extrusion is dragged along with the diagonally downward extrusion. This distance is compensated for. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 0.6,
"minimum_value": "0",
"maximum_value_warning": "wireframe_height",
"enabled": "wireframe_enabled and wireframe_strategy == 'compensate'",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_strategy":
{
"label": "WP Strategy",
"description": "Strategy for making sure two consecutive layers connect at each connection point. Retraction lets the upward lines harden in the right position, but may cause filament grinding. A knot can be made at the end of an upward line to heighten the chance of connecting to it and to let the line cool; however, it may require slow printing speeds. Another strategy is to compensate for the sagging of the top of an upward line; however, the lines won't always fall down as predicted.",
"type": "enum",
"options":
{
"compensate": "Compensate",
"knot": "Knot",
"retract": "Retract"
},
"default_value": "compensate",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_straight_before_down":
{
"label": "WP Straighten Downward Lines",
"description": "Percentage of a diagonally downward line which is covered by a horizontal line piece. This can prevent sagging of the top most point of upward lines. Only applies to Wire Printing.",
"type": "float",
"unit": "%",
"default_value": 20,
"minimum_value": "0",
"maximum_value": "100",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_roof_fall_down":
{
"label": "WP Roof Fall Down",
"description": "The distance which horizontal roof lines printed 'in thin air' fall down when being printed. This distance is compensated for. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 2,
"minimum_value_warning": "0",
"maximum_value_warning": "wireframe_roof_inset",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_roof_drag_along":
{
"label": "WP Roof Drag Along",
"description": "The distance of the end piece of an inward line which gets dragged along when going back to the outer outline of the roof. This distance is compensated for. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 0.8,
"minimum_value": "0",
"maximum_value_warning": "10",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_roof_outer_delay":
{
"label": "WP Roof Outer Delay",
"description": "Time spent at the outer perimeters of hole which is to become a roof. Longer times can ensure a better connection. Only applies to Wire Printing.",
"type": "float",
"unit": "s",
"default_value": 0.2,
"minimum_value": "0",
"maximum_value_warning": "2.0",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"wireframe_nozzle_clearance":
{
"label": "WP Nozzle Clearance",
"description": "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing.",
"type": "float",
"unit": "mm",
"default_value": 1,
"minimum_value_warning": "0",
"maximum_value_warning": "10.0",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"adaptive_layer_height_enabled": "adaptive_layer_height_enabled":
{ {
"label": "Use Adaptive Layers", "label": "Use Adaptive Layers",