mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Added per object setting retrieval for 3MF
CURA-1263
This commit is contained in:
parent
e7df64da8b
commit
826c3edd50
1 changed files with 44 additions and 0 deletions
|
@ -10,6 +10,10 @@ from UM.Scene.SceneNode import SceneNode
|
||||||
from UM.Scene.GroupDecorator import GroupDecorator
|
from UM.Scene.GroupDecorator import GroupDecorator
|
||||||
import UM.Application
|
import UM.Application
|
||||||
from UM.Job import Job
|
from UM.Job import Job
|
||||||
|
from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator
|
||||||
|
from UM.Application import Application
|
||||||
|
from cura.Settings.ExtruderManager import ExtruderManager
|
||||||
|
from cura.QualityManager import QualityManager
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
import zipfile
|
import zipfile
|
||||||
|
@ -55,6 +59,46 @@ class ThreeMFReader(MeshReader):
|
||||||
vertex_list.append([vertex.get("x"), vertex.get("y"), vertex.get("z")])
|
vertex_list.append([vertex.get("x"), vertex.get("y"), vertex.get("z")])
|
||||||
Job.yieldThread()
|
Job.yieldThread()
|
||||||
|
|
||||||
|
xml_settings = list(object.findall(".//cura:setting", self._namespaces))
|
||||||
|
|
||||||
|
# Add the setting override decorator, so we can add settings to this node.
|
||||||
|
if xml_settings:
|
||||||
|
node.addDecorator(SettingOverrideDecorator())
|
||||||
|
|
||||||
|
global_container_stack = Application.getInstance().getGlobalContainerStack()
|
||||||
|
# Ensure the correct next container for the SettingOverride decorator is set.
|
||||||
|
if global_container_stack:
|
||||||
|
multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1
|
||||||
|
# Ensure that all extruder data is reset
|
||||||
|
if not multi_extrusion:
|
||||||
|
default_stack_id = global_container_stack.getId()
|
||||||
|
else:
|
||||||
|
default_stack = ExtruderManager.getInstance().getExtruderStack(0)
|
||||||
|
if default_stack:
|
||||||
|
default_stack_id = default_stack.getId()
|
||||||
|
else:
|
||||||
|
default_stack_id = global_container_stack.getId()
|
||||||
|
node.callDecoration("setActiveExtruder", default_stack_id)
|
||||||
|
|
||||||
|
# Get the definition & set it
|
||||||
|
definition = QualityManager.getInstance().getParentMachineDefinition(global_container_stack.getBottom())
|
||||||
|
node.callDecoration("getStack").getTop().setDefinition(definition)
|
||||||
|
|
||||||
|
setting_container = node.callDecoration("getStack").getTop()
|
||||||
|
for setting in xml_settings:
|
||||||
|
setting_key = setting.get("key")
|
||||||
|
setting_value = setting.text
|
||||||
|
|
||||||
|
# Extruder_nr is a special case.
|
||||||
|
if setting_key == "extruder_nr":
|
||||||
|
extruder_stack = ExtruderManager.getInstance().getExtruderStack(int(setting_value))
|
||||||
|
if extruder_stack:
|
||||||
|
node.callDecoration("setActiveExtruder", extruder_stack.getId())
|
||||||
|
else:
|
||||||
|
Logger.log("w", "Unable to find extruder in position %s", setting_value)
|
||||||
|
continue
|
||||||
|
setting_container.setProperty(setting_key,"value", setting_value)
|
||||||
|
|
||||||
if len(node.getChildren()) > 0:
|
if len(node.getChildren()) > 0:
|
||||||
group_decorator = GroupDecorator()
|
group_decorator = GroupDecorator()
|
||||||
node.addDecorator(group_decorator)
|
node.addDecorator(group_decorator)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue