diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 138749c1bf..de396b1570 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -67,9 +67,32 @@ Item { type: "cutting_mesh", text: catalog.i18nc("@label", "Modify extruder or settings for overlap with other models") }); + + meshTypeSelection.updateCurrentIndex(); } } + + function updateCurrentIndex() + { + var mesh_type = UM.ActiveTool.properties.getValue("MeshType"); + for(var index=0; index < meshTypeSelection.model.count; index++) + { + if(meshTypeSelection.model.get(index).type == mesh_type) + { + meshTypeSelection.currentIndex = index; + return; + } + } + meshTypeSelection.currentIndex = 0; + } } + + Connections + { + target: UM.Selection + onSelectionChanged: meshTypeSelection.updateCurrentIndex() + } + } Column diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py index 119c8db41d..f0fc0f7cb5 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py @@ -19,7 +19,7 @@ class PerObjectSettingsTool(Tool): super().__init__() self._model = None - self.setExposedProperties("SelectedObjectId", "ContainerID", "SelectedActiveExtruder") + self.setExposedProperties("SelectedObjectId", "ContainerID", "SelectedActiveExtruder", "MeshType") self._advanced_mode = False self._multi_extrusion = False @@ -91,6 +91,19 @@ class PerObjectSettingsTool(Tool): new_instance.resetState() # Ensure that the state is not seen as a user state. settings.addInstance(new_instance) + def getMeshType(self): + 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: + return "" + + settings = stack.getTop() + for property_key in ["infill_mesh", "cutting_mesh", "support_mesh", "anti_overhang_mesh"]: + if settings.getInstance(property_key) and settings.getProperty(property_key, "value"): + return property_key + + return "" + def _onPreferenceChanged(self, preference): if preference == "cura/active_mode": self._advanced_mode = Preferences.getInstance().getValue(preference) == 1