mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-15 06:26:00 +08:00
Merge branch 'master' of github.com:Ultimaker/Cura
This commit is contained in:
commit
561b97c255
@ -101,13 +101,6 @@ class MaterialManager(QObject):
|
|||||||
# GUID -> material group list
|
# GUID -> material group list
|
||||||
self._guid_material_groups_map = defaultdict(list)
|
self._guid_material_groups_map = defaultdict(list)
|
||||||
for root_material_id, material_group in self._material_group_map.items():
|
for root_material_id, material_group in self._material_group_map.items():
|
||||||
# This can happen when we are updating with incomplete data.
|
|
||||||
if material_group.root_material_node is None:
|
|
||||||
Logger.log("e", "Missing root material node for [%s]. Probably caused by update using incomplete data."
|
|
||||||
" Check all related signals for further debugging.",
|
|
||||||
material_group.name)
|
|
||||||
self._update_timer.start()
|
|
||||||
return
|
|
||||||
guid = material_group.root_material_node.metadata["GUID"]
|
guid = material_group.root_material_node.metadata["GUID"]
|
||||||
self._guid_material_groups_map[guid].append(material_group)
|
self._guid_material_groups_map[guid].append(material_group)
|
||||||
|
|
||||||
|
@ -53,8 +53,8 @@ class BrandMaterialsModel(ListModel):
|
|||||||
self._extruder_manager = CuraApplication.getInstance().getExtruderManager()
|
self._extruder_manager = CuraApplication.getInstance().getExtruderManager()
|
||||||
self._material_manager = CuraApplication.getInstance().getMaterialManager()
|
self._material_manager = CuraApplication.getInstance().getMaterialManager()
|
||||||
|
|
||||||
self._machine_manager.globalContainerChanged.connect(self._update)
|
self._machine_manager.activeStackChanged.connect(self._update) #Update when switching machines.
|
||||||
self._material_manager.materialsUpdated.connect(self._update)
|
self._material_manager.materialsUpdated.connect(self._update) #Update when the list of materials changes.
|
||||||
self._update()
|
self._update()
|
||||||
|
|
||||||
def setExtruderPosition(self, position: int):
|
def setExtruderPosition(self, position: int):
|
||||||
|
@ -15,8 +15,8 @@ class GenericMaterialsModel(BaseMaterialsModel):
|
|||||||
self._extruder_manager = CuraApplication.getInstance().getExtruderManager()
|
self._extruder_manager = CuraApplication.getInstance().getExtruderManager()
|
||||||
self._material_manager = CuraApplication.getInstance().getMaterialManager()
|
self._material_manager = CuraApplication.getInstance().getMaterialManager()
|
||||||
|
|
||||||
self._machine_manager.globalContainerChanged.connect(self._update)
|
self._machine_manager.activeStackChanged.connect(self._update) #Update when switching machines.
|
||||||
self._material_manager.materialsUpdated.connect(self._update)
|
self._material_manager.materialsUpdated.connect(self._update) #Update when the list of materials changes.
|
||||||
self._update()
|
self._update()
|
||||||
|
|
||||||
def _update(self):
|
def _update(self):
|
||||||
|
@ -56,12 +56,15 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice):
|
|||||||
self._connection_state_before_timeout = None # type: Optional[ConnectionState]
|
self._connection_state_before_timeout = None # type: Optional[ConnectionState]
|
||||||
|
|
||||||
printer_type = self._properties.get(b"machine", b"").decode("utf-8")
|
printer_type = self._properties.get(b"machine", b"").decode("utf-8")
|
||||||
if printer_type.startswith("9511"):
|
printer_type_identifiers = {
|
||||||
self._printer_type = "ultimaker3_extended"
|
"9066": "ultimaker3",
|
||||||
elif printer_type.startswith("9066"):
|
"9511": "ultimaker3_extended"
|
||||||
self._printer_type = "ultimaker3"
|
}
|
||||||
else:
|
self._printer_type = "Unknown"
|
||||||
self._printer_type = "unknown"
|
for key, value in printer_type_identifiers.items():
|
||||||
|
if printer_type.startswith(key):
|
||||||
|
self._printer_type = value
|
||||||
|
break
|
||||||
|
|
||||||
def requestWrite(self, nodes, file_name=None, filter_by_machine=False, file_handler=None, **kwargs) -> None:
|
def requestWrite(self, nodes, file_name=None, filter_by_machine=False, file_handler=None, **kwargs) -> None:
|
||||||
raise NotImplementedError("requestWrite needs to be implemented")
|
raise NotImplementedError("requestWrite needs to be implemented")
|
||||||
|
@ -50,7 +50,6 @@ class MachineManager(QObject):
|
|||||||
self._global_container_stack = None # type: GlobalStack
|
self._global_container_stack = None # type: GlobalStack
|
||||||
|
|
||||||
self._current_root_material_id = {}
|
self._current_root_material_id = {}
|
||||||
self._current_root_material_name = {}
|
|
||||||
self._current_quality_group = None
|
self._current_quality_group = None
|
||||||
self._current_quality_changes_group = None
|
self._current_quality_changes_group = None
|
||||||
|
|
||||||
@ -129,6 +128,9 @@ class MachineManager(QObject):
|
|||||||
# When the materials lookup table gets updated, it can mean that a material has its name changed, which should
|
# When the materials lookup table gets updated, it can mean that a material has its name changed, which should
|
||||||
# be reflected on the GUI. This signal emission makes sure that it happens.
|
# be reflected on the GUI. This signal emission makes sure that it happens.
|
||||||
self._material_manager.materialsUpdated.connect(self.rootMaterialChanged)
|
self._material_manager.materialsUpdated.connect(self.rootMaterialChanged)
|
||||||
|
# When the materials get updated, it can be that an activated material's diameter gets changed. In that case,
|
||||||
|
# a material update should be triggered to make sure that the machine still has compatible materials activated.
|
||||||
|
self._material_manager.materialsUpdated.connect(self._updateUponMaterialMetadataChange)
|
||||||
self.rootMaterialChanged.connect(self._onRootMaterialChanged)
|
self.rootMaterialChanged.connect(self._onRootMaterialChanged)
|
||||||
|
|
||||||
activeQualityGroupChanged = pyqtSignal()
|
activeQualityGroupChanged = pyqtSignal()
|
||||||
@ -877,11 +879,13 @@ class MachineManager(QObject):
|
|||||||
return self._default_extruder_position
|
return self._default_extruder_position
|
||||||
|
|
||||||
## This will fire the propertiesChanged for all settings so they will be updated in the front-end
|
## This will fire the propertiesChanged for all settings so they will be updated in the front-end
|
||||||
|
@pyqtSlot()
|
||||||
def forceUpdateAllSettings(self):
|
def forceUpdateAllSettings(self):
|
||||||
with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue):
|
with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue):
|
||||||
property_names = ["value", "resolve"]
|
property_names = ["value", "resolve"]
|
||||||
for setting_key in self._global_container_stack.getAllKeys():
|
for container in [self._global_container_stack] + list(self._global_container_stack.extruders.values()):
|
||||||
self._global_container_stack.propertiesChanged.emit(setting_key, property_names)
|
for setting_key in container.getAllKeys():
|
||||||
|
container.propertiesChanged.emit(setting_key, property_names)
|
||||||
|
|
||||||
@pyqtSlot(int, bool)
|
@pyqtSlot(int, bool)
|
||||||
def setExtruderEnabled(self, position: int, enabled) -> None:
|
def setExtruderEnabled(self, position: int, enabled) -> None:
|
||||||
@ -926,28 +930,18 @@ class MachineManager(QObject):
|
|||||||
return []
|
return []
|
||||||
return sorted(list(self._global_container_stack.extruders.keys()))
|
return sorted(list(self._global_container_stack.extruders.keys()))
|
||||||
|
|
||||||
## Update _current_root_material_id and _current_root_material_name when
|
## Update _current_root_material_id when the current root material was changed.
|
||||||
# the current root material was changed.
|
|
||||||
def _onRootMaterialChanged(self):
|
def _onRootMaterialChanged(self):
|
||||||
self._current_root_material_id = {}
|
self._current_root_material_id = {}
|
||||||
|
|
||||||
if self._global_container_stack:
|
if self._global_container_stack:
|
||||||
for position in self._global_container_stack.extruders:
|
for position in self._global_container_stack.extruders:
|
||||||
self._current_root_material_id[position] = self._global_container_stack.extruders[position].material.getMetaDataEntry("base_file")
|
self._current_root_material_id[position] = self._global_container_stack.extruders[position].material.getMetaDataEntry("base_file")
|
||||||
self._current_root_material_name = {}
|
|
||||||
for position in self._global_container_stack.extruders:
|
|
||||||
if position not in self._current_root_material_name:
|
|
||||||
material = self._global_container_stack.extruders[position].material
|
|
||||||
self._current_root_material_name[position] = material.getName()
|
|
||||||
|
|
||||||
@pyqtProperty("QVariant", notify = rootMaterialChanged)
|
@pyqtProperty("QVariant", notify = rootMaterialChanged)
|
||||||
def currentRootMaterialId(self):
|
def currentRootMaterialId(self):
|
||||||
return self._current_root_material_id
|
return self._current_root_material_id
|
||||||
|
|
||||||
@pyqtProperty("QVariant", notify = rootMaterialChanged)
|
|
||||||
def currentRootMaterialName(self):
|
|
||||||
return self._current_root_material_name
|
|
||||||
|
|
||||||
## Return the variant names in the extruder stack(s).
|
## Return the variant names in the extruder stack(s).
|
||||||
## For the variant in the global stack, use activeVariantBuildplateName
|
## For the variant in the global stack, use activeVariantBuildplateName
|
||||||
@pyqtProperty("QVariant", notify = activeVariantChanged)
|
@pyqtProperty("QVariant", notify = activeVariantChanged)
|
||||||
@ -1044,15 +1038,12 @@ class MachineManager(QObject):
|
|||||||
if container_node:
|
if container_node:
|
||||||
self._global_container_stack.extruders[position].material = container_node.getContainer()
|
self._global_container_stack.extruders[position].material = container_node.getContainer()
|
||||||
root_material_id = container_node.metadata["base_file"]
|
root_material_id = container_node.metadata["base_file"]
|
||||||
root_material_name = container_node.getContainer().getName()
|
|
||||||
else:
|
else:
|
||||||
self._global_container_stack.extruders[position].material = self._empty_material_container
|
self._global_container_stack.extruders[position].material = self._empty_material_container
|
||||||
root_material_id = None
|
root_material_id = None
|
||||||
root_material_name = None
|
|
||||||
# The _current_root_material_id is used in the MaterialMenu to see which material is selected
|
# The _current_root_material_id is used in the MaterialMenu to see which material is selected
|
||||||
if root_material_id != self._current_root_material_id[position]:
|
if root_material_id != self._current_root_material_id[position]:
|
||||||
self._current_root_material_id[position] = root_material_id
|
self._current_root_material_id[position] = root_material_id
|
||||||
self._current_root_material_name[position] = root_material_name
|
|
||||||
self.rootMaterialChanged.emit()
|
self.rootMaterialChanged.emit()
|
||||||
|
|
||||||
def activeMaterialsCompatible(self):
|
def activeMaterialsCompatible(self):
|
||||||
@ -1066,7 +1057,7 @@ class MachineManager(QObject):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
## Update current quality type and machine after setting material
|
## Update current quality type and machine after setting material
|
||||||
def _updateQualityWithMaterial(self):
|
def _updateQualityWithMaterial(self, *args):
|
||||||
Logger.log("i", "Updating quality/quality_changes due to material change")
|
Logger.log("i", "Updating quality/quality_changes due to material change")
|
||||||
current_quality_type = None
|
current_quality_type = None
|
||||||
if self._current_quality_group:
|
if self._current_quality_group:
|
||||||
@ -1111,9 +1102,15 @@ class MachineManager(QObject):
|
|||||||
extruder = self._global_container_stack.extruders[position]
|
extruder = self._global_container_stack.extruders[position]
|
||||||
|
|
||||||
current_material_base_name = extruder.material.getMetaDataEntry("base_file")
|
current_material_base_name = extruder.material.getMetaDataEntry("base_file")
|
||||||
|
current_variant_name = None
|
||||||
|
if extruder.variant.getId() != self._empty_variant_container.getId():
|
||||||
current_variant_name = extruder.variant.getMetaDataEntry("name")
|
current_variant_name = extruder.variant.getMetaDataEntry("name")
|
||||||
|
|
||||||
material_diameter = self._global_container_stack.getProperty("material_diameter", "value")
|
from UM.Settings.Interfaces import PropertyEvaluationContext
|
||||||
|
from cura.Settings.CuraContainerStack import _ContainerIndexes
|
||||||
|
context = PropertyEvaluationContext(extruder)
|
||||||
|
context.context["evaluate_from_container_index"] = _ContainerIndexes.DefinitionChanges
|
||||||
|
material_diameter = self._global_container_stack.getProperty("material_diameter", "value", context)
|
||||||
candidate_materials = self._material_manager.getAvailableMaterials(
|
candidate_materials = self._material_manager.getAvailableMaterials(
|
||||||
self._global_container_stack.definition.getId(),
|
self._global_container_stack.definition.getId(),
|
||||||
current_variant_name,
|
current_variant_name,
|
||||||
@ -1128,6 +1125,11 @@ class MachineManager(QObject):
|
|||||||
self._setMaterial(position, new_material)
|
self._setMaterial(position, new_material)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# The current material is not available, find the preferred one
|
||||||
|
material_node = self._material_manager.getDefaultMaterial(self._global_container_stack, current_variant_name)
|
||||||
|
if material_node is not None:
|
||||||
|
self._setMaterial(position, material_node)
|
||||||
|
|
||||||
## Given a printer definition name, select the right machine instance. In case it doesn't exist, create a new
|
## Given a printer definition name, select the right machine instance. In case it doesn't exist, create a new
|
||||||
# instance with the same network key.
|
# instance with the same network key.
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
@ -1252,3 +1254,8 @@ class MachineManager(QObject):
|
|||||||
elif self._current_quality_group:
|
elif self._current_quality_group:
|
||||||
name = self._current_quality_group.name
|
name = self._current_quality_group.name
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
def _updateUponMaterialMetadataChange(self):
|
||||||
|
with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue):
|
||||||
|
self._updateMaterialWithVariant(None)
|
||||||
|
self._updateQualityWithMaterial()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Copyright (c) 2017 Ultimaker B.V.
|
# Copyright (c) 2017 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal
|
from PyQt5.QtCore import QObject, QTimer, pyqtProperty, pyqtSignal
|
||||||
from UM.FlameProfiler import pyqtSlot
|
from UM.FlameProfiler import pyqtSlot
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
@ -30,6 +30,11 @@ class SettingInheritanceManager(QObject):
|
|||||||
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged)
|
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged)
|
||||||
self._onActiveExtruderChanged()
|
self._onActiveExtruderChanged()
|
||||||
|
|
||||||
|
self._update_timer = QTimer()
|
||||||
|
self._update_timer.setInterval(500)
|
||||||
|
self._update_timer.setSingleShot(True)
|
||||||
|
self._update_timer.timeout.connect(self._update)
|
||||||
|
|
||||||
settingsWithIntheritanceChanged = pyqtSignal()
|
settingsWithIntheritanceChanged = pyqtSignal()
|
||||||
|
|
||||||
## Get the keys of all children settings with an override.
|
## Get the keys of all children settings with an override.
|
||||||
@ -226,9 +231,7 @@ class SettingInheritanceManager(QObject):
|
|||||||
self._onActiveExtruderChanged()
|
self._onActiveExtruderChanged()
|
||||||
|
|
||||||
def _onContainersChanged(self, container):
|
def _onContainersChanged(self, container):
|
||||||
# TODO: Multiple container changes in sequence now cause quite a few recalculations.
|
self._update_timer.start()
|
||||||
# This isn't that big of an issue, but it could be in the future.
|
|
||||||
self._update()
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def createSettingInheritanceManager(engine=None, script_engine=None):
|
def createSettingInheritanceManager(engine=None, script_engine=None):
|
||||||
|
@ -265,13 +265,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
for material_container_file in material_container_files:
|
for material_container_file in material_container_files:
|
||||||
container_id = self._stripFileToId(material_container_file)
|
container_id = self._stripFileToId(material_container_file)
|
||||||
|
|
||||||
from hashlib import sha1
|
|
||||||
hex_container_id = sha1(container_id.encode('utf-8')).hexdigest()
|
|
||||||
|
|
||||||
serialized = archive.open(material_container_file).read().decode("utf-8")
|
serialized = archive.open(material_container_file).read().decode("utf-8")
|
||||||
metadata_list = xml_material_profile.deserializeMetadata(serialized, hex_container_id)
|
metadata_list = xml_material_profile.deserializeMetadata(serialized, container_id)
|
||||||
reverse_map = {metadata["id"].replace(hex_container_id, container_id): container_id.replace(hex_container_id, container_id)
|
reverse_map = {metadata["id"]: container_id for metadata in metadata_list}
|
||||||
for metadata in metadata_list}
|
|
||||||
reverse_material_id_dict.update(reverse_map)
|
reverse_material_id_dict.update(reverse_map)
|
||||||
|
|
||||||
material_labels.append(self._getMaterialLabelFromSerialized(serialized))
|
material_labels.append(self._getMaterialLabelFromSerialized(serialized))
|
||||||
@ -754,15 +750,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
quality_changes_containers = self._container_registry.findInstanceContainers(name = quality_changes_name,
|
quality_changes_containers = self._container_registry.findInstanceContainers(name = quality_changes_name,
|
||||||
type = "quality_changes")
|
type = "quality_changes")
|
||||||
for container in quality_changes_containers:
|
for container in quality_changes_containers:
|
||||||
extruder_definition_id = container.getMetaDataEntry("extruder")
|
extruder_position = container.getMetaDataEntry("position")
|
||||||
if not extruder_definition_id:
|
if extruder_position is None:
|
||||||
quality_changes_info.global_info.container = container
|
quality_changes_info.global_info.container = container
|
||||||
else:
|
else:
|
||||||
extruder_definition_metadata = self._container_registry.findDefinitionContainersMetadata(id = extruder_definition_id)[0]
|
if extruder_position not in quality_changes_info.extruder_info_dict:
|
||||||
position = extruder_definition_metadata["position"]
|
quality_changes_info.extruder_info_dict[extruder_position] = ContainerInfo(None, None, None)
|
||||||
if position not in quality_changes_info.extruder_info_dict:
|
container_info = quality_changes_info.extruder_info_dict[extruder_position]
|
||||||
quality_changes_info.extruder_info_dict[position] = ContainerInfo(None, None, None)
|
|
||||||
container_info = quality_changes_info.extruder_info_dict[position]
|
|
||||||
container_info.container = container
|
container_info.container = container
|
||||||
|
|
||||||
# If there is no quality changes for any extruder, create one.
|
# If there is no quality changes for any extruder, create one.
|
||||||
|
@ -281,7 +281,7 @@ class StartSliceJob(Job):
|
|||||||
default_extruder_position = int(Application.getInstance().getMachineManager().defaultExtruderPosition)
|
default_extruder_position = int(Application.getInstance().getMachineManager().defaultExtruderPosition)
|
||||||
result = {}
|
result = {}
|
||||||
for key in stack.getAllKeys():
|
for key in stack.getAllKeys():
|
||||||
setting_type = stack.getProperty(key, "type")
|
setting_type = stack.definition.getProperty(key, "type")
|
||||||
value = stack.getProperty(key, "value")
|
value = stack.getProperty(key, "value")
|
||||||
if setting_type == "extruder" and value == -1:
|
if setting_type == "extruder" and value == -1:
|
||||||
# replace with the default value
|
# replace with the default value
|
||||||
|
@ -382,6 +382,11 @@ Cura.MachineAction
|
|||||||
property string settingKey: "machine_nozzle_size"
|
property string settingKey: "machine_nozzle_size"
|
||||||
property string label: catalog.i18nc("@label", "Nozzle size")
|
property string label: catalog.i18nc("@label", "Nozzle size")
|
||||||
property string unit: catalog.i18nc("@label", "mm")
|
property string unit: catalog.i18nc("@label", "mm")
|
||||||
|
function afterOnEditingFinished()
|
||||||
|
{
|
||||||
|
// Somehow the machine_nozzle_size dependent settings are not updated otherwise
|
||||||
|
Cura.MachineManager.forceUpdateAllSettings()
|
||||||
|
}
|
||||||
property bool isExtruderSetting: true
|
property bool isExtruderSetting: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -838,14 +838,10 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
if machine_compatibility:
|
if machine_compatibility:
|
||||||
new_material_id = container_id + "_" + machine_id
|
new_material_id = container_id + "_" + machine_id
|
||||||
|
|
||||||
# The child or derived material container may already exist. This can happen when a material in a
|
# Do not look for existing container/container metadata with the same ID although they may exist.
|
||||||
# project file and the a material in Cura have the same ID.
|
# In project loading and perhaps some other places, we only want to get information (metadata)
|
||||||
# In the case if a derived material already exists, override that material container because if
|
# from a file without changing the current state of the system. If we overwrite the existing
|
||||||
# the data in the parent material has been changed, the derived ones should be updated too.
|
# metadata here, deserializeMetadata() will not be safe for retrieving information.
|
||||||
found_materials = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = new_material_id)
|
|
||||||
if found_materials:
|
|
||||||
new_material_metadata = found_materials[0]
|
|
||||||
else:
|
|
||||||
new_material_metadata = {}
|
new_material_metadata = {}
|
||||||
|
|
||||||
new_material_metadata.update(base_metadata)
|
new_material_metadata.update(base_metadata)
|
||||||
@ -854,7 +850,6 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
new_material_metadata["machine_manufacturer"] = machine_manufacturer
|
new_material_metadata["machine_manufacturer"] = machine_manufacturer
|
||||||
new_material_metadata["definition"] = machine_id
|
new_material_metadata["definition"] = machine_id
|
||||||
|
|
||||||
if len(found_materials) == 0: #This is a new material.
|
|
||||||
result_metadata.append(new_material_metadata)
|
result_metadata.append(new_material_metadata)
|
||||||
|
|
||||||
buildplates = machine.iterfind("./um:buildplate", cls.__namespaces)
|
buildplates = machine.iterfind("./um:buildplate", cls.__namespaces)
|
||||||
@ -866,12 +861,12 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
if buildplate_id is None:
|
if buildplate_id is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = buildplate_id)
|
variant_metadata = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = buildplate_id)
|
||||||
if not variant_containers:
|
if not variant_metadata:
|
||||||
# It is not really properly defined what "ID" is so also search for variants by name.
|
# It is not really properly defined what "ID" is so also search for variants by name.
|
||||||
variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(definition = machine_id, name = buildplate_id)
|
variant_metadata = ContainerRegistry.getInstance().findInstanceContainersMetadata(definition = machine_id, name = buildplate_id)
|
||||||
|
|
||||||
if not variant_containers:
|
if not variant_metadata:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
settings = buildplate.iterfind("./um:setting", cls.__namespaces)
|
settings = buildplate.iterfind("./um:setting", cls.__namespaces)
|
||||||
@ -900,11 +895,7 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
|
|
||||||
new_hotend_specific_material_id = container_id + "_" + machine_id + "_" + hotend_name.replace(" ", "_")
|
new_hotend_specific_material_id = container_id + "_" + machine_id + "_" + hotend_name.replace(" ", "_")
|
||||||
|
|
||||||
# Same as machine compatibility, keep the derived material containers consistent with the parent material
|
# Same as above, do not overwrite existing metadata.
|
||||||
found_materials = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = new_hotend_specific_material_id)
|
|
||||||
if found_materials:
|
|
||||||
new_hotend_material_metadata = found_materials[0]
|
|
||||||
else:
|
|
||||||
new_hotend_material_metadata = {}
|
new_hotend_material_metadata = {}
|
||||||
|
|
||||||
new_hotend_material_metadata.update(base_metadata)
|
new_hotend_material_metadata.update(base_metadata)
|
||||||
@ -917,7 +908,6 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
new_hotend_material_metadata["buildplate_compatible"] = buildplate_map["buildplate_compatible"]
|
new_hotend_material_metadata["buildplate_compatible"] = buildplate_map["buildplate_compatible"]
|
||||||
new_hotend_material_metadata["buildplate_recommended"] = buildplate_map["buildplate_recommended"]
|
new_hotend_material_metadata["buildplate_recommended"] = buildplate_map["buildplate_recommended"]
|
||||||
|
|
||||||
if len(found_materials) == 0:
|
|
||||||
result_metadata.append(new_hotend_material_metadata)
|
result_metadata.append(new_hotend_material_metadata)
|
||||||
|
|
||||||
# there is only one ID for a machine. Once we have reached here, it means we have already found
|
# there is only one ID for a machine. Once we have reached here, it means we have already found
|
||||||
|
38
resources/definitions/printrbot_simple_makers_kit.def.json
Normal file
38
resources/definitions/printrbot_simple_makers_kit.def.json
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Printrbot Simple Maker's Kit (1405)",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"author": "Timur Tabi",
|
||||||
|
"manufacturer": "Printrbot",
|
||||||
|
"file_formats": "text/x-gcode"
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Printrbot Simple Maker's Kit (1405)" },
|
||||||
|
"machine_heated_bed": { "default_value": false },
|
||||||
|
"machine_width": { "default_value": 100 },
|
||||||
|
"machine_depth": { "default_value": 100 },
|
||||||
|
"machine_height": { "default_value": 115 },
|
||||||
|
"material_diameter": { "default_value": 1.75 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"machine_head_with_fans_polygon": {
|
||||||
|
"default_value": [
|
||||||
|
[-40, 1000],
|
||||||
|
[-40, -10],
|
||||||
|
[60, 1000],
|
||||||
|
[60, -10]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gantry_height": { "default_value": 1000 },
|
||||||
|
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||||
|
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;home X/Y\nG28 Z0 ;home Z\nG92 E0 ;zero the extruded length\nG29 ;initiate auto bed leveling sequence"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nM106 S0 ;fan off\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit\nG1 Z+1 E-5 F9000 ;move Z up a bit and retract even more\nG28 X0 Y0 ;home X/Y, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -126,7 +126,7 @@
|
|||||||
"retraction_count_max": { "value": "10" },
|
"retraction_count_max": { "value": "10" },
|
||||||
"retraction_extrusion_window": { "value": "1" },
|
"retraction_extrusion_window": { "value": "1" },
|
||||||
"retraction_hop": { "value": "2" },
|
"retraction_hop": { "value": "2" },
|
||||||
"retraction_hop_enabled": { "value": "True" },
|
"retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
|
||||||
"retraction_hop_only_when_collides": { "value": "True" },
|
"retraction_hop_only_when_collides": { "value": "True" },
|
||||||
"retraction_min_travel": { "value": "5" },
|
"retraction_min_travel": { "value": "5" },
|
||||||
"retraction_prime_speed": { "value": "15" },
|
"retraction_prime_speed": { "value": "15" },
|
||||||
@ -150,7 +150,7 @@
|
|||||||
"switch_extruder_prime_speed": { "value": "15" },
|
"switch_extruder_prime_speed": { "value": "15" },
|
||||||
"switch_extruder_retraction_amount": { "value": "8" },
|
"switch_extruder_retraction_amount": { "value": "8" },
|
||||||
"top_bottom_thickness": { "value": "1" },
|
"top_bottom_thickness": { "value": "1" },
|
||||||
"travel_avoid_distance": { "value": "3" },
|
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
|
||||||
"wall_0_inset": { "value": "0" },
|
"wall_0_inset": { "value": "0" },
|
||||||
"wall_line_width_x": { "value": "round(wall_line_width * 0.3 / 0.35, 2)" },
|
"wall_line_width_x": { "value": "round(wall_line_width * 0.3 / 0.35, 2)" },
|
||||||
"wall_thickness": { "value": "1" },
|
"wall_thickness": { "value": "1" },
|
||||||
|
@ -346,15 +346,9 @@ Column
|
|||||||
{
|
{
|
||||||
id: materialSelection
|
id: materialSelection
|
||||||
|
|
||||||
property var currentRootMaterialName:
|
property var activeExtruder: Cura.MachineManager.activeStack
|
||||||
{
|
property var hasActiveExtruder: activeExtruder != null
|
||||||
var materials = Cura.MachineManager.currentRootMaterialName;
|
property var currentRootMaterialName: hasActiveExtruder ? activeExtruder.material.name : ""
|
||||||
var materialName = "";
|
|
||||||
if (base.currentExtruderIndex in materials) {
|
|
||||||
materialName = materials[base.currentExtruderIndex];
|
|
||||||
}
|
|
||||||
return materialName;
|
|
||||||
}
|
|
||||||
|
|
||||||
text: currentRootMaterialName
|
text: currentRootMaterialName
|
||||||
tooltip: currentRootMaterialName
|
tooltip: currentRootMaterialName
|
||||||
@ -373,7 +367,11 @@ Column
|
|||||||
property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported
|
property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported
|
||||||
|
|
||||||
function isMaterialSupported () {
|
function isMaterialSupported () {
|
||||||
return Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeMaterialId, "compatible") == "True"
|
if (!hasActiveExtruder)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Cura.ContainerManager.getContainerMetaDataEntry(activeExtruder.material.id, "compatible") == "True"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ UM.Dialog
|
|||||||
}
|
}
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: Cura.MachineManager.activeMachine.definition.name
|
text: (Cura.MachineManager.activeMachine == null) ? "" : Cura.MachineManager.activeMachine.definition.name
|
||||||
width: (parent.width / 3) | 0
|
width: (parent.width / 3) | 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -173,7 +173,7 @@ UM.Dialog
|
|||||||
}
|
}
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: Cura.MachineManager.activeVariantNames[modelData] + ", " + Cura.MachineManager.currentRootMaterialName[modelData]
|
text: Cura.MachineManager.activeVariantNames[modelData] + ", " + Cura.MachineManager.getExtruder(modelData).material.name
|
||||||
width: (parent.width / 3) | 0
|
width: (parent.width / 3) | 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,6 @@ raft_airgap = 0.25
|
|||||||
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
|
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
|
||||||
retraction_count_max = 80
|
retraction_count_max = 80
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -38,7 +38,6 @@ retraction_count_max = 45
|
|||||||
retraction_extra_prime_amount = 0.2
|
retraction_extra_prime_amount = 0.2
|
||||||
retraction_extrusion_window = 6.5
|
retraction_extrusion_window = 6.5
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 13
|
retraction_prime_speed = 13
|
||||||
|
@ -44,7 +44,6 @@ raft_interface_thickness = =max(layer_height * 1.5, 0.225)
|
|||||||
retraction_count_max = 80
|
retraction_count_max = 80
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -43,7 +43,6 @@ raft_interface_thickness = =max(layer_height * 1.5, 0.225)
|
|||||||
retraction_count_max = 80
|
retraction_count_max = 80
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -44,7 +44,6 @@ raft_interface_thickness = =max(layer_height * 1.5, 0.225)
|
|||||||
retraction_count_max = 80
|
retraction_count_max = 80
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -41,7 +41,6 @@ raft_interface_thickness = =max(layer_height * 1.5, 0.225)
|
|||||||
retraction_count_max = 80
|
retraction_count_max = 80
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -45,7 +45,6 @@ retraction_count_max = 12
|
|||||||
retraction_extra_prime_amount = 0.8
|
retraction_extra_prime_amount = 0.8
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 18
|
retraction_prime_speed = 18
|
||||||
@ -61,7 +60,6 @@ support_angle = 50
|
|||||||
switch_extruder_prime_speed = 15
|
switch_extruder_prime_speed = 15
|
||||||
switch_extruder_retraction_amount = 20
|
switch_extruder_retraction_amount = 20
|
||||||
switch_extruder_retraction_speeds = 35
|
switch_extruder_retraction_speeds = 35
|
||||||
travel_avoid_distance = 3
|
|
||||||
wall_0_inset = 0
|
wall_0_inset = 0
|
||||||
wall_line_width_x = =line_width
|
wall_line_width_x = =line_width
|
||||||
wall_thickness = =line_width * 3
|
wall_thickness = =line_width * 3
|
||||||
|
@ -44,7 +44,6 @@ retraction_count_max = 12
|
|||||||
retraction_extra_prime_amount = 0.8
|
retraction_extra_prime_amount = 0.8
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 18
|
retraction_prime_speed = 18
|
||||||
@ -61,7 +60,6 @@ switch_extruder_prime_speed = 15
|
|||||||
switch_extruder_retraction_amount = 20
|
switch_extruder_retraction_amount = 20
|
||||||
switch_extruder_retraction_speeds = 35
|
switch_extruder_retraction_speeds = 35
|
||||||
top_bottom_thickness = 1.1
|
top_bottom_thickness = 1.1
|
||||||
travel_avoid_distance = 3
|
|
||||||
wall_0_inset = 0
|
wall_0_inset = 0
|
||||||
wall_line_width_x = =line_width
|
wall_line_width_x = =line_width
|
||||||
wall_thickness = =line_width * 3
|
wall_thickness = =line_width * 3
|
||||||
|
@ -43,7 +43,6 @@ retraction_count_max = 12
|
|||||||
retraction_extra_prime_amount = 0.8
|
retraction_extra_prime_amount = 0.8
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 0.8
|
retraction_min_travel = 0.8
|
||||||
retraction_prime_speed = 18
|
retraction_prime_speed = 18
|
||||||
@ -60,7 +59,6 @@ switch_extruder_prime_speed = 15
|
|||||||
switch_extruder_retraction_amount = 20
|
switch_extruder_retraction_amount = 20
|
||||||
switch_extruder_retraction_speeds = 35
|
switch_extruder_retraction_speeds = 35
|
||||||
top_bottom_thickness = 1
|
top_bottom_thickness = 1
|
||||||
travel_avoid_distance = 3
|
|
||||||
wall_0_inset = 0
|
wall_0_inset = 0
|
||||||
wall_line_width_x = =line_width
|
wall_line_width_x = =line_width
|
||||||
wall_thickness = =line_width * 3
|
wall_thickness = =line_width * 3
|
||||||
|
@ -43,7 +43,6 @@ retraction_count_max = 12
|
|||||||
retraction_extra_prime_amount = 0.8
|
retraction_extra_prime_amount = 0.8
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 1.5
|
retraction_hop = 1.5
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = =line_width * 2
|
retraction_min_travel = =line_width * 2
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -44,7 +44,6 @@ retraction_count_max = 12
|
|||||||
retraction_extra_prime_amount = 0.8
|
retraction_extra_prime_amount = 0.8
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 1.5
|
retraction_hop = 1.5
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = =line_width * 2
|
retraction_min_travel = =line_width * 2
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -41,7 +41,6 @@ retraction_count_max = 12
|
|||||||
retraction_extra_prime_amount = 0.8
|
retraction_extra_prime_amount = 0.8
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 1.5
|
retraction_hop = 1.5
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = =line_width * 2
|
retraction_min_travel = =line_width * 2
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -36,4 +36,3 @@ support_bottom_distance = =support_z_distance
|
|||||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||||
support_z_distance = =layer_height
|
support_z_distance = =layer_height
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
travel_avoid_distance = 1.5
|
|
||||||
|
@ -37,4 +37,3 @@ support_bottom_distance = =support_z_distance
|
|||||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||||
support_z_distance = =layer_height
|
support_z_distance = =layer_height
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
travel_avoid_distance = 1.5
|
|
||||||
|
@ -37,4 +37,3 @@ support_bottom_distance = =support_z_distance
|
|||||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||||
support_z_distance = =layer_height
|
support_z_distance = =layer_height
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
travel_avoid_distance = 1.5
|
|
||||||
|
@ -29,4 +29,3 @@ speed_topbottom = =math.ceil(speed_print * 25 / 50)
|
|||||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||||
travel_avoid_distance = 3
|
|
||||||
|
@ -29,4 +29,3 @@ speed_topbottom = =math.ceil(speed_print * 25 / 50)
|
|||||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||||
travel_avoid_distance = 3
|
|
||||||
|
@ -30,4 +30,3 @@ speed_topbottom = =math.ceil(speed_print * 25 / 50)
|
|||||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||||
travel_avoid_distance = 3
|
|
||||||
|
@ -45,7 +45,6 @@ retraction_amount = 6.5
|
|||||||
retraction_count_max = 25
|
retraction_count_max = 25
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
skin_overlap = 5
|
skin_overlap = 5
|
||||||
speed_equalize_flow_enabled = True
|
speed_equalize_flow_enabled = True
|
||||||
|
@ -12,6 +12,7 @@ hardware_type = nozzle
|
|||||||
brim_width = 7
|
brim_width = 7
|
||||||
machine_nozzle_cool_down_speed = 0.9
|
machine_nozzle_cool_down_speed = 0.9
|
||||||
machine_nozzle_id = AA 0.4
|
machine_nozzle_id = AA 0.4
|
||||||
|
machine_nozzle_tip_outer_diameter = 1.0
|
||||||
raft_acceleration = =acceleration_print
|
raft_acceleration = =acceleration_print
|
||||||
raft_airgap = 0.3
|
raft_airgap = 0.3
|
||||||
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
|
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
|
||||||
|
@ -20,6 +20,7 @@ jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
|
|||||||
jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
|
jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
|
||||||
machine_nozzle_heat_up_speed = 1.5
|
machine_nozzle_heat_up_speed = 1.5
|
||||||
machine_nozzle_id = BB 0.4
|
machine_nozzle_id = BB 0.4
|
||||||
|
machine_nozzle_tip_outer_diameter = 1.0
|
||||||
prime_tower_purge_volume = 1
|
prime_tower_purge_volume = 1
|
||||||
raft_base_speed = 20
|
raft_base_speed = 20
|
||||||
raft_interface_speed = 20
|
raft_interface_speed = 20
|
||||||
|
@ -45,7 +45,6 @@ retraction_amount = 6.5
|
|||||||
retraction_count_max = 25
|
retraction_count_max = 25
|
||||||
retraction_extrusion_window = 1
|
retraction_extrusion_window = 1
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
skin_overlap = 5
|
skin_overlap = 5
|
||||||
speed_equalize_flow_enabled = True
|
speed_equalize_flow_enabled = True
|
||||||
|
@ -12,6 +12,7 @@ hardware_type = nozzle
|
|||||||
brim_width = 7
|
brim_width = 7
|
||||||
machine_nozzle_cool_down_speed = 0.9
|
machine_nozzle_cool_down_speed = 0.9
|
||||||
machine_nozzle_id = AA 0.4
|
machine_nozzle_id = AA 0.4
|
||||||
|
machine_nozzle_tip_outer_diameter = 1.0
|
||||||
raft_acceleration = =acceleration_print
|
raft_acceleration = =acceleration_print
|
||||||
raft_airgap = 0.3
|
raft_airgap = 0.3
|
||||||
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
|
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
|
||||||
|
@ -56,7 +56,6 @@ retraction_amount = 4.5
|
|||||||
retraction_count_max = 15
|
retraction_count_max = 15
|
||||||
retraction_extrusion_window = =retraction_amount
|
retraction_extrusion_window = =retraction_amount
|
||||||
retraction_hop = 2
|
retraction_hop = 2
|
||||||
retraction_hop_enabled = True
|
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
retraction_min_travel = 5
|
retraction_min_travel = 5
|
||||||
retraction_prime_speed = 15
|
retraction_prime_speed = 15
|
||||||
|
@ -20,6 +20,7 @@ jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
|
|||||||
jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
|
jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
|
||||||
machine_nozzle_heat_up_speed = 1.5
|
machine_nozzle_heat_up_speed = 1.5
|
||||||
machine_nozzle_id = BB 0.4
|
machine_nozzle_id = BB 0.4
|
||||||
|
machine_nozzle_tip_outer_diameter = 1.0
|
||||||
prime_tower_purge_volume = 1
|
prime_tower_purge_volume = 1
|
||||||
raft_base_speed = 20
|
raft_base_speed = 20
|
||||||
raft_interface_speed = 20
|
raft_interface_speed = 20
|
||||||
|
0
tools/check_preset_settings.py
Executable file → Normal file
0
tools/check_preset_settings.py
Executable file → Normal file
Loading…
x
Reference in New Issue
Block a user