mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-09 07:56:22 -06:00
Fix setting mesh type through Per Model Settings combobox
This commit is contained in:
parent
7bf40ef82b
commit
316ae49b0b
2 changed files with 25 additions and 0 deletions
|
@ -43,6 +43,9 @@ Item {
|
||||||
{
|
{
|
||||||
id: meshTypeSelection
|
id: meshTypeSelection
|
||||||
style: UM.Theme.styles.combobox
|
style: UM.Theme.styles.combobox
|
||||||
|
onActivated: {
|
||||||
|
UM.ActiveTool.setProperty("MeshType", model.get(index).type)
|
||||||
|
}
|
||||||
model: ListModel
|
model: ListModel
|
||||||
{
|
{
|
||||||
id: meshTypeModel
|
id: meshTypeModel
|
||||||
|
@ -94,6 +97,7 @@ Item {
|
||||||
id: addedSettingsModel;
|
id: addedSettingsModel;
|
||||||
containerId: Cura.MachineManager.activeDefinitionId
|
containerId: Cura.MachineManager.activeDefinitionId
|
||||||
expanded: [ "*" ]
|
expanded: [ "*" ]
|
||||||
|
exclude: [ "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]
|
||||||
|
|
||||||
visibilityHandler: Cura.PerObjectSettingVisibilityHandler
|
visibilityHandler: Cura.PerObjectSettingVisibilityHandler
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,6 +8,7 @@ from UM.Application import Application
|
||||||
from UM.Preferences import Preferences
|
from UM.Preferences import Preferences
|
||||||
from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator
|
from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator
|
||||||
from cura.Settings.ExtruderManager import ExtruderManager
|
from cura.Settings.ExtruderManager import ExtruderManager
|
||||||
|
from UM.Settings.SettingInstance import SettingInstance
|
||||||
from UM.Event import Event
|
from UM.Event import Event
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,6 +71,26 @@ class PerObjectSettingsTool(Tool):
|
||||||
selected_object.addDecorator(SettingOverrideDecorator())
|
selected_object.addDecorator(SettingOverrideDecorator())
|
||||||
selected_object.callDecoration("setActiveExtruder", extruder_stack_id)
|
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):
|
def _onPreferenceChanged(self, preference):
|
||||||
if preference == "cura/active_mode":
|
if preference == "cura/active_mode":
|
||||||
self._advanced_mode = Preferences.getInstance().getValue(preference) == 1
|
self._advanced_mode = Preferences.getInstance().getValue(preference) == 1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue