mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Merge branch 'master' of github.com:Ultimaker/Cura
This commit is contained in:
commit
d300aad781
28 changed files with 299 additions and 47 deletions
|
@ -20,6 +20,8 @@ from UM.JobQueue import JobQueue
|
||||||
from UM.SaveFile import SaveFile
|
from UM.SaveFile import SaveFile
|
||||||
from UM.Scene.Selection import Selection
|
from UM.Scene.Selection import Selection
|
||||||
from UM.Scene.GroupDecorator import GroupDecorator
|
from UM.Scene.GroupDecorator import GroupDecorator
|
||||||
|
from UM.Settings.ContainerStack import ContainerStack
|
||||||
|
from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
from UM.Settings.Validator import Validator
|
from UM.Settings.Validator import Validator
|
||||||
from UM.Message import Message
|
from UM.Message import Message
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
|
@ -148,11 +150,11 @@ class CuraApplication(QtApplication):
|
||||||
|
|
||||||
UM.VersionUpgradeManager.VersionUpgradeManager.getInstance().setCurrentVersions(
|
UM.VersionUpgradeManager.VersionUpgradeManager.getInstance().setCurrentVersions(
|
||||||
{
|
{
|
||||||
("quality", UM.Settings.InstanceContainer.InstanceContainer.Version): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"),
|
("quality", InstanceContainer.Version): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"),
|
||||||
("machine_stack", UM.Settings.ContainerStack.ContainerStack.Version): (self.ResourceTypes.MachineStack, "application/x-uranium-containerstack"),
|
("machine_stack", ContainerStack.Version): (self.ResourceTypes.MachineStack, "application/x-uranium-containerstack"),
|
||||||
("extruder_train", UM.Settings.ContainerStack.ContainerStack.Version): (self.ResourceTypes.ExtruderStack, "application/x-uranium-extruderstack"),
|
("extruder_train", ContainerStack.Version): (self.ResourceTypes.ExtruderStack, "application/x-uranium-extruderstack"),
|
||||||
("preferences", Preferences.Version): (Resources.Preferences, "application/x-uranium-preferences"),
|
("preferences", Preferences.Version): (Resources.Preferences, "application/x-uranium-preferences"),
|
||||||
("user", UM.Settings.InstanceContainer.InstanceContainer.Version): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer")
|
("user", InstanceContainer.Version): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
import urllib
|
import urllib
|
||||||
|
from typing import Dict, Union
|
||||||
|
|
||||||
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, QUrl, QVariant
|
from PyQt5.QtCore import QObject, QUrl, QVariant
|
||||||
from UM.FlameProfiler import pyqtSlot
|
from UM.FlameProfiler import pyqtSlot
|
||||||
from PyQt5.QtWidgets import QMessageBox
|
from PyQt5.QtWidgets import QMessageBox
|
||||||
|
|
||||||
from UM.PluginRegistry import PluginRegistry
|
from UM.PluginRegistry import PluginRegistry
|
||||||
|
|
||||||
from UM.Platform import Platform
|
|
||||||
from UM.SaveFile import SaveFile
|
from UM.SaveFile import SaveFile
|
||||||
|
from UM.Platform import Platform
|
||||||
from UM.MimeTypeDatabase import MimeTypeDatabase
|
from UM.MimeTypeDatabase import MimeTypeDatabase
|
||||||
|
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
@ -307,18 +307,20 @@ class ContainerManager(QObject):
|
||||||
#
|
#
|
||||||
# \param container_id The ID of the container to export
|
# \param container_id The ID of the container to export
|
||||||
# \param file_type The type of file to save as. Should be in the form of "description (*.extension, *.ext)"
|
# \param file_type The type of file to save as. Should be in the form of "description (*.extension, *.ext)"
|
||||||
# \param file_url The URL where to save the file.
|
# \param file_url_or_string The URL where to save the file.
|
||||||
#
|
#
|
||||||
# \return A dictionary containing a key "status" with a status code and a key "message" with a message
|
# \return A dictionary containing a key "status" with a status code and a key "message" with a message
|
||||||
# explaining the status.
|
# explaining the status.
|
||||||
# The status code can be one of "error", "cancelled", "success"
|
# The status code can be one of "error", "cancelled", "success"
|
||||||
@pyqtSlot(str, str, QUrl, result = "QVariantMap")
|
@pyqtSlot(str, str, QUrl, result = "QVariantMap")
|
||||||
def exportContainer(self, container_id, file_type, file_url):
|
def exportContainer(self, container_id: str, file_type: str, file_url_or_string: Union[QUrl, str]) -> Dict[str, str]:
|
||||||
if not container_id or not file_type or not file_url:
|
if not container_id or not file_type or not file_url_or_string:
|
||||||
return { "status": "error", "message": "Invalid arguments"}
|
return { "status": "error", "message": "Invalid arguments"}
|
||||||
|
|
||||||
if isinstance(file_url, QUrl):
|
if isinstance(file_url_or_string, QUrl):
|
||||||
file_url = file_url.toLocalFile()
|
file_url = file_url_or_string.toLocalFile()
|
||||||
|
else:
|
||||||
|
file_url = file_url_or_string
|
||||||
|
|
||||||
if not file_url:
|
if not file_url:
|
||||||
return { "status": "error", "message": "Invalid path"}
|
return { "status": "error", "message": "Invalid path"}
|
||||||
|
@ -373,12 +375,14 @@ class ContainerManager(QObject):
|
||||||
# \return \type{Dict} dict with a 'status' key containing the string 'success' or 'error', and a 'message' key
|
# \return \type{Dict} dict with a 'status' key containing the string 'success' or 'error', and a 'message' key
|
||||||
# containing a message for the user
|
# containing a message for the user
|
||||||
@pyqtSlot(QUrl, result = "QVariantMap")
|
@pyqtSlot(QUrl, result = "QVariantMap")
|
||||||
def importContainer(self, file_url):
|
def importContainer(self, file_url_or_string: Union[QUrl, str]) -> Dict[str, str]:
|
||||||
if not file_url:
|
if not file_url_or_string:
|
||||||
return { "status": "error", "message": "Invalid path"}
|
return { "status": "error", "message": "Invalid path"}
|
||||||
|
|
||||||
if isinstance(file_url, QUrl):
|
if isinstance(file_url_or_string, QUrl):
|
||||||
file_url = file_url.toLocalFile()
|
file_url = file_url_or_string.toLocalFile()
|
||||||
|
else:
|
||||||
|
file_url = file_url_or_string
|
||||||
|
|
||||||
if not file_url or not os.path.exists(file_url):
|
if not file_url or not os.path.exists(file_url):
|
||||||
return { "status": "error", "message": "Invalid path" }
|
return { "status": "error", "message": "Invalid path" }
|
||||||
|
@ -438,7 +442,7 @@ class ContainerManager(QObject):
|
||||||
|
|
||||||
## Clear the top-most (user) containers of the active stacks.
|
## Clear the top-most (user) containers of the active stacks.
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def clearUserContainers(self):
|
def clearUserContainers(self) -> None:
|
||||||
self._machine_manager.blurSettings.emit()
|
self._machine_manager.blurSettings.emit()
|
||||||
|
|
||||||
send_emits_containers = []
|
send_emits_containers = []
|
||||||
|
@ -668,7 +672,7 @@ class ContainerManager(QObject):
|
||||||
return new_change_instances
|
return new_change_instances
|
||||||
|
|
||||||
@pyqtSlot(str, result = str)
|
@pyqtSlot(str, result = str)
|
||||||
def duplicateMaterial(self, material_id):
|
def duplicateMaterial(self, material_id: str) -> str:
|
||||||
containers = self._container_registry.findInstanceContainers(id=material_id)
|
containers = self._container_registry.findInstanceContainers(id=material_id)
|
||||||
if not containers:
|
if not containers:
|
||||||
Logger.log("d", "Unable to duplicate the material with id %s, because it doesn't exist.", material_id)
|
Logger.log("d", "Unable to duplicate the material with id %s, because it doesn't exist.", material_id)
|
||||||
|
@ -692,7 +696,7 @@ class ContainerManager(QObject):
|
||||||
|
|
||||||
## Get the singleton instance for this class.
|
## Get the singleton instance for this class.
|
||||||
@classmethod
|
@classmethod
|
||||||
def getInstance(cls):
|
def getInstance(cls) -> "ContainerManager":
|
||||||
# Note: Explicit use of class name to prevent issues with inheritance.
|
# Note: Explicit use of class name to prevent issues with inheritance.
|
||||||
if ContainerManager.__instance is None:
|
if ContainerManager.__instance is None:
|
||||||
ContainerManager.__instance = cls()
|
ContainerManager.__instance = cls()
|
||||||
|
@ -717,7 +721,7 @@ class ContainerManager(QObject):
|
||||||
if clear_settings:
|
if clear_settings:
|
||||||
merge.clear()
|
merge.clear()
|
||||||
|
|
||||||
def _updateContainerNameFilters(self):
|
def _updateContainerNameFilters(self) -> None:
|
||||||
self._container_name_filters = {}
|
self._container_name_filters = {}
|
||||||
for plugin_id, container_type in self._container_registry.getContainerTypes():
|
for plugin_id, container_type in self._container_registry.getContainerTypes():
|
||||||
# Ignore default container types since those are not plugins
|
# Ignore default container types since those are not plugins
|
||||||
|
|
|
@ -6,7 +6,7 @@ from PyQt5.QtGui import QValidator
|
||||||
import os #For statvfs.
|
import os #For statvfs.
|
||||||
import urllib #To escape machine names for how they're saved to file.
|
import urllib #To escape machine names for how they're saved to file.
|
||||||
|
|
||||||
import UM.Resources
|
from UM.Resources import Resources
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
from UM.Settings.InstanceContainer import InstanceContainer
|
from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ class MachineNameValidator(QObject):
|
||||||
|
|
||||||
#Compute the validation regex for printer names. This is limited by the maximum file name length.
|
#Compute the validation regex for printer names. This is limited by the maximum file name length.
|
||||||
try:
|
try:
|
||||||
filename_max_length = os.statvfs(UM.Resources.getDataStoragePath()).f_namemax
|
filename_max_length = os.statvfs(Resources.getDataStoragePath()).f_namemax
|
||||||
except AttributeError: #Doesn't support statvfs. Probably because it's not a Unix system.
|
except AttributeError: #Doesn't support statvfs. Probably because it's not a Unix system.
|
||||||
filename_max_length = 255 #Assume it's Windows on NTFS.
|
filename_max_length = 255 #Assume it's Windows on NTFS.
|
||||||
machine_name_max_length = filename_max_length - len("_current_settings.") - len(ContainerRegistry.getMimeTypeForContainer(InstanceContainer).preferredSuffix)
|
machine_name_max_length = filename_max_length - len("_current_settings.") - len(ContainerRegistry.getMimeTypeForContainer(InstanceContainer).preferredSuffix)
|
||||||
|
@ -41,7 +41,7 @@ class MachineNameValidator(QObject):
|
||||||
def validate(self, name, position):
|
def validate(self, name, position):
|
||||||
#Check for file name length of the current settings container (which is the longest file we're saving with the name).
|
#Check for file name length of the current settings container (which is the longest file we're saving with the name).
|
||||||
try:
|
try:
|
||||||
filename_max_length = os.statvfs(UM.Resources.getDataStoragePath()).f_namemax
|
filename_max_length = os.statvfs(Resources.getDataStoragePath()).f_namemax
|
||||||
except AttributeError: #Doesn't support statvfs. Probably because it's not a Unix system.
|
except AttributeError: #Doesn't support statvfs. Probably because it's not a Unix system.
|
||||||
filename_max_length = 255 #Assume it's Windows on NTFS.
|
filename_max_length = 255 #Assume it's Windows on NTFS.
|
||||||
escaped_name = urllib.parse.quote_plus(name)
|
escaped_name = urllib.parse.quote_plus(name)
|
||||||
|
|
|
@ -8,7 +8,7 @@ from UM.Signal import Signal, signalemitter
|
||||||
from UM.Settings.ContainerStack import ContainerStack
|
from UM.Settings.ContainerStack import ContainerStack
|
||||||
from UM.Settings.InstanceContainer import InstanceContainer
|
from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
import UM.Logger
|
from UM.Logger import Logger
|
||||||
|
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
Application.getInstance().getBackend().needsSlicing()
|
Application.getInstance().getBackend().needsSlicing()
|
||||||
Application.getInstance().getBackend().tickle()
|
Application.getInstance().getBackend().tickle()
|
||||||
else:
|
else:
|
||||||
UM.Logger.log("e", "Extruder stack %s below per-object settings does not exist.", self._extruder_stack)
|
Logger.log("e", "Extruder stack %s below per-object settings does not exist.", self._extruder_stack)
|
||||||
else:
|
else:
|
||||||
self._stack.setNextStack(Application.getInstance().getGlobalContainerStack())
|
self._stack.setNextStack(Application.getInstance().getGlobalContainerStack())
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# Cura is released under the terms of the AGPLv3 or higher.
|
# Cura is released under the terms of the AGPLv3 or higher.
|
||||||
import configparser
|
import configparser
|
||||||
|
|
||||||
from UM import PluginRegistry
|
from UM.PluginRegistry import PluginRegistry
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make.
|
from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make.
|
||||||
from cura.ProfileReader import ProfileReader
|
from cura.ProfileReader import ProfileReader
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# Cura is released under the terms of the AGPLv3 or higher.
|
# Cura is released under the terms of the AGPLv3 or higher.
|
||||||
|
|
||||||
from UM.Platform import Platform
|
from UM.Platform import Platform
|
||||||
|
from UM.Logger import Logger
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
catalog = i18nCatalog("cura")
|
catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
|
|
@ -99,6 +99,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
|
||||||
self._material_ids = [""] * self._num_extruders
|
self._material_ids = [""] * self._num_extruders
|
||||||
self._hotend_ids = [""] * self._num_extruders
|
self._hotend_ids = [""] * self._num_extruders
|
||||||
self._target_bed_temperature = 0
|
self._target_bed_temperature = 0
|
||||||
|
self._processing_preheat_requests = True
|
||||||
|
|
||||||
self.setPriority(2) # Make sure the output device gets selected above local file output
|
self.setPriority(2) # Make sure the output device gets selected above local file output
|
||||||
self.setName(key)
|
self.setName(key)
|
||||||
|
@ -262,6 +263,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
|
||||||
Logger.log("i", "Pre-heating bed to %i degrees.", temperature)
|
Logger.log("i", "Pre-heating bed to %i degrees.", temperature)
|
||||||
put_request = QNetworkRequest(url)
|
put_request = QNetworkRequest(url)
|
||||||
put_request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
|
put_request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
|
||||||
|
self._processing_preheat_requests = False
|
||||||
self._manager.put(put_request, data.encode())
|
self._manager.put(put_request, data.encode())
|
||||||
self._preheat_bed_timer.start(self._preheat_bed_timeout * 1000) #Times 1000 because it needs to be provided as milliseconds.
|
self._preheat_bed_timer.start(self._preheat_bed_timeout * 1000) #Times 1000 because it needs to be provided as milliseconds.
|
||||||
self.preheatBedRemainingTimeChanged.emit()
|
self.preheatBedRemainingTimeChanged.emit()
|
||||||
|
@ -532,6 +534,30 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
|
||||||
self._updateHeadPosition(head_x, head_y, head_z)
|
self._updateHeadPosition(head_x, head_y, head_z)
|
||||||
self._updatePrinterState(self._json_printer_state["status"])
|
self._updatePrinterState(self._json_printer_state["status"])
|
||||||
|
|
||||||
|
if self._processing_preheat_requests:
|
||||||
|
try:
|
||||||
|
is_preheating = self._json_printer_state["bed"]["pre_heat"]["active"]
|
||||||
|
except KeyError: #Old firmware doesn't support that.
|
||||||
|
pass #Don't update the pre-heat remaining time.
|
||||||
|
else:
|
||||||
|
if is_preheating:
|
||||||
|
try:
|
||||||
|
remaining_preheat_time = self._json_printer_state["bed"]["pre_heat"]["remaining"]
|
||||||
|
except KeyError: #Error in firmware. If "active" is supported, "remaining" should also be supported.
|
||||||
|
pass #Anyway, don't update.
|
||||||
|
else:
|
||||||
|
#Only update if time estimate is significantly off (>5000ms).
|
||||||
|
#Otherwise we get issues with latency causing the timer to count inconsistently.
|
||||||
|
if abs(self._preheat_bed_timer.remainingTime() - remaining_preheat_time * 1000) > 5000:
|
||||||
|
self._preheat_bed_timer.setInterval(remaining_preheat_time * 1000)
|
||||||
|
self._preheat_bed_timer.start()
|
||||||
|
self.preheatBedRemainingTimeChanged.emit()
|
||||||
|
else: #Not pre-heating. Must've cancelled.
|
||||||
|
if self._preheat_bed_timer.isActive():
|
||||||
|
self._preheat_bed_timer.setInterval(0)
|
||||||
|
self._preheat_bed_timer.stop()
|
||||||
|
self.preheatBedRemainingTimeChanged.emit()
|
||||||
|
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
Logger.log("d", "Closing connection of printer %s with ip %s", self._key, self._address)
|
Logger.log("d", "Closing connection of printer %s with ip %s", self._key, self._address)
|
||||||
|
@ -1033,6 +1059,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
|
||||||
self._progress_message.hide()
|
self._progress_message.hide()
|
||||||
|
|
||||||
elif reply.operation() == QNetworkAccessManager.PutOperation:
|
elif reply.operation() == QNetworkAccessManager.PutOperation:
|
||||||
|
if "printer/bed/pre_heat" in reply_url: #Pre-heat command has completed. Re-enable syncing pre-heating.
|
||||||
|
self._processing_preheat_requests = True
|
||||||
if status_code in [200, 201, 202, 204]:
|
if status_code in [200, 201, 202, 204]:
|
||||||
pass # Request was successful!
|
pass # Request was successful!
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
import UM.VersionUpgrade #To indicate that a file is of incorrect format.
|
import UM.VersionUpgrade #To indicate that a file is of incorrect format.
|
||||||
import UM.VersionUpgradeManager #To schedule more files to be upgraded.
|
import UM.VersionUpgradeManager #To schedule more files to be upgraded.
|
||||||
import UM.Resources #To get the config storage path.
|
from UM.Resources import Resources #To get the config storage path.
|
||||||
|
|
||||||
import configparser #To read config files.
|
import configparser #To read config files.
|
||||||
import io #To write config files to strings as if they were files.
|
import io #To write config files to strings as if they were files.
|
||||||
|
@ -107,7 +107,7 @@ class MachineInstance:
|
||||||
user_profile["values"] = {}
|
user_profile["values"] = {}
|
||||||
|
|
||||||
version_upgrade_manager = UM.VersionUpgradeManager.VersionUpgradeManager.getInstance()
|
version_upgrade_manager = UM.VersionUpgradeManager.VersionUpgradeManager.getInstance()
|
||||||
user_storage = os.path.join(UM.Resources.getDataStoragePath(), next(iter(version_upgrade_manager.getStoragePaths("user"))))
|
user_storage = os.path.join(Resources.getDataStoragePath(), next(iter(version_upgrade_manager.getStoragePaths("user"))))
|
||||||
user_profile_file = os.path.join(user_storage, urllib.parse.quote_plus(self._name) + "_current_settings.inst.cfg")
|
user_profile_file = os.path.join(user_storage, urllib.parse.quote_plus(self._name) + "_current_settings.inst.cfg")
|
||||||
if not os.path.exists(user_storage):
|
if not os.path.exists(user_storage):
|
||||||
os.makedirs(user_storage)
|
os.makedirs(user_storage)
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
import configparser #To read config files.
|
import configparser #To read config files.
|
||||||
import io #To write config files to strings as if they were files.
|
import io #To write config files to strings as if they were files.
|
||||||
|
from typing import Dict
|
||||||
|
from typing import List
|
||||||
|
|
||||||
import UM.VersionUpgrade
|
import UM.VersionUpgrade
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
"manufacturer": "Cartesio bv",
|
"manufacturer": "Cartesio bv",
|
||||||
"category": "Other",
|
"category": "Other",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"has_materials": true,
|
|
||||||
"has_machine_materials": true,
|
"has_machine_materials": true,
|
||||||
"has_variants": true,
|
"has_variants": true,
|
||||||
"variants_name": "Nozzle size",
|
"variants_name": "Nozzle size",
|
||||||
|
@ -31,12 +30,11 @@
|
||||||
"machine_heated_bed": { "default_value": true },
|
"machine_heated_bed": { "default_value": true },
|
||||||
"machine_center_is_zero": { "default_value": false },
|
"machine_center_is_zero": { "default_value": false },
|
||||||
"machine_height": { "default_value": 400 },
|
"machine_height": { "default_value": 400 },
|
||||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
|
||||||
"machine_depth": { "default_value": 270 },
|
"machine_depth": { "default_value": 270 },
|
||||||
"machine_width": { "default_value": 430 },
|
"machine_width": { "default_value": 430 },
|
||||||
"machine_name": { "default_value": "Cartesio" },
|
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||||
"machine_start_gcode": {
|
"machine_start_gcode": {
|
||||||
"default_value": "M92 E162\nG21\nG90\nM42 S255 P13;chamber lights\nM42 S255 P12;fume extraction\nM140 S{material_bed_temperature}\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\nG1 X70 Y20 F9000;go to wipe point\n\nM190 S{material_bed_temperature}\nM104 S120 T1\nM109 S{material_print_temperature} T0\nM104 S21 T1\n\nM117 purging nozzle....\n\nT0\nG92 E0;set E\nG1 E10 F100\nG92 E0\nG1 E-{retraction_amount} F600\nG92 E0\n\nM117 wiping nozzle....\n\nG1 X1 Y24 F3000\nG1 X70 F9000\n\nM117 Printing .....\n\nG1 E1 F100\nG92 E-1\n"
|
"default_value": "M92 E159\nG21\nG90\nM42 S255 P13;chamber lights\nM42 S255 P12;fume extraction\nM140 S{material_bed_temperature}\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\nG1 X70 Y20 F9000;go to wipe point\n\nM190 S{material_bed_temperature}\nM104 S120 T1\nM109 S{material_print_temperature} T0\nM104 S21 T1\n\nM117 purging nozzle....\n\nT0\nG92 E0;set E\nG1 E10 F100\nG92 E0\nG1 E-{retraction_amount} F600\nG92 E0\n\nM117 wiping nozzle....\n\nG1 X1 Y24 F3000\nG1 X70 F9000\n\nM117 Printing .....\n\nG1 E1 F100\nG92 E-1\n"
|
||||||
},
|
},
|
||||||
"machine_end_gcode": {
|
"machine_end_gcode": {
|
||||||
"default_value": "; -- END GCODE --\nM106 S255\nM140 S5\nM104 S5 T0\nM104 S5 T1\nG1 X20.0 Y260.0 F6000\nG4 S7\nM84\nG4 S90\nM107\nM42 P12 S0\nM42 P13 S0\nM84\n; -- end of END GCODE --"
|
"default_value": "; -- END GCODE --\nM106 S255\nM140 S5\nM104 S5 T0\nM104 S5 T1\nG1 X20.0 Y260.0 F6000\nG4 S7\nM84\nG4 S90\nM107\nM42 P12 S0\nM42 P13 S0\nM84\n; -- end of END GCODE --"
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"machine_extruder_start_code": {
|
"machine_extruder_start_code": {
|
||||||
"default_value": "M117 Heating nozzles....\nM104 S190 T0\nG1 X70 Y20 F9000\nM109 S270 T0 ;wait for nozzle to heat up\nT0\n\nM117 purging nozzle\nG92 E0\nG1 E6 F90\nG92 E0\nG1 E-2 F300\nG92 E0\nM117 wiping nozzle\nG1 X1 Y28 F3000\nG1 X70 F6000\n\nM117 printing\n"
|
"default_value": "\n;start extruder_0\nM117 Heating nozzles....\nM104 S190 T0\nG1 X70 Y20 F9000\nM109 S190 T0\n\nM117 purging nozzle\nG92 E0\nG1 E6 F90\nG92 E0\nG1 E-2 F300\nG92 E0\nM117 wiping nozzle\nG1 X1 Y28 F3000\nG1 X70 F6000\n\nM117 printing\n"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": "\nM104 S160 T0\n;end extruder_0\nM117 temp is {material_print_temp}"
|
"default_value": "\nM104 T0 S155\n;end extruder_0\nM117 temp is {material_print_temp}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
"machine_nozzle_offset_x": { "default_value": 24.0 },
|
"machine_nozzle_offset_x": { "default_value": 24.0 },
|
||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"machine_extruder_start_code": {
|
"machine_extruder_start_code": {
|
||||||
"default_value": "\n;start extruder_1\nM117 Heating nozzles....\nM104 S190 T1\nG1 X70 Y20 F9000\nM109 S190 T1 ;wait for nozzle to heat up\n\nM117 purging nozzle\nG92 E0\nG1 E6 F90\nG92 E0\nG1 E-2 F300\nG92 E0\n\nM117 wiping nozzle\nG1 X1 Y28 F3000\nG1 X70 F6000\n\nM117 printing\n"
|
"default_value": "\n;start extruder_1\nM117 Heating nozzles....\nM104 S190 T1\nG1 X70 Y20 F9000\nM109 S190 T1\n\nM117 purging nozzle\nG92 E0\nG1 E6 F90\nG92 E0\nG1 E-2 F300\nG92 E0\n\nM117 wiping nozzle\nG1 X1 Y28 F3000\nG1 X70 F6000\n\nM117 printing\n"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": "\nM104 T0 S120\n;end extruder_1\n"
|
"default_value": "\nM104 T1 S155\n;end extruder_1\n"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
"default_value": "\n;start extruder_2\nM117 Heating nozzles....\nM104 S190 T2\nG1 X70 Y20 F9000\nM109 S190 T2\n\nM117 purging nozzle\nG92 E0\nG1 E6 F90\nG92 E0\nG1 E-2 F300\nG92 E0\n\nM117 wiping nozzle\nG1 X1 Y28 F3000\nG1 X70 F6000\n\nM117 printing\n"
|
"default_value": "\n;start extruder_2\nM117 Heating nozzles....\nM104 S190 T2\nG1 X70 Y20 F9000\nM109 S190 T2\n\nM117 purging nozzle\nG92 E0\nG1 E6 F90\nG92 E0\nG1 E-2 F300\nG92 E0\n\nM117 wiping nozzle\nG1 X1 Y28 F3000\nG1 X70 F6000\n\nM117 printing\n"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": "\nM104 T2 S120\n;end extruder_2\n"
|
"default_value": "\nM104 T2 S155\n;end extruder_2\n"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
"default_value": "\n;start extruder_3\nM117 Heating nozzles....\nM104 S190 T3\nG1 X70 Y20 F9000\nM109 S190 T3\n\nM117 purging nozzle\nG92 E0\nG1 E6 F90\nG92 E0\nG1 E-2 F300\nG92 E0\n\nM117 wiping nozzle\nG1 X1 Y28 F3000\nG1 X70 F6000\n\nM117 printing\n"
|
"default_value": "\n;start extruder_3\nM117 Heating nozzles....\nM104 S190 T3\nG1 X70 Y20 F9000\nM109 S190 T3\n\nM117 purging nozzle\nG92 E0\nG1 E6 F90\nG92 E0\nG1 E-2 F300\nG92 E0\n\nM117 wiping nozzle\nG1 X1 Y28 F3000\nG1 X70 F6000\n\nM117 printing\n"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": "\nM104 T3 S120\n;end extruder_3\n"
|
"default_value": "\nM104 T3 S155\n;end extruder_3\n"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,25 @@ material = generic_cpe_plus_ultimaker3_AA_0.4
|
||||||
weight = -2
|
weight = -2
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
brim_width = 7
|
||||||
cool_fan_speed_max = 80
|
cool_fan_speed_max = 80
|
||||||
|
cool_min_speed = 5
|
||||||
|
infill_wipe_dist = 0
|
||||||
layer_height = 0.2
|
layer_height = 0.2
|
||||||
machine_nozzle_cool_down_speed = 0.9
|
machine_nozzle_cool_down_speed = 0.9
|
||||||
speed_print = 50
|
machine_nozzle_heat_up_speed = 1.4
|
||||||
|
prime_tower_size = 17
|
||||||
|
retraction_combing = off
|
||||||
|
retraction_hop = 0.2
|
||||||
|
retraction_hop_enabled = False
|
||||||
|
retraction_min_travel = =5
|
||||||
|
retraction_prime_speed = =15
|
||||||
speed_topbottom = =math.ceil(speed_print * 65 / 50)
|
speed_topbottom = =math.ceil(speed_print * 65 / 50)
|
||||||
speed_wall = =math.ceil(speed_print * 50 / 50)
|
speed_wall = =math.ceil(speed_print * 50 / 50)
|
||||||
speed_wall_0 = =math.ceil(speed_wall * 40 / 50)
|
speed_wall_0 = =math.ceil(speed_wall * 40 / 50)
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
switch_extruder_prime_speed = =15
|
||||||
|
switch_extruder_retraction_amount = =8
|
||||||
|
switch_extruder_retraction_speeds = 20
|
||||||
wall_thickness = 1
|
wall_thickness = 1
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,26 @@ material = generic_cpe_plus_ultimaker3_AA_0.4
|
||||||
weight = -1
|
weight = -1
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
brim_width = 7
|
||||||
cool_fan_speed_max = 80
|
cool_fan_speed_max = 80
|
||||||
cool_min_speed = 6
|
cool_min_speed = 6
|
||||||
|
infill_wipe_dist = 0
|
||||||
layer_height = 0.15
|
layer_height = 0.15
|
||||||
machine_nozzle_cool_down_speed = 0.9
|
machine_nozzle_cool_down_speed = 0.9
|
||||||
|
machine_nozzle_heat_up_speed = 1.4
|
||||||
|
prime_tower_size = 17
|
||||||
|
retraction_combing = off
|
||||||
|
retraction_hop = 0.2
|
||||||
|
retraction_hop_enabled = False
|
||||||
|
retraction_min_travel = =5
|
||||||
|
retraction_prime_speed = =15
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_topbottom = =math.ceil(speed_print * 55 / 45)
|
speed_topbottom = =math.ceil(speed_print * 55 / 45)
|
||||||
speed_wall = =math.ceil(speed_print * 45 / 45)
|
speed_wall = =math.ceil(speed_print * 45 / 45)
|
||||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
|
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
switch_extruder_prime_speed = =15
|
||||||
|
switch_extruder_retraction_amount = =8
|
||||||
|
switch_extruder_retraction_speeds = 20
|
||||||
|
wall_thickness = 1.3
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,24 @@ material = generic_cpe_plus_ultimaker3_AA_0.4
|
||||||
weight = 1
|
weight = 1
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
machine_nozzle_heat_up_speed = 1.5
|
brim_width = 7
|
||||||
|
cool_min_speed = 5
|
||||||
|
infill_wipe_dist = 0
|
||||||
|
layer_height = 0.06
|
||||||
material_print_temperature = =default_material_print_temperature + 2
|
material_print_temperature = =default_material_print_temperature + 2
|
||||||
|
prime_tower_size = 17
|
||||||
|
retraction_combing = off
|
||||||
|
retraction_hop = 0.2
|
||||||
|
retraction_hop_enabled = False
|
||||||
|
retraction_min_travel = =5
|
||||||
|
retraction_prime_speed = =15
|
||||||
|
speed_print = 40
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 30 / 35)
|
||||||
|
speed_wall = =math.ceil(speed_print * 35 / 40)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30 / 35)
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
switch_extruder_prime_speed = =15
|
||||||
|
switch_extruder_retraction_amount = =8
|
||||||
|
switch_extruder_retraction_speeds = 20
|
||||||
|
wall_thickness = 1.3
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,23 @@ material = generic_cpe_plus_ultimaker3_AA_0.4
|
||||||
weight = 0
|
weight = 0
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
brim_width = 7
|
||||||
cool_min_speed = 7
|
cool_min_speed = 7
|
||||||
layer_height = 0.1
|
infill_wipe_dist = 0
|
||||||
machine_nozzle_heat_up_speed = 1.5
|
|
||||||
material_print_temperature = =default_material_print_temperature + 5
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
|
prime_tower_size = 17
|
||||||
|
retraction_combing = off
|
||||||
|
retraction_hop = 0.2
|
||||||
|
retraction_hop_enabled = False
|
||||||
|
retraction_min_travel = =5
|
||||||
|
retraction_prime_speed = =15
|
||||||
|
speed_print = 40
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 30 / 35)
|
||||||
|
speed_wall = =math.ceil(speed_print * 35 / 40)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30 / 35)
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
switch_extruder_prime_speed = =15
|
||||||
|
switch_extruder_retraction_amount = =8
|
||||||
|
switch_extruder_retraction_speeds = 20
|
||||||
|
wall_thickness = 1.3
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,24 @@ material = generic_pc_ultimaker3_AA_0.4
|
||||||
weight = -2
|
weight = -2
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
adhesion_type = raft
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + layer_height
|
||||||
cool_fan_speed_max = 90
|
cool_fan_speed_max = 90
|
||||||
|
cool_min_layer_time_fan_speed_max = 5
|
||||||
cool_min_speed = 6
|
cool_min_speed = 6
|
||||||
|
infill_line_width = =round(line_width * 0.4 / 0.35, 2)
|
||||||
|
infill_overlap_mm = 0.05
|
||||||
layer_height = 0.2
|
layer_height = 0.2
|
||||||
|
material_print_temperature_layer_0 = =material_print_temperature + 5
|
||||||
|
ooze_shield_angle = 40
|
||||||
|
raft_airgap = 0.25
|
||||||
|
raft_margin = 15
|
||||||
|
retraction_count_max = 80
|
||||||
|
skin_overlap = 30
|
||||||
|
speed_layer_0 = 25
|
||||||
|
support_interface_line_distance = 0.4
|
||||||
|
support_interface_pattern = lines
|
||||||
|
support_pattern = zigzag
|
||||||
|
wall_line_width_x = =round(line_width * 0.4 / 0.35, 2)
|
||||||
|
xy_offset = -0.15
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,25 @@ material = generic_pc_ultimaker3_AA_0.4
|
||||||
weight = -1
|
weight = -1
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
adhesion_type = raft
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + layer_height
|
||||||
cool_fan_speed_max = 85
|
cool_fan_speed_max = 85
|
||||||
|
cool_min_layer_time_fan_speed_max = 5
|
||||||
cool_min_speed = 7
|
cool_min_speed = 7
|
||||||
|
infill_line_width = =round(line_width * 0.4 / 0.35, 2)
|
||||||
infill_overlap = =0
|
infill_overlap = =0
|
||||||
|
infill_overlap_mm = 0.05
|
||||||
layer_height = 0.15
|
layer_height = 0.15
|
||||||
|
material_print_temperature_layer_0 = =material_print_temperature + 5
|
||||||
|
ooze_shield_angle = 40
|
||||||
|
raft_airgap = 0.25
|
||||||
|
raft_margin = 15
|
||||||
|
retraction_count_max = 80
|
||||||
|
skin_overlap = 30
|
||||||
|
speed_layer_0 = 25
|
||||||
|
support_interface_line_distance = 0.4
|
||||||
|
support_interface_pattern = lines
|
||||||
|
support_pattern = zigzag
|
||||||
|
wall_line_width_x = =round(line_width * 0.4 / 0.35, 2)
|
||||||
|
xy_offset = -0.15
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,24 @@ material = generic_pc_ultimaker3_AA_0.4
|
||||||
weight = 1
|
weight = 1
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
adhesion_type = raft
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + layer_height
|
||||||
|
cool_min_layer_time_fan_speed_max = 5
|
||||||
cool_min_speed = 8
|
cool_min_speed = 8
|
||||||
|
infill_line_width = =round(line_width * 0.4 / 0.35, 2)
|
||||||
|
infill_overlap_mm = 0.05
|
||||||
|
layer_height = 0.06
|
||||||
material_print_temperature = =default_material_print_temperature - 10
|
material_print_temperature = =default_material_print_temperature - 10
|
||||||
|
material_print_temperature_layer_0 = =material_print_temperature + 5
|
||||||
|
ooze_shield_angle = 40
|
||||||
|
raft_airgap = 0.25
|
||||||
|
raft_margin = 15
|
||||||
|
retraction_count_max = 80
|
||||||
|
skin_overlap = 30
|
||||||
|
speed_layer_0 = 25
|
||||||
|
support_interface_line_distance = 0.4
|
||||||
|
support_interface_pattern = lines
|
||||||
|
support_pattern = zigzag
|
||||||
|
wall_line_width_x = =round(line_width * 0.4 / 0.35, 2)
|
||||||
|
xy_offset = -0.15
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,23 @@ material = generic_pc_ultimaker3_AA_0.4
|
||||||
weight = 0
|
weight = 0
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
layer_height = 0.1
|
adhesion_type = raft
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + layer_height
|
||||||
|
cool_min_layer_time_fan_speed_max = 5
|
||||||
|
cool_min_speed = 5
|
||||||
|
infill_line_width = =round(line_width * 0.4 / 0.35, 2)
|
||||||
|
infill_overlap_mm = 0.05
|
||||||
material_print_temperature = =default_material_print_temperature
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =material_print_temperature + 5
|
||||||
|
ooze_shield_angle = 40
|
||||||
|
raft_airgap = 0.25
|
||||||
|
raft_margin = 15
|
||||||
|
retraction_count_max = 80
|
||||||
|
skin_overlap = 30
|
||||||
|
speed_layer_0 = 25
|
||||||
|
support_interface_line_distance = 0.4
|
||||||
|
support_interface_pattern = lines
|
||||||
|
support_pattern = zigzag
|
||||||
|
wall_line_width_x = =round(line_width * 0.4 / 0.35, 2)
|
||||||
|
xy_offset = -0.15
|
||||||
|
|
||||||
|
|
|
@ -10,5 +10,31 @@ material = generic_tpu_ultimaker3_AA_0.4
|
||||||
weight = -2
|
weight = -2
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
brim_width = 8.75
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 6
|
||||||
|
gradual_infill_step_height = =5 * layer_height
|
||||||
|
gradual_infill_steps = 4
|
||||||
|
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||||
|
infill_pattern = tetrahedral
|
||||||
|
infill_sparse_density = 96
|
||||||
layer_height = 0.2
|
layer_height = 0.2
|
||||||
|
line_width = =machine_nozzle_size * 0.95
|
||||||
|
material_flow = 106
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||||
|
retraction_count_max = 12
|
||||||
|
retraction_extra_prime_amount = 0.8
|
||||||
|
skin_overlap = 15
|
||||||
|
speed_equalize_flow_enabled = True
|
||||||
|
speed_layer_0 = 18
|
||||||
|
speed_print = 25
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||||
|
speed_travel = 300
|
||||||
|
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
|
||||||
|
support_angle = 50
|
||||||
|
support_bottom_distance = =support_z_distance / 2
|
||||||
|
top_bottom_thickness = 0.7
|
||||||
|
wall_line_width_x = =line_width
|
||||||
|
wall_thickness = 0.76
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,32 @@ material = generic_tpu_ultimaker3_AA_0.4
|
||||||
weight = -1
|
weight = -1
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
brim_width = 8.75
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 6
|
||||||
|
gradual_infill_step_height = =5 * layer_height
|
||||||
|
gradual_infill_steps = 4
|
||||||
|
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||||
|
infill_pattern = tetrahedral
|
||||||
|
infill_sparse_density = 96
|
||||||
layer_height = 0.15
|
layer_height = 0.15
|
||||||
|
line_width = =machine_nozzle_size * 0.95
|
||||||
|
material_flow = 106
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||||
retraction_amount = 7
|
retraction_amount = 7
|
||||||
|
retraction_count_max = 12
|
||||||
|
retraction_extra_prime_amount = 0.8
|
||||||
|
skin_overlap = 15
|
||||||
|
speed_equalize_flow_enabled = True
|
||||||
|
speed_layer_0 = 18
|
||||||
|
speed_print = 25
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||||
|
speed_travel = 300
|
||||||
|
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
|
||||||
|
support_angle = 50
|
||||||
|
support_bottom_distance = =support_z_distance / 2
|
||||||
|
top_bottom_thickness = 0.7
|
||||||
|
wall_line_width_x = =line_width
|
||||||
|
wall_thickness = 0.76
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,32 @@ material = generic_tpu_ultimaker3_AA_0.4
|
||||||
weight = 0
|
weight = 0
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
|
brim_width = 8.75
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 6
|
||||||
|
gradual_infill_step_height = =5 * layer_height
|
||||||
|
gradual_infill_steps = 4
|
||||||
|
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||||
|
infill_pattern = tetrahedral
|
||||||
|
infill_sparse_density = 96
|
||||||
|
line_width = =machine_nozzle_size * 0.95
|
||||||
|
material_flow = 106
|
||||||
material_initial_print_temperature = =material_print_temperature - 10
|
material_initial_print_temperature = =material_print_temperature - 10
|
||||||
material_print_temperature = =default_material_print_temperature
|
material_print_temperature = =default_material_print_temperature
|
||||||
material_print_temperature_layer_0 = =default_material_print_temperature
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
retraction_count_max = 12
|
||||||
|
retraction_extra_prime_amount = 0.8
|
||||||
|
skin_overlap = 15
|
||||||
|
speed_equalize_flow_enabled = True
|
||||||
|
speed_layer_0 = 18
|
||||||
|
speed_print = 25
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||||
|
speed_travel = 300
|
||||||
|
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
|
||||||
|
support_angle = 50
|
||||||
|
support_bottom_distance = =support_z_distance / 2
|
||||||
|
top_bottom_thickness = 0.7
|
||||||
|
wall_line_width_x = =line_width
|
||||||
|
wall_thickness = 0.76
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,9 @@ type = variant
|
||||||
machine_nozzle_size = 0.25
|
machine_nozzle_size = 0.25
|
||||||
machine_nozzle_tip_outer_diameter = 1.05
|
machine_nozzle_tip_outer_diameter = 1.05
|
||||||
|
|
||||||
|
infill_line_width = 0.3
|
||||||
|
|
||||||
|
wall_thickness = 1
|
||||||
wall_0_inset = -0.05
|
wall_0_inset = -0.05
|
||||||
fill_perimeter_gaps = nowhere
|
fill_perimeter_gaps = nowhere
|
||||||
travel_compensate_overlapping_walls_enabled =
|
travel_compensate_overlapping_walls_enabled =
|
||||||
|
@ -43,6 +46,7 @@ speed_support_interface = =round(speed_topbottom)
|
||||||
|
|
||||||
retraction_combing = off
|
retraction_combing = off
|
||||||
retraction_hop_enabled = true
|
retraction_hop_enabled = true
|
||||||
|
retraction_hop = 1
|
||||||
|
|
||||||
support_z_distance = 0
|
support_z_distance = 0
|
||||||
support_xy_distance = 0.5
|
support_xy_distance = 0.5
|
||||||
|
|
|
@ -12,6 +12,9 @@ type = variant
|
||||||
machine_nozzle_size = 0.4
|
machine_nozzle_size = 0.4
|
||||||
machine_nozzle_tip_outer_diameter = 0.8
|
machine_nozzle_tip_outer_diameter = 0.8
|
||||||
|
|
||||||
|
infill_line_width = 0.5
|
||||||
|
|
||||||
|
wall_thickness = 1.2
|
||||||
wall_0_inset = -0.05
|
wall_0_inset = -0.05
|
||||||
fill_perimeter_gaps = nowhere
|
fill_perimeter_gaps = nowhere
|
||||||
travel_compensate_overlapping_walls_enabled =
|
travel_compensate_overlapping_walls_enabled =
|
||||||
|
@ -20,7 +23,6 @@ infill_sparse_density = 25
|
||||||
infill_overlap = -50
|
infill_overlap = -50
|
||||||
skin_overlap = -40
|
skin_overlap = -40
|
||||||
|
|
||||||
|
|
||||||
material_print_temperature_layer_0 = =round(material_print_temperature)
|
material_print_temperature_layer_0 = =round(material_print_temperature)
|
||||||
material_initial_print_temperature = =round(material_print_temperature)
|
material_initial_print_temperature = =round(material_print_temperature)
|
||||||
material_diameter = 1.75
|
material_diameter = 1.75
|
||||||
|
@ -44,6 +46,7 @@ speed_support_interface = =round(speed_topbottom)
|
||||||
|
|
||||||
retraction_combing = off
|
retraction_combing = off
|
||||||
retraction_hop_enabled = true
|
retraction_hop_enabled = true
|
||||||
|
retraction_hop = 1
|
||||||
|
|
||||||
support_z_distance = 0
|
support_z_distance = 0
|
||||||
support_xy_distance = 0.5
|
support_xy_distance = 0.5
|
||||||
|
|
|
@ -11,18 +11,22 @@ type = variant
|
||||||
machine_nozzle_size = 0.8
|
machine_nozzle_size = 0.8
|
||||||
machine_nozzle_tip_outer_diameter = 1.05
|
machine_nozzle_tip_outer_diameter = 1.05
|
||||||
|
|
||||||
|
infill_line_width = 0.9
|
||||||
|
|
||||||
|
wall_thickness = 2.4
|
||||||
|
top_bottom_thickness = =0.8 if layer_height < 0.3 else (layer_height * 3)
|
||||||
wall_0_inset = -0.05
|
wall_0_inset = -0.05
|
||||||
fill_perimeter_gaps = nowhere
|
fill_perimeter_gaps = nowhere
|
||||||
travel_compensate_overlapping_walls_enabled =
|
travel_compensate_overlapping_walls_enabled =
|
||||||
|
|
||||||
infill_sparse_density = 25
|
infill_sparse_density = 15
|
||||||
infill_overlap = -50
|
infill_overlap = -50
|
||||||
skin_overlap = -40
|
skin_overlap = -40
|
||||||
|
|
||||||
material_print_temperature_layer_0 = =round(material_print_temperature)
|
material_print_temperature_layer_0 = =round(material_print_temperature)
|
||||||
material_initial_print_temperature = =round(material_print_temperature)
|
material_initial_print_temperature = =round(material_print_temperature)
|
||||||
material_diameter = 1.75
|
material_diameter = 1.75
|
||||||
retraction_amount = 2
|
retraction_amount = 1.5
|
||||||
retraction_speed = 40
|
retraction_speed = 40
|
||||||
retraction_prime_speed = =round(retraction_speed / 4)
|
retraction_prime_speed = =round(retraction_speed / 4)
|
||||||
retraction_min_travel = =round(line_width * 10)
|
retraction_min_travel = =round(line_width * 10)
|
||||||
|
@ -43,6 +47,7 @@ speed_support_interface = =round(speed_topbottom)
|
||||||
|
|
||||||
retraction_combing = off
|
retraction_combing = off
|
||||||
retraction_hop_enabled = true
|
retraction_hop_enabled = true
|
||||||
|
retraction_hop = 1
|
||||||
|
|
||||||
support_z_distance = 0
|
support_z_distance = 0
|
||||||
support_xy_distance = 0.5
|
support_xy_distance = 0.5
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue