diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 57b98b3161..138749c1bf 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -43,6 +43,9 @@ Item { { id: meshTypeSelection style: UM.Theme.styles.combobox + onActivated: { + UM.ActiveTool.setProperty("MeshType", model.get(index).type) + } model: ListModel { id: meshTypeModel @@ -94,6 +97,7 @@ Item { id: addedSettingsModel; containerId: Cura.MachineManager.activeDefinitionId expanded: [ "*" ] + exclude: [ "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ] visibilityHandler: Cura.PerObjectSettingVisibilityHandler { diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py index d0cb53c4f8..119c8db41d 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py @@ -8,6 +8,7 @@ from UM.Application import Application from UM.Preferences import Preferences from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator from cura.Settings.ExtruderManager import ExtruderManager +from UM.Settings.SettingInstance import SettingInstance from UM.Event import Event @@ -70,6 +71,26 @@ class PerObjectSettingsTool(Tool): selected_object.addDecorator(SettingOverrideDecorator()) selected_object.callDecoration("setActiveExtruder", extruder_stack_id) + def setMeshType(self, mesh_type): + selected_object = Selection.getSelectedObject(0) + stack = selected_object.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. + if not stack: + selected_object.addDecorator(SettingOverrideDecorator()) + stack = selected_object.callDecoration("getStack") + + settings = stack.getTop() + for property_key in ["infill_mesh", "cutting_mesh", "support_mesh", "anti_overhang_mesh"]: + if property_key != mesh_type: + if settings.getInstance(property_key): + settings.removeInstance(property_key) + else: + if not (settings.getInstance(property_key) and settings.getProperty(property_key, "value")): + definition = stack.getSettingDefinition(property_key) + new_instance = SettingInstance(definition, settings) + new_instance.setProperty("value", True) + new_instance.resetState() # Ensure that the state is not seen as a user state. + settings.addInstance(new_instance) + def _onPreferenceChanged(self, preference): if preference == "cura/active_mode": self._advanced_mode = Preferences.getInstance().getValue(preference) == 1