mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-16 20:56:40 +08:00
Merge branch 'master' into feature_prime_tower_purge
This commit is contained in:
commit
e1d98d22f0
3
.gitignore
vendored
3
.gitignore
vendored
@ -30,9 +30,6 @@ cura.desktop
|
||||
.pydevproject
|
||||
.settings
|
||||
|
||||
# Debian packaging
|
||||
debian*
|
||||
|
||||
#Externally located plug-ins.
|
||||
plugins/Doodle3D-cura-plugin
|
||||
plugins/GodMode
|
||||
|
@ -104,7 +104,6 @@ class BuildVolume(SceneNode):
|
||||
# but it does not update the disallowed areas after material change
|
||||
Application.getInstance().getMachineManager().activeStackChanged.connect(self._onStackChanged)
|
||||
|
||||
|
||||
def _onSceneChanged(self, source):
|
||||
if self._global_container_stack:
|
||||
self._change_timer.start()
|
||||
@ -637,7 +636,7 @@ class BuildVolume(SceneNode):
|
||||
result[extruder.getId()] = []
|
||||
|
||||
#Currently, the only normally printed object is the prime tower.
|
||||
if ExtruderManager.getInstance().getResolveOrValue("prime_tower_enable") == True:
|
||||
if ExtruderManager.getInstance().getResolveOrValue("prime_tower_enable"):
|
||||
prime_tower_size = self._global_container_stack.getProperty("prime_tower_size", "value")
|
||||
machine_width = self._global_container_stack.getProperty("machine_width", "value")
|
||||
machine_depth = self._global_container_stack.getProperty("machine_depth", "value")
|
||||
@ -717,6 +716,11 @@ class BuildVolume(SceneNode):
|
||||
polygon = polygon.getMinkowskiHull(Polygon.approximatedCircle(border_size))
|
||||
machine_disallowed_polygons.append(polygon)
|
||||
|
||||
# For certain machines we don't need to compute disallowed areas for each nozzle.
|
||||
# So we check here and only do the nozzle offsetting if needed.
|
||||
no_nozzle_offsetting_for_disallowed_areas = self._global_container_stack.getMetaDataEntry(
|
||||
"no_nozzle_offsetting_for_disallowed_areas", False)
|
||||
|
||||
result = {}
|
||||
for extruder in used_extruders:
|
||||
extruder_id = extruder.getId()
|
||||
@ -736,14 +740,17 @@ class BuildVolume(SceneNode):
|
||||
right_unreachable_border = 0
|
||||
top_unreachable_border = 0
|
||||
bottom_unreachable_border = 0
|
||||
#The build volume is defined as the union of the area that all extruders can reach, so we need to know the relative offset to all extruders.
|
||||
for other_extruder in ExtruderManager.getInstance().getActiveExtruderStacks():
|
||||
other_offset_x = other_extruder.getProperty("machine_nozzle_offset_x", "value")
|
||||
other_offset_y = other_extruder.getProperty("machine_nozzle_offset_y", "value")
|
||||
left_unreachable_border = min(left_unreachable_border, other_offset_x - offset_x)
|
||||
right_unreachable_border = max(right_unreachable_border, other_offset_x - offset_x)
|
||||
top_unreachable_border = min(top_unreachable_border, other_offset_y - offset_y)
|
||||
bottom_unreachable_border = max(bottom_unreachable_border, other_offset_y - offset_y)
|
||||
|
||||
# Only do nozzle offsetting if needed
|
||||
if not no_nozzle_offsetting_for_disallowed_areas:
|
||||
#The build volume is defined as the union of the area that all extruders can reach, so we need to know the relative offset to all extruders.
|
||||
for other_extruder in ExtruderManager.getInstance().getActiveExtruderStacks():
|
||||
other_offset_x = other_extruder.getProperty("machine_nozzle_offset_x", "value")
|
||||
other_offset_y = other_extruder.getProperty("machine_nozzle_offset_y", "value")
|
||||
left_unreachable_border = min(left_unreachable_border, other_offset_x - offset_x)
|
||||
right_unreachable_border = max(right_unreachable_border, other_offset_x - offset_x)
|
||||
top_unreachable_border = min(top_unreachable_border, other_offset_y - offset_y)
|
||||
bottom_unreachable_border = max(bottom_unreachable_border, other_offset_y - offset_y)
|
||||
half_machine_width = self._global_container_stack.getProperty("machine_width", "value") / 2
|
||||
half_machine_depth = self._global_container_stack.getProperty("machine_depth", "value") / 2
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
# Copyright (c) 2015 Ultimaker B.V.
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
from PyQt5.QtNetwork import QLocalServer
|
||||
from PyQt5.QtNetwork import QLocalSocket
|
||||
|
||||
@ -47,6 +48,7 @@ from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.Settings.SettingFunction import SettingFunction
|
||||
from cura.Settings.MachineNameValidator import MachineNameValidator
|
||||
from cura.Settings.ProfilesModel import ProfilesModel
|
||||
from cura.Settings.MaterialsModel import MaterialsModel
|
||||
from cura.Settings.QualityAndUserProfilesModel import QualityAndUserProfilesModel
|
||||
from cura.Settings.SettingInheritanceManager import SettingInheritanceManager
|
||||
from cura.Settings.UserProfilesModel import UserProfilesModel
|
||||
@ -62,6 +64,7 @@ from . import CameraImageProvider
|
||||
from . import MachineActionManager
|
||||
|
||||
from cura.Settings.MachineManager import MachineManager
|
||||
from cura.Settings.MaterialManager import MaterialManager
|
||||
from cura.Settings.ExtruderManager import ExtruderManager
|
||||
from cura.Settings.UserChangesModel import UserChangesModel
|
||||
from cura.Settings.ExtrudersModel import ExtrudersModel
|
||||
@ -189,6 +192,7 @@ class CuraApplication(QtApplication):
|
||||
|
||||
self._machine_action_manager = MachineActionManager.MachineActionManager()
|
||||
self._machine_manager = None # This is initialized on demand.
|
||||
self._material_manager = None
|
||||
self._setting_inheritance_manager = None
|
||||
|
||||
self._additional_components = {} # Components to add to certain areas in the interface
|
||||
@ -640,6 +644,7 @@ class CuraApplication(QtApplication):
|
||||
# Initialise extruder so as to listen to global container stack changes before the first global container stack is set.
|
||||
ExtruderManager.getInstance()
|
||||
qmlRegisterSingletonType(MachineManager, "Cura", 1, 0, "MachineManager", self.getMachineManager)
|
||||
qmlRegisterSingletonType(MaterialManager, "Cura", 1, 0, "MaterialManager", self.getMaterialManager)
|
||||
qmlRegisterSingletonType(SettingInheritanceManager, "Cura", 1, 0, "SettingInheritanceManager",
|
||||
self.getSettingInheritanceManager)
|
||||
|
||||
@ -665,6 +670,11 @@ class CuraApplication(QtApplication):
|
||||
self._machine_manager = MachineManager.createMachineManager()
|
||||
return self._machine_manager
|
||||
|
||||
def getMaterialManager(self, *args):
|
||||
if self._material_manager is None:
|
||||
self._material_manager = MaterialManager.createMaterialManager()
|
||||
return self._material_manager
|
||||
|
||||
def getSettingInheritanceManager(self, *args):
|
||||
if self._setting_inheritance_manager is None:
|
||||
self._setting_inheritance_manager = SettingInheritanceManager.createSettingInheritanceManager()
|
||||
@ -708,6 +718,7 @@ class CuraApplication(QtApplication):
|
||||
|
||||
qmlRegisterType(ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel")
|
||||
qmlRegisterSingletonType(ProfilesModel, "Cura", 1, 0, "ProfilesModel", ProfilesModel.createProfilesModel)
|
||||
qmlRegisterType(MaterialsModel, "Cura", 1, 0, "MaterialsModel")
|
||||
qmlRegisterType(QualityAndUserProfilesModel, "Cura", 1, 0, "QualityAndUserProfilesModel")
|
||||
qmlRegisterType(UserProfilesModel, "Cura", 1, 0, "UserProfilesModel")
|
||||
qmlRegisterType(MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler")
|
||||
|
@ -235,7 +235,7 @@ class ContainerManager(QObject):
|
||||
|
||||
return True
|
||||
|
||||
## Set a setting property value of the specified container.
|
||||
## Set a setting property of the specified container.
|
||||
#
|
||||
# This will set the specified property of the specified setting of the container
|
||||
# and all containers that share the same base_file (if any). The latter only
|
||||
@ -269,6 +269,29 @@ class ContainerManager(QObject):
|
||||
|
||||
return True
|
||||
|
||||
## Get a setting property of the specified container.
|
||||
#
|
||||
# This will get the specified property of the specified setting of the
|
||||
# specified container.
|
||||
#
|
||||
# \param container_id The ID of the container to get the setting property
|
||||
# of.
|
||||
# \param setting_key The key of the setting to get the property of.
|
||||
# \param property_name The property to obtain.
|
||||
# \return The value of the specified property. The type of this property
|
||||
# value depends on the type of the property. For instance, the "value"
|
||||
# property of an integer setting will be a Python int, but the "value"
|
||||
# property of an enum setting will be a Python str.
|
||||
@pyqtSlot(str, str, str, result = QVariant)
|
||||
def getContainerProperty(self, container_id: str, setting_key: str, property_name: str):
|
||||
containers = self._container_registry.findContainers(id = container_id)
|
||||
if not containers:
|
||||
Logger.log("w", "Could not get properties of container %s because it was not found.", container_id)
|
||||
return ""
|
||||
container = containers[0]
|
||||
|
||||
return container.getProperty(setting_key, property_name)
|
||||
|
||||
## Set the name of the specified container.
|
||||
@pyqtSlot(str, str, result = bool)
|
||||
def setContainerName(self, container_id, new_name):
|
||||
|
@ -78,8 +78,9 @@ class ExtruderManager(QObject):
|
||||
def extruderIds(self):
|
||||
map = {}
|
||||
global_stack_id = Application.getInstance().getGlobalContainerStack().getId()
|
||||
for position in self._extruder_trains[global_stack_id]:
|
||||
map[position] = self._extruder_trains[global_stack_id][position].getId()
|
||||
if global_stack_id in self._extruder_trains:
|
||||
for position in self._extruder_trains[global_stack_id]:
|
||||
map[position] = self._extruder_trains[global_stack_id][position].getId()
|
||||
return map
|
||||
|
||||
@pyqtSlot(str, result = str)
|
||||
|
@ -107,6 +107,21 @@ class GlobalStack(CuraContainerStack):
|
||||
def setNextStack(self, next_stack: ContainerStack) -> None:
|
||||
raise Exceptions.InvalidOperationError("Global stack cannot have a next stack!")
|
||||
|
||||
## Gets the approximate filament diameter that the machine requires.
|
||||
#
|
||||
# The approximate material diameter is the material diameter rounded to
|
||||
# the nearest millimetre.
|
||||
#
|
||||
# If the machine has no requirement for the diameter, -1 is returned.
|
||||
#
|
||||
# \return The approximate filament diameter for the printer, as a string.
|
||||
@pyqtProperty(str)
|
||||
def approximateMaterialDiameter(self) -> str:
|
||||
material_diameter = self.definition.getProperty("material_diameter", "value")
|
||||
if material_diameter is None:
|
||||
return "-1"
|
||||
return str(round(float(material_diameter))) #Round, then convert back to string.
|
||||
|
||||
# protected:
|
||||
|
||||
# Determine whether or not we should try to get the "resolve" property instead of the
|
||||
|
@ -11,6 +11,7 @@ from UM.Application import Application
|
||||
from UM.Preferences import Preferences
|
||||
from UM.Logger import Logger
|
||||
from UM.Message import Message
|
||||
from UM.Decorators import deprecated
|
||||
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.Settings.ContainerStack import ContainerStack
|
||||
@ -1121,6 +1122,7 @@ class MachineManager(QObject):
|
||||
def createMachineManager(engine=None, script_engine=None):
|
||||
return MachineManager()
|
||||
|
||||
@deprecated("Use ExtruderStack.material = ... and it won't be necessary", "2.7")
|
||||
def _updateMaterialContainer(self, definition: "DefinitionContainer", stack: "ContainerStack", variant_container: Optional["InstanceContainer"] = None, preferred_material_name: Optional[str] = None):
|
||||
if not definition.getMetaDataEntry("has_materials"):
|
||||
return self._empty_material_container
|
||||
|
54
cura/Settings/MaterialManager.py
Normal file
54
cura/Settings/MaterialManager.py
Normal file
@ -0,0 +1,54 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
from PyQt5.QtCore import QObject, pyqtSlot #To expose data to QML.
|
||||
|
||||
from cura.Settings.ContainerManager import ContainerManager
|
||||
from UM.Logger import Logger
|
||||
from UM.Message import Message #To create a warning message about material diameter.
|
||||
from UM.i18n import i18nCatalog #Translated strings.
|
||||
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
## Handles material-related data, processing requests to change them and
|
||||
# providing data for the GUI.
|
||||
#
|
||||
# TODO: Move material-related managing over from the machine manager to here.
|
||||
class MaterialManager(QObject):
|
||||
## Creates the global values for the material manager to use.
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
|
||||
#Material diameter changed warning message.
|
||||
self._material_diameter_warning_message = Message(catalog.i18nc("@info:status Has a cancel button next to it.",
|
||||
"The selected material diameter causes the material to become incompatible with the current printer."))
|
||||
self._material_diameter_warning_message.addAction("Undo", catalog.i18nc("@action:button", "Undo"), None, catalog.i18nc("@action", "Undo changing the material diameter."))
|
||||
self._material_diameter_warning_message.actionTriggered.connect(self._materialWarningMessageAction)
|
||||
|
||||
## Creates an instance of the MaterialManager.
|
||||
#
|
||||
# This should only be called by PyQt to create the singleton instance of
|
||||
# this class.
|
||||
@staticmethod
|
||||
def createMaterialManager(engine = None, script_engine = None):
|
||||
return MaterialManager()
|
||||
|
||||
@pyqtSlot(str, str)
|
||||
def showMaterialWarningMessage(self, material_id, previous_diameter):
|
||||
self._material_diameter_warning_message.previous_diameter = previous_diameter #Make sure that the undo button can properly undo the action.
|
||||
self._material_diameter_warning_message.material_id = material_id
|
||||
self._material_diameter_warning_message.show()
|
||||
|
||||
## Called when clicking "undo" on the warning dialogue for disappeared
|
||||
# materials.
|
||||
#
|
||||
# This executes the undo action, restoring the material diameter.
|
||||
#
|
||||
# \param button The identifier of the button that was pressed.
|
||||
def _materialWarningMessageAction(self, message, button):
|
||||
if button == "Undo":
|
||||
container_manager = ContainerManager.getInstance()
|
||||
container_manager.setContainerMetaDataEntry(self._material_diameter_warning_message.material_id, "properties/diameter", self._material_diameter_warning_message.previous_diameter)
|
||||
message.hide()
|
||||
else:
|
||||
Logger.log("w", "Unknown button action for material diameter warning message: {action}".format(action = button))
|
21
cura/Settings/MaterialsModel.py
Normal file
21
cura/Settings/MaterialsModel.py
Normal file
@ -0,0 +1,21 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry #To listen for changes to the materials.
|
||||
from UM.Settings.Models.InstanceContainersModel import InstanceContainersModel #We're extending this class.
|
||||
|
||||
## A model that shows a list of currently valid materials.
|
||||
class MaterialsModel(InstanceContainersModel):
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
|
||||
ContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerMetaDataChanged)
|
||||
|
||||
## Called when the metadata of the container was changed.
|
||||
#
|
||||
# This makes sure that we only update when it was a material that changed.
|
||||
#
|
||||
# \param container The container whose metadata was changed.
|
||||
def _onContainerMetaDataChanged(self, container):
|
||||
if container.getMetaDataEntry("type") == "material": #Only need to update if a material was changed.
|
||||
self._update()
|
@ -1,6 +1,10 @@
|
||||
[2.6.1]
|
||||
*New profiles
|
||||
The Polypropylene material is added and supported with the Ultimaker 3. Support for CPE+ and PC with 0.8mm nozzles is added as well.
|
||||
|
||||
[2.6.0]
|
||||
*Cura versions
|
||||
Cura 2.6 beta has local version folders, which means the new version won’t overwrite the existing configuration and profiles from older versions, but can create a new folder instead. You can now safely check out new beta versions and, if necessary, start up an older version without the danger of losing your profiles.
|
||||
Cura 2.6 has local version folders, which means the new version won’t overwrite the existing configuration and profiles from older versions, but can create a new folder instead. You can now safely check out new beta versions and, if necessary, start up an older version without the danger of losing your profiles.
|
||||
|
||||
*Better support adhesion
|
||||
We’ve added extra support settings to allow the creation of improved support profiles with better PVA/PLA adhesion. The Support Interface settings, such as speed and density, are now split up into Support Roof and Support Floor settings.
|
||||
@ -9,7 +13,7 @@ We’ve added extra support settings to allow the creation of improved support p
|
||||
Custom third-party printers and Ultimaker modifications now have multi-extrusion support. Thanks to Aldo Hoeben for this feature.
|
||||
|
||||
*Model auto-arrange
|
||||
We’ve improved placing multiple models or multiplying the same ones, making it easier to arrange your build plate. If there’s not enough build plate space or the model is placed beyond the build plate, you can rectify this by selecting ‘Arrange all models’ in the context menu or by pressing Command+R (MacOS) or Ctrl+R (Windows and Linux). Cura 2.6 beta will then find a better solution for model positioning.
|
||||
We’ve improved placing multiple models or multiplying the same ones, making it easier to arrange your build plate. If there’s not enough build plate space or the model is placed beyond the build plate, you can rectify this by selecting ‘Arrange all models’ in the context menu or by pressing Command+R (MacOS) or Ctrl+R (Windows and Linux). Cura 2.6 will then find a better solution for model positioning.
|
||||
|
||||
*Gradual infill
|
||||
You can now find the Gradual Infill button in Recommended mode. This setting makes the infill concentrated near the top of the model – so that we can save time and material for the lower parts of the model. This functionality is especially useful when printing with flexible materials.
|
||||
@ -42,27 +46,16 @@ It’s a lot simpler to save and open files, and Cura will know if it’s a proj
|
||||
If you have a custom theme, you can now apply it more easily in the preferences screen.
|
||||
|
||||
*Time estimates per feature
|
||||
<<<<<<< HEAD
|
||||
You can hover over the print time estimate in the lower right corner to see how the printing time is divided over the printing features (walls, infill, etc.).
|
||||
=======
|
||||
You can hover over the print time estimate in the lower right corner to see how the printing time is divided over the printing features (walls, infill, etc.). Thanks to 14bitVoid for this feature.
|
||||
>>>>>>> 2.6
|
||||
|
||||
*Invert the direction of camera zoom
|
||||
We’ve added an option to invert mouse direction for a better user experience.
|
||||
|
||||
*Olsson block upgrade
|
||||
<<<<<<< HEAD
|
||||
Ultimaker 2 users can now specify if they have the Olsson block installed on their machine.
|
||||
|
||||
*OctoPrint plugin
|
||||
Cura 2.6 beta allows users to send prints to OctoPrint.
|
||||
=======
|
||||
Ultimaker 2 users can now specify if they have the Olsson block installed on their machine. Thanks to Aldo Hoeben for this feature.
|
||||
|
||||
*OctoPrint plugin
|
||||
Cura 2.6 beta allows users to send prints to OctoPrint. Thanks to Aldo Hoeben for this feature.
|
||||
>>>>>>> 2.6
|
||||
Cura 2.6 allows users to send prints to OctoPrint. Thanks to Aldo Hoeben for this feature.
|
||||
|
||||
*Bug fixes
|
||||
- Post Processing plugin
|
||||
|
@ -154,6 +154,8 @@ class StartSliceJob(Job):
|
||||
if stack.getProperty("machine_extruder_count", "value") > 1:
|
||||
for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(stack.getId()):
|
||||
self._buildExtruderMessage(extruder_stack)
|
||||
else:
|
||||
self._buildExtruderMessageFromGlobalStack(stack)
|
||||
|
||||
for group in object_groups:
|
||||
group_message = self._slice_message.addRepeatedMessage("object_lists")
|
||||
@ -215,7 +217,7 @@ class StartSliceJob(Job):
|
||||
|
||||
for key in stack.getAllKeys():
|
||||
# Do not send settings that are not settable_per_extruder.
|
||||
if stack.getProperty(key, "settable_per_extruder") == False:
|
||||
if not stack.getProperty(key, "settable_per_extruder"):
|
||||
continue
|
||||
setting = message.getMessage("settings").addRepeatedMessage("settings")
|
||||
setting.name = key
|
||||
@ -226,6 +228,19 @@ class StartSliceJob(Job):
|
||||
setting.value = str(stack.getProperty(key, "value")).encode("utf-8")
|
||||
Job.yieldThread()
|
||||
|
||||
## Create extruder message from global stack
|
||||
def _buildExtruderMessageFromGlobalStack(self, stack):
|
||||
message = self._slice_message.addRepeatedMessage("extruders")
|
||||
|
||||
for key in stack.getAllKeys():
|
||||
# Do not send settings that are not settable_per_extruder.
|
||||
if not stack.getProperty(key, "settable_per_extruder"):
|
||||
continue
|
||||
setting = message.getMessage("settings").addRepeatedMessage("settings")
|
||||
setting.name = key
|
||||
setting.value = str(stack.getProperty(key, "value")).encode("utf-8")
|
||||
Job.yieldThread()
|
||||
|
||||
## Sends all global settings to the engine.
|
||||
#
|
||||
# The settings are taken from the global stack. This does not include any
|
||||
|
@ -11,6 +11,7 @@ import Cura 1.0 as Cura
|
||||
|
||||
Item
|
||||
{
|
||||
id: base
|
||||
width: {
|
||||
if (UM.LayerView.compatibilityMode) {
|
||||
return UM.Theme.getSize("layerview_menu_size_compatibility").width;
|
||||
@ -25,8 +26,12 @@ Item
|
||||
return UM.Theme.getSize("layerview_menu_size").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height)
|
||||
}
|
||||
}
|
||||
property var buttonTarget: {
|
||||
var force_binding = parent.y; // ensure this gets reevaluated when the panel moves
|
||||
return base.mapFromItem(parent.parent, parent.buttonTarget.x, parent.buttonTarget.y);
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
UM.PointingRectangle {
|
||||
id: layerViewMenu
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
@ -35,6 +40,9 @@ Item
|
||||
z: slider.z - 1
|
||||
color: UM.Theme.getColor("tool_panel_background")
|
||||
|
||||
target: parent.buttonTarget
|
||||
arrowSize: UM.Theme.getSize("default_arrow").width
|
||||
|
||||
ColumnLayout {
|
||||
id: view_settings
|
||||
|
||||
|
@ -130,9 +130,9 @@ geometry41core =
|
||||
// fixed size for movements
|
||||
size_x = 0.05;
|
||||
} else {
|
||||
size_x = v_line_dim[0].x / 2 + 0.01; // radius, and make it nicely overlapping
|
||||
size_x = v_line_dim[1].x / 2 + 0.01; // radius, and make it nicely overlapping
|
||||
}
|
||||
size_y = v_line_dim[0].y / 2 + 0.01;
|
||||
size_y = v_line_dim[1].y / 2 + 0.01;
|
||||
|
||||
g_vertex_delta = gl_in[1].gl_Position - gl_in[0].gl_Position;
|
||||
g_vertex_normal_horz_head = normalize(vec3(-g_vertex_delta.x, -g_vertex_delta.y, -g_vertex_delta.z));
|
||||
|
201
plugins/PluginBrowser/PluginBrowser.py
Normal file
201
plugins/PluginBrowser/PluginBrowser.py
Normal file
@ -0,0 +1,201 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# PluginBrowser is released under the terms of the AGPLv3 or higher.
|
||||
from UM.Extension import Extension
|
||||
from UM.i18n import i18nCatalog
|
||||
from UM.Logger import Logger
|
||||
from UM.Qt.ListModel import ListModel
|
||||
from UM.PluginRegistry import PluginRegistry
|
||||
from UM.Application import Application
|
||||
from UM.Version import Version
|
||||
|
||||
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
|
||||
from PyQt5.QtCore import QUrl, QObject, Qt, pyqtProperty, pyqtSignal, pyqtSlot
|
||||
from PyQt5.QtQml import QQmlComponent, QQmlContext
|
||||
|
||||
import json
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
i18n_catalog = i18nCatalog("cura")
|
||||
|
||||
|
||||
class PluginBrowser(QObject, Extension):
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
self.addMenuItem(i18n_catalog.i18n("Browse plugins"), self.browsePlugins)
|
||||
self._api_version = 1
|
||||
self._api_url = "http://software.ultimaker.com/cura/v%s/" % self._api_version
|
||||
|
||||
self._plugin_list_request = None
|
||||
self._download_plugin_request = None
|
||||
|
||||
self._download_plugin_reply = None
|
||||
|
||||
self._network_manager = None
|
||||
|
||||
self._plugins_metadata = []
|
||||
self._plugins_model = None
|
||||
|
||||
self._qml_component = None
|
||||
self._qml_context = None
|
||||
self._dialog = None
|
||||
self._download_progress = 0
|
||||
|
||||
self._is_downloading = False
|
||||
|
||||
self._request_header = [b"User-Agent", str.encode("%s - %s" % (Application.getInstance().getApplicationName(), Application.getInstance().getVersion()))]
|
||||
|
||||
# Installed plugins are really installed after reboot. In order to prevent the user from downloading the
|
||||
# same file over and over again, we keep track of the upgraded plugins.
|
||||
self._newly_installed_plugin_ids = []
|
||||
|
||||
|
||||
pluginsMetadataChanged = pyqtSignal()
|
||||
onDownloadProgressChanged = pyqtSignal()
|
||||
onIsDownloadingChanged = pyqtSignal()
|
||||
|
||||
@pyqtProperty(bool, notify = onIsDownloadingChanged)
|
||||
def isDownloading(self):
|
||||
return self._is_downloading
|
||||
|
||||
def browsePlugins(self):
|
||||
self._createNetworkManager()
|
||||
self.requestPluginList()
|
||||
|
||||
if not self._dialog:
|
||||
self._createDialog()
|
||||
self._dialog.show()
|
||||
|
||||
def requestPluginList(self):
|
||||
url = QUrl(self._api_url + "plugins")
|
||||
self._plugin_list_request = QNetworkRequest(url)
|
||||
self._plugin_list_request.setRawHeader(*self._request_header)
|
||||
self._network_manager.get(self._plugin_list_request)
|
||||
|
||||
def _createDialog(self):
|
||||
Logger.log("d", "PluginBrowser")
|
||||
|
||||
path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "PluginBrowser.qml"))
|
||||
self._qml_component = QQmlComponent(Application.getInstance()._engine, path)
|
||||
|
||||
# We need access to engine (although technically we can't)
|
||||
self._qml_context = QQmlContext(Application.getInstance()._engine.rootContext())
|
||||
self._qml_context.setContextProperty("manager", self)
|
||||
self._dialog = self._qml_component.create(self._qml_context)
|
||||
if self._dialog is None:
|
||||
Logger.log("e", "QQmlComponent status %s", self._qml_component.status())
|
||||
Logger.log("e", "QQmlComponent errorString %s", self._qml_component.errorString())
|
||||
|
||||
def setIsDownloading(self, is_downloading):
|
||||
if self._is_downloading != is_downloading:
|
||||
self._is_downloading = is_downloading
|
||||
self.onIsDownloadingChanged.emit()
|
||||
|
||||
def _onDownloadPluginProgress(self, bytes_sent, bytes_total):
|
||||
if bytes_total > 0:
|
||||
new_progress = bytes_sent / bytes_total * 100
|
||||
if new_progress > self._download_progress:
|
||||
self._download_progress = new_progress
|
||||
self.onDownloadProgressChanged.emit()
|
||||
self._download_progress = new_progress
|
||||
if new_progress == 100.0:
|
||||
self.setIsDownloading(False)
|
||||
self._download_plugin_reply.downloadProgress.disconnect(self._onDownloadPluginProgress)
|
||||
self._temp_plugin_file = tempfile.NamedTemporaryFile(suffix = ".curaplugin")
|
||||
self._temp_plugin_file.write(self._download_plugin_reply.readAll())
|
||||
|
||||
result = PluginRegistry.getInstance().installPlugin("file://" + self._temp_plugin_file.name)
|
||||
|
||||
self._newly_installed_plugin_ids.append(result["id"])
|
||||
self.pluginsMetadataChanged.emit()
|
||||
|
||||
Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Plugin browser"), result["message"])
|
||||
|
||||
self._temp_plugin_file.close() # Plugin was installed, delete temp file
|
||||
|
||||
@pyqtProperty(int, notify = onDownloadProgressChanged)
|
||||
def downloadProgress(self):
|
||||
return self._download_progress
|
||||
|
||||
@pyqtSlot(str)
|
||||
def downloadAndInstallPlugin(self, url):
|
||||
Logger.log("i", "Attempting to download & install plugin from %s", url)
|
||||
url = QUrl(url)
|
||||
self._download_plugin_request = QNetworkRequest(url)
|
||||
self._download_plugin_request.setRawHeader(*self._request_header)
|
||||
self._download_plugin_reply = self._network_manager.get(self._download_plugin_request)
|
||||
self._download_progress = 0
|
||||
self.setIsDownloading(True)
|
||||
self.onDownloadProgressChanged.emit()
|
||||
self._download_plugin_reply.downloadProgress.connect(self._onDownloadPluginProgress)
|
||||
|
||||
@pyqtProperty(QObject, notify=pluginsMetadataChanged)
|
||||
def pluginsModel(self):
|
||||
if self._plugins_model is None:
|
||||
self._plugins_model = ListModel()
|
||||
self._plugins_model.addRoleName(Qt.UserRole + 1, "name")
|
||||
self._plugins_model.addRoleName(Qt.UserRole + 2, "version")
|
||||
self._plugins_model.addRoleName(Qt.UserRole + 3, "short_description")
|
||||
self._plugins_model.addRoleName(Qt.UserRole + 4, "author")
|
||||
self._plugins_model.addRoleName(Qt.UserRole + 5, "already_installed")
|
||||
self._plugins_model.addRoleName(Qt.UserRole + 6, "file_location")
|
||||
self._plugins_model.addRoleName(Qt.UserRole + 7, "can_upgrade")
|
||||
else:
|
||||
self._plugins_model.clear()
|
||||
items = []
|
||||
for metadata in self._plugins_metadata:
|
||||
items.append({
|
||||
"name": metadata["label"],
|
||||
"version": metadata["version"],
|
||||
"short_description": metadata["short_description"],
|
||||
"author": metadata["author"],
|
||||
"already_installed": self._checkAlreadyInstalled(metadata["id"]),
|
||||
"file_location": metadata["file_location"],
|
||||
"can_upgrade": self._checkCanUpgrade(metadata["id"], metadata["version"])
|
||||
})
|
||||
self._plugins_model.setItems(items)
|
||||
return self._plugins_model
|
||||
|
||||
def _checkCanUpgrade(self, id, version):
|
||||
plugin_registry = PluginRegistry.getInstance()
|
||||
metadata = plugin_registry.getMetaData(id)
|
||||
if metadata != {}:
|
||||
if id in self._newly_installed_plugin_ids:
|
||||
return False # We already updated this plugin.
|
||||
current_version = Version(metadata["plugin"]["version"])
|
||||
new_version = Version(version)
|
||||
if new_version > current_version:
|
||||
return True
|
||||
return False
|
||||
|
||||
def _checkAlreadyInstalled(self, id):
|
||||
plugin_registry = PluginRegistry.getInstance()
|
||||
metadata = plugin_registry.getMetaData(id)
|
||||
if metadata != {}:
|
||||
return True
|
||||
else:
|
||||
if id in self._newly_installed_plugin_ids:
|
||||
return True # We already installed this plugin, but the registry just doesn't know it yet.
|
||||
return False
|
||||
|
||||
def _onRequestFinished(self, reply):
|
||||
reply_url = reply.url().toString()
|
||||
if reply.operation() == QNetworkAccessManager.GetOperation:
|
||||
if reply_url == self._api_url + "plugins":
|
||||
try:
|
||||
json_data = json.loads(bytes(reply.readAll()).decode("utf-8"))
|
||||
self._plugins_metadata = json_data
|
||||
self.pluginsMetadataChanged.emit()
|
||||
except json.decoder.JSONDecodeError:
|
||||
Logger.log("w", "Received an invalid print job state message: Not valid JSON.")
|
||||
return
|
||||
else:
|
||||
# Ignore any operation that is not a get operation
|
||||
pass
|
||||
|
||||
def _createNetworkManager(self):
|
||||
if self._network_manager:
|
||||
self._network_manager.finished.disconnect(self._onRequestFinished)
|
||||
|
||||
self._network_manager = QNetworkAccessManager()
|
||||
self._network_manager.finished.connect(self._onRequestFinished)
|
105
plugins/PluginBrowser/PluginBrowser.qml
Normal file
105
plugins/PluginBrowser/PluginBrowser.qml
Normal file
@ -0,0 +1,105 @@
|
||||
import UM 1.1 as UM
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Dialogs 1.1
|
||||
import QtQuick.Window 2.2
|
||||
import QtQuick.Controls 1.1
|
||||
|
||||
UM.Dialog
|
||||
{
|
||||
id: base
|
||||
|
||||
title: catalog.i18nc("@title:window", "Find & Update plugins")
|
||||
width: 600
|
||||
height: 450
|
||||
Item
|
||||
{
|
||||
anchors.fill: parent
|
||||
Label
|
||||
{
|
||||
id: introText
|
||||
text: catalog.i18nc("@label", "Here you can find a list of Third Party plugins.")
|
||||
width: parent.width
|
||||
height: 30
|
||||
}
|
||||
ScrollView
|
||||
{
|
||||
width: parent.width
|
||||
anchors.top: introText.bottom
|
||||
anchors.bottom: progressbar.top
|
||||
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
|
||||
frameVisible: true
|
||||
ListView
|
||||
{
|
||||
id: pluginList
|
||||
model: manager.pluginsModel
|
||||
anchors.fill: parent
|
||||
|
||||
delegate: pluginDelegate
|
||||
}
|
||||
}
|
||||
ProgressBar
|
||||
{
|
||||
id: progressbar
|
||||
anchors.bottom: parent.bottom
|
||||
style: UM.Theme.styles.progressbar
|
||||
minimumValue: 0;
|
||||
maximumValue: 100
|
||||
width: parent.width
|
||||
height: 10
|
||||
value: manager.downloadProgress
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
SystemPalette { id: palette }
|
||||
Component
|
||||
{
|
||||
id: pluginDelegate
|
||||
Rectangle
|
||||
{
|
||||
width: pluginList.width;
|
||||
height: childrenRect.height;
|
||||
color: index % 2 ? palette.base : palette.alternateBase
|
||||
Column
|
||||
{
|
||||
width: parent.width
|
||||
height: childrenRect.height
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
anchors.right: downloadButton.left
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
Label
|
||||
{
|
||||
text: "<b>" + model.name + "</b> - " + model.author
|
||||
width: contentWidth
|
||||
height: contentHeight + UM.Theme.getSize("default_margin").height
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
text: model.short_description
|
||||
width: parent.width
|
||||
height: contentHeight + UM.Theme.getSize("default_margin").height
|
||||
wrapMode: Text.WordWrap
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
}
|
||||
Button
|
||||
{
|
||||
id: downloadButton
|
||||
text: !model.already_installed ? catalog.i18nc("@action:button", "Download") : model.can_upgrade ? catalog.i18nc("@action:button", "Upgrade") : catalog.i18nc("@action:button", "Download")
|
||||
onClicked: manager.downloadAndInstallPlugin(model.file_location)
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
enabled: (!model.already_installed || model.can_upgrade) && !manager.isDownloading
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
UM.I18nCatalog { id: catalog; name:"cura" }
|
||||
}
|
||||
}
|
12
plugins/PluginBrowser/__init__.py
Normal file
12
plugins/PluginBrowser/__init__.py
Normal file
@ -0,0 +1,12 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# PluginBrowser is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
from . import PluginBrowser
|
||||
|
||||
|
||||
def getMetaData():
|
||||
return {}
|
||||
|
||||
|
||||
def register(app):
|
||||
return {"extension": PluginBrowser.PluginBrowser()}
|
7
plugins/PluginBrowser/plugin.json
Normal file
7
plugins/PluginBrowser/plugin.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "Plugin Browser",
|
||||
"author": "Ultimaker",
|
||||
"version": "1.0.0",
|
||||
"api": 4,
|
||||
"description": "Find, manage and install new plugins."
|
||||
}
|
60
resources/definitions/dagoma_discoeasy200.def.json
Executable file
60
resources/definitions/dagoma_discoeasy200.def.json
Executable file
@ -0,0 +1,60 @@
|
||||
{
|
||||
"id": "Dagoma_discoeasy200",
|
||||
"name": "Dagoma DiscoEasy200",
|
||||
"version": 2,
|
||||
"inherits": "fdmprinter",
|
||||
"metadata": {
|
||||
"visible": true,
|
||||
"author": "Dagoma",
|
||||
"manufacturer": "Dagoma",
|
||||
"category": "Other",
|
||||
"file_formats": "text/x-gcode",
|
||||
"icon": "icon_ultimaker2.png",
|
||||
"platform": "discoeasy200.stl",
|
||||
"platform_offset": [ 105, -59, 280]
|
||||
},
|
||||
"overrides": {
|
||||
"machine_width": {
|
||||
"default_value": 211
|
||||
},
|
||||
"machine_height": {
|
||||
"default_value": 205
|
||||
},
|
||||
"machine_depth": {
|
||||
"default_value": 211
|
||||
},
|
||||
"machine_center_is_zero": {
|
||||
"default_value": false
|
||||
},
|
||||
"machine_nozzle_size": {
|
||||
"default_value": 0.4
|
||||
},
|
||||
"machine_head_with_fans_polygon": {
|
||||
"default_value": [
|
||||
[16, 37],
|
||||
[16, -65],
|
||||
[-16, -65],
|
||||
[16, 37]
|
||||
]
|
||||
},
|
||||
"machine_nozzle_gantry_distance": {
|
||||
"default_value": 55
|
||||
},
|
||||
"machine_nozzle_offset_x_1": {
|
||||
"default_value": 18
|
||||
},
|
||||
"machine_nozzle_offset_y_1": {
|
||||
"default_value": 0
|
||||
},
|
||||
"machine_gcode_flavor": {
|
||||
"default_value": "RepRap"
|
||||
},
|
||||
"machine_start_gcode": {
|
||||
"default_value": ";Gcode by Cura\nG90 ;absolute positioning\nM106 S250 ;fan on for the palpeur\nG28 X Y\nG1 X50\nM109 S180\nG28\nM104 S{print_temperature}\n;Activation palpeur\n;bloc palpeur\nG29 ;Auto level\nM107 ;start with the fan off\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{print_temperature}\nM140 S{material_bed_temperature}\nM82 ;set extruder to absolute mode\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Z3\nG1 F3000\n"
|
||||
},
|
||||
"machine_end_gcode": {
|
||||
"default_value": "\nM104 S0\nM106 S255 ;start fan full power\nM140 S0 ;heated bed heater off (if you have it)\n;Home machine\nG91 ;relative positioning\nG1 E-1 F{retraction_speed} ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+3 F3000 ;move Z up a bit and retract filament even more\nG90\nG28 X Y\n;Ventilation forcee\nM107 ;stop fan\n;Shut down motor\nM84 ;shut down motors\n"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,15 @@
|
||||
"settable_per_meshgroup": false,
|
||||
"settable_globally": false
|
||||
},
|
||||
"machine_nozzle_id":
|
||||
{
|
||||
"label": "Nozzle ID",
|
||||
"description": "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\".",
|
||||
"type": "str",
|
||||
"default_value": "unknown",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"machine_nozzle_size":
|
||||
{
|
||||
"label": "Nozzle Diameter",
|
||||
|
@ -407,6 +407,15 @@
|
||||
"settable_per_extruder": false,
|
||||
"settable_per_meshgroup": false
|
||||
},
|
||||
"machine_nozzle_id":
|
||||
{
|
||||
"label": "Nozzle ID",
|
||||
"description": "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\".",
|
||||
"type": "str",
|
||||
"default_value": "unknown",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"machine_nozzle_size":
|
||||
{
|
||||
"label": "Nozzle Diameter",
|
||||
|
@ -8,183 +8,184 @@ msgstr ""
|
||||
"Project-Id-Version: Cura 2.6\n"
|
||||
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
|
||||
"POT-Creation-Date: 2017-05-30 15:32+0000\n"
|
||||
"PO-Revision-Date: 2017-03-27 17:27+0000\n"
|
||||
"PO-Revision-Date: 2017-06-19 17:36+0900\n"
|
||||
"Last-Translator: None\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: Korean\n"
|
||||
"Language: ko\n"
|
||||
"Lang-Code: ko\n"
|
||||
"Country-Code: KR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Poedit 2.0.1\n"
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_settings label"
|
||||
msgid "Machine"
|
||||
msgstr ""
|
||||
msgstr "장비 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_settings description"
|
||||
msgid "Machine specific settings"
|
||||
msgstr ""
|
||||
msgstr "장비 별 설정 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "extruder_nr label"
|
||||
msgid "Extruder"
|
||||
msgstr ""
|
||||
msgstr "압출기 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "extruder_nr description"
|
||||
msgid "The extruder train used for printing. This is used in multi-extrusion."
|
||||
msgstr ""
|
||||
msgstr "인쇄에 사용되는 압출기 트레인. 이것은 다중 압출에 사용됩니다. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_nozzle_size label"
|
||||
msgid "Nozzle Diameter"
|
||||
msgstr ""
|
||||
msgstr "노즐 지름"
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_nozzle_size description"
|
||||
msgid "The inner diameter of the nozzle. Change this setting when using a non-standard nozzle size."
|
||||
msgstr ""
|
||||
msgstr "노즐의 내경. 비표준 노즐 크기를 사용할 때, 본 설정을 변경하십시오. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_nozzle_offset_x label"
|
||||
msgid "Nozzle X Offset"
|
||||
msgstr ""
|
||||
msgstr "노즐 X 오프셋 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_nozzle_offset_x description"
|
||||
msgid "The x-coordinate of the offset of the nozzle."
|
||||
msgstr ""
|
||||
msgstr "노즐 오프셋의 x 좌표입니다. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_nozzle_offset_y label"
|
||||
msgid "Nozzle Y Offset"
|
||||
msgstr ""
|
||||
msgstr "노즐 Y 오프셋"
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_nozzle_offset_y description"
|
||||
msgid "The y-coordinate of the offset of the nozzle."
|
||||
msgstr ""
|
||||
msgstr "노즐 오프셋의 y 좌표입니다. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_start_code label"
|
||||
msgid "Extruder Start G-Code"
|
||||
msgstr ""
|
||||
msgstr "압출기 시작 G 코드"
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_start_code description"
|
||||
msgid "Start g-code to execute whenever turning the extruder on."
|
||||
msgstr ""
|
||||
msgstr "압출기를 켤 때마다 실행할 g 코드를 시작하십시오. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_start_pos_abs label"
|
||||
msgid "Extruder Start Position Absolute"
|
||||
msgstr ""
|
||||
msgstr "압출기 시작 위치의 절대 값 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_start_pos_abs description"
|
||||
msgid "Make the extruder starting position absolute rather than relative to the last-known location of the head."
|
||||
msgstr ""
|
||||
msgstr "압출기 시작 위치를 헤드의 마지막으로 알려진 위치에 상대적이 아닌 절대 위치로 만듭니다."
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_start_pos_x label"
|
||||
msgid "Extruder Start Position X"
|
||||
msgstr ""
|
||||
msgstr "압출기 시작 X의 위치 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_start_pos_x description"
|
||||
msgid "The x-coordinate of the starting position when turning the extruder on."
|
||||
msgstr ""
|
||||
msgstr "압출기를 켤 때 시작 위치의 x 좌표. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_start_pos_y label"
|
||||
msgid "Extruder Start Position Y"
|
||||
msgstr ""
|
||||
msgstr "압출기 시작 위치 Y "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_start_pos_y description"
|
||||
msgid "The y-coordinate of the starting position when turning the extruder on."
|
||||
msgstr ""
|
||||
msgstr "압출기를 켤 때 시작 위치의 y 좌표입니다. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_end_code label"
|
||||
msgid "Extruder End G-Code"
|
||||
msgstr ""
|
||||
msgstr "압출기 최종 G 코드 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_end_code description"
|
||||
msgid "End g-code to execute whenever turning the extruder off."
|
||||
msgstr ""
|
||||
msgstr "압출기를 끌 때마다 실행할 g 코드를 종료하십시오. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_end_pos_abs label"
|
||||
msgid "Extruder End Position Absolute"
|
||||
msgstr ""
|
||||
msgstr "압출기 끝 절대 위치 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_end_pos_abs description"
|
||||
msgid "Make the extruder ending position absolute rather than relative to the last-known location of the head."
|
||||
msgstr ""
|
||||
msgstr "압출 성형기가 헤드의 마지막으로 알려진 위치에 상대적이 아닌 절대 위치로 끝나도록하십시오. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_end_pos_x label"
|
||||
msgid "Extruder End Position X"
|
||||
msgstr ""
|
||||
msgstr "압출기 끝 X 위치 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_end_pos_x description"
|
||||
msgid "The x-coordinate of the ending position when turning the extruder off."
|
||||
msgstr ""
|
||||
msgstr "압출기를 끌 때 끝 위치의 x 좌표."
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_end_pos_y label"
|
||||
msgid "Extruder End Position Y"
|
||||
msgstr ""
|
||||
msgstr "압출기 끝 Y 위치 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "machine_extruder_end_pos_y description"
|
||||
msgid "The y-coordinate of the ending position when turning the extruder off."
|
||||
msgstr ""
|
||||
msgstr "압출기를 끌 때 종료 위치의 y 좌표입니다. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "extruder_prime_pos_z label"
|
||||
msgid "Extruder Prime Z Position"
|
||||
msgstr ""
|
||||
msgstr "압출기 프라임 Z 위치 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "extruder_prime_pos_z description"
|
||||
msgid "The Z coordinate of the position where the nozzle primes at the start of printing."
|
||||
msgstr ""
|
||||
msgstr "인쇄가 시작될 때 노즐이 끝나는 위치의 Z 좌표입니다. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "platform_adhesion label"
|
||||
msgid "Build Plate Adhesion"
|
||||
msgstr ""
|
||||
msgstr "플레이트 접착력 강화 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "platform_adhesion description"
|
||||
msgid "Adhesion"
|
||||
msgstr ""
|
||||
msgstr "부착 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "extruder_prime_pos_x label"
|
||||
msgid "Extruder Prime X Position"
|
||||
msgstr ""
|
||||
msgstr "압출기 프라임 X 위치 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "extruder_prime_pos_x description"
|
||||
msgid "The X coordinate of the position where the nozzle primes at the start of printing."
|
||||
msgstr ""
|
||||
msgstr "인쇄가 시작될 때 노즐이 끝내는 위치의 X 좌표입니다. "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "extruder_prime_pos_y label"
|
||||
msgid "Extruder Prime Y Position"
|
||||
msgstr ""
|
||||
msgstr "압출기 프라임 Y 위치 "
|
||||
|
||||
#: fdmextruder.def.json
|
||||
msgctxt "extruder_prime_pos_y description"
|
||||
msgid "The Y coordinate of the position where the nozzle primes at the start of printing."
|
||||
msgstr ""
|
||||
msgstr "인쇄가 시작될 때 노즐이 끝내는 위치의 Y 좌표입니다. "
|
||||
|
File diff suppressed because it is too large
Load Diff
BIN
resources/meshes/discoeasy200.stl
Normal file
BIN
resources/meshes/discoeasy200.stl
Normal file
Binary file not shown.
@ -306,9 +306,14 @@ UM.MainWindow
|
||||
{
|
||||
id: view_panel
|
||||
|
||||
anchors.top: viewModeButton.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height;
|
||||
property bool hugBottom: parent.height < viewModeButton.y + viewModeButton.height + height + UM.Theme.getSize("default_margin").height
|
||||
|
||||
anchors.bottom: parent.bottom // panel is always anchored to the bottom only, because dynamically switching between bottom and top results in stretching the height
|
||||
anchors.bottomMargin: hugBottom ? 0 : parent.height - (viewModeButton.y + viewModeButton.height + height + UM.Theme.getSize("default_margin").height)
|
||||
anchors.left: viewModeButton.left;
|
||||
anchors.leftMargin: hugBottom ? viewModeButton.width + UM.Theme.getSize("default_margin").width : 0
|
||||
|
||||
property var buttonTarget: Qt.point(viewModeButton.x + viewModeButton.width / 2, viewModeButton.y + viewModeButton.height / 2)
|
||||
|
||||
height: childrenRect.height;
|
||||
|
||||
|
@ -153,7 +153,7 @@ UM.PreferencesPage
|
||||
append({ text: "Français", code: "fr" })
|
||||
append({ text: "Italiano", code: "it" })
|
||||
append({ text: "日本語", code: "jp" })
|
||||
//append({ text: "한국어", code: "ko" })
|
||||
append({ text: "한국어", code: "ko" })
|
||||
append({ text: "Nederlands", code: "nl" })
|
||||
append({ text: "Português do Brasil", code: "ptbr" })
|
||||
append({ text: "Русский", code: "ru" })
|
||||
@ -237,6 +237,7 @@ UM.PreferencesPage
|
||||
return i
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
onActivated: UM.Preferences.setValue("general/theme", model.get(index).code)
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Copyright (c) 2016 Ultimaker B.V.
|
||||
// Uranium is released under the terms of the AGPLv3 or higher.
|
||||
// Copyright (c) 2017 Ultimaker B.V.
|
||||
// Cura is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.1
|
||||
import QtQuick.Controls 1.3
|
||||
@ -168,8 +168,13 @@ TabView
|
||||
{
|
||||
// This does not use a SettingPropertyProvider, because we need to make the change to all containers
|
||||
// which derive from the same base_file
|
||||
var old_diameter = Cura.ContainerManager.getContainerProperty(base.containerId, "material_diameter", "value").toString();
|
||||
base.setMetaDataEntry("approximate_diameter", properties.approximate_diameter, Math.round(value).toString());
|
||||
base.setMetaDataEntry("properties/diameter", properties.diameter, value);
|
||||
if (Cura.MachineManager.filterMaterialsByMachine && properties.approximate_diameter != Cura.MachineManager.activeMachine.approximateMaterialDiameter)
|
||||
{
|
||||
Cura.MaterialManager.showMaterialWarningMessage(base.containerId, old_diameter);
|
||||
}
|
||||
Cura.ContainerManager.setContainerProperty(base.containerId, "material_diameter", "value", value);
|
||||
}
|
||||
onValueChanged: updateCostPerMeter()
|
||||
|
@ -20,7 +20,7 @@ UM.ManagementPage
|
||||
objectList.positionViewAtBeginning();
|
||||
}
|
||||
|
||||
model: UM.InstanceContainersModel
|
||||
model: Cura.MaterialsModel
|
||||
{
|
||||
filter:
|
||||
{
|
||||
|
@ -320,7 +320,17 @@ Column
|
||||
Rectangle //Input field for pre-heat temperature.
|
||||
{
|
||||
id: preheatTemperatureControl
|
||||
color: !enabled ? UM.Theme.getColor("setting_control_disabled") : UM.Theme.getColor("setting_validation_ok")
|
||||
color: !enabled ? UM.Theme.getColor("setting_control_disabled") : showError ? UM.Theme.getColor("setting_validation_error") : UM.Theme.getColor("setting_validation_ok")
|
||||
property var showError:
|
||||
{
|
||||
if(bedTemperature.properties.maximum_value != "None" && bedTemperature.properties.maximum_value < parseInt(preheatTemperatureInput.text))
|
||||
{
|
||||
return true;
|
||||
} else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
enabled:
|
||||
{
|
||||
if (connectedPrinter == null)
|
||||
|
@ -14,10 +14,14 @@ Button {
|
||||
|
||||
style: UM.Theme.styles.sidebar_category;
|
||||
|
||||
signal showTooltip(string text);
|
||||
signal hideTooltip();
|
||||
signal showTooltip(string text)
|
||||
signal hideTooltip()
|
||||
signal contextMenuRequested()
|
||||
signal showAllHiddenInheritedSettings(string category_id)
|
||||
signal focusReceived()
|
||||
signal setActiveFocusToNextSetting(bool forward)
|
||||
|
||||
property var focusItem: base
|
||||
|
||||
text: definition.label
|
||||
iconSource: UM.Theme.getIcon(definition.icon)
|
||||
@ -25,7 +29,33 @@ Button {
|
||||
checkable: true
|
||||
checked: definition.expanded
|
||||
|
||||
onClicked: { forceActiveFocus(); definition.expanded ? settingDefinitionsModel.collapse(definition.key) : settingDefinitionsModel.expandAll(definition.key) }
|
||||
onClicked:
|
||||
{
|
||||
forceActiveFocus();
|
||||
if(definition.expanded)
|
||||
{
|
||||
settingDefinitionsModel.collapse(definition.key);
|
||||
} else {
|
||||
settingDefinitionsModel.expandAll(definition.key);
|
||||
}
|
||||
}
|
||||
onActiveFocusChanged:
|
||||
{
|
||||
if(activeFocus)
|
||||
{
|
||||
base.focusReceived();
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onTabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(true)
|
||||
}
|
||||
Keys.onBacktabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(false)
|
||||
}
|
||||
|
||||
UM.SimpleButton
|
||||
{
|
||||
id: settingsButton
|
||||
|
@ -11,6 +11,7 @@ import UM 1.2 as UM
|
||||
SettingItem
|
||||
{
|
||||
id: base
|
||||
property var focusItem: control
|
||||
|
||||
contents: MouseArea
|
||||
{
|
||||
@ -49,12 +50,35 @@ SettingItem
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onSpacePressed:
|
||||
{
|
||||
forceActiveFocus();
|
||||
propertyProvider.setPropertyValue("value", !checked);
|
||||
}
|
||||
|
||||
onClicked:
|
||||
{
|
||||
forceActiveFocus();
|
||||
propertyProvider.setPropertyValue("value", !checked);
|
||||
}
|
||||
|
||||
Keys.onTabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(true)
|
||||
}
|
||||
Keys.onBacktabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(false)
|
||||
}
|
||||
|
||||
onActiveFocusChanged:
|
||||
{
|
||||
if(activeFocus)
|
||||
{
|
||||
base.focusReceived();
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle
|
||||
{
|
||||
anchors
|
||||
@ -67,7 +91,7 @@ SettingItem
|
||||
|
||||
color:
|
||||
{
|
||||
if (!enabled)
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled")
|
||||
}
|
||||
@ -75,14 +99,22 @@ SettingItem
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_highlight")
|
||||
}
|
||||
else
|
||||
{
|
||||
return UM.Theme.getColor("setting_control")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control")
|
||||
}
|
||||
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control.containsMouse ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border")
|
||||
border.color:
|
||||
{
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
if(control.containsMouse || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
|
||||
UM.RecolorImage {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
@ -10,6 +10,7 @@ import UM 1.1 as UM
|
||||
SettingItem
|
||||
{
|
||||
id: base
|
||||
property var focusItem: control
|
||||
|
||||
contents: ComboBox
|
||||
{
|
||||
@ -33,21 +34,29 @@ SettingItem
|
||||
{
|
||||
color:
|
||||
{
|
||||
if (!enabled)
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled")
|
||||
}
|
||||
if(control.hovered || base.activeFocus)
|
||||
if(control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_highlight")
|
||||
}
|
||||
else
|
||||
{
|
||||
return UM.Theme.getColor("setting_control")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control")
|
||||
}
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color:
|
||||
{
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
if(control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
border.width: UM.Theme.getSize("default_lining").width;
|
||||
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control.hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border");
|
||||
}
|
||||
label: Item
|
||||
{
|
||||
@ -86,7 +95,28 @@ SettingItem
|
||||
}
|
||||
}
|
||||
|
||||
onActivated: { forceActiveFocus(); propertyProvider.setPropertyValue("value", definition.options[index].key) }
|
||||
onActivated:
|
||||
{
|
||||
forceActiveFocus();
|
||||
propertyProvider.setPropertyValue("value", definition.options[index].key);
|
||||
}
|
||||
|
||||
onActiveFocusChanged:
|
||||
{
|
||||
if(activeFocus)
|
||||
{
|
||||
base.focusReceived();
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onTabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(true)
|
||||
}
|
||||
Keys.onBacktabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(false)
|
||||
}
|
||||
|
||||
Binding
|
||||
{
|
||||
|
@ -11,6 +11,7 @@ import Cura 1.0 as Cura
|
||||
SettingItem
|
||||
{
|
||||
id: base
|
||||
property var focusItem: control
|
||||
|
||||
contents: ComboBox
|
||||
{
|
||||
@ -27,6 +28,23 @@ SettingItem
|
||||
propertyProvider.setPropertyValue("value", model.getItem(index).index);
|
||||
}
|
||||
|
||||
onActiveFocusChanged:
|
||||
{
|
||||
if(activeFocus)
|
||||
{
|
||||
base.focusReceived();
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onTabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(true)
|
||||
}
|
||||
Keys.onBacktabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(false)
|
||||
}
|
||||
|
||||
currentIndex: propertyProvider.properties.value
|
||||
|
||||
MouseArea
|
||||
@ -53,7 +71,7 @@ SettingItem
|
||||
{
|
||||
color:
|
||||
{
|
||||
if (!enabled)
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled");
|
||||
}
|
||||
@ -61,23 +79,19 @@ SettingItem
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_highlight");
|
||||
}
|
||||
else
|
||||
{
|
||||
return UM.Theme.getColor("setting_control");
|
||||
}
|
||||
return UM.Theme.getColor("setting_control");
|
||||
}
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color:
|
||||
{
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border");
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
if(control.hovered || base.activeFocus)
|
||||
if(control.hovered || control.activeFocus)
|
||||
{
|
||||
UM.Theme.getColor("setting_control_border_highlight")
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
}
|
||||
|
@ -32,9 +32,11 @@ Item {
|
||||
property var stackLevels: propertyProvider.stackLevels
|
||||
property var stackLevel: stackLevels[0]
|
||||
|
||||
signal focusReceived()
|
||||
signal setActiveFocusToNextSetting(bool forward)
|
||||
signal contextMenuRequested()
|
||||
signal showTooltip(string text);
|
||||
signal hideTooltip();
|
||||
signal showTooltip(string text)
|
||||
signal hideTooltip()
|
||||
signal showAllHiddenInheritedSettings(string category_id)
|
||||
property string tooltipText:
|
||||
{
|
||||
|
@ -11,6 +11,7 @@ import Cura 1.0 as Cura
|
||||
SettingItem
|
||||
{
|
||||
id: base
|
||||
property var focusItem: control
|
||||
|
||||
contents: ComboBox
|
||||
{
|
||||
@ -31,6 +32,23 @@ SettingItem
|
||||
propertyProvider.setPropertyValue("value", model.getItem(index).index);
|
||||
}
|
||||
|
||||
onActiveFocusChanged:
|
||||
{
|
||||
if(activeFocus)
|
||||
{
|
||||
base.focusReceived();
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onTabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(true)
|
||||
}
|
||||
Keys.onBacktabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(false)
|
||||
}
|
||||
|
||||
Binding
|
||||
{
|
||||
target: control
|
||||
@ -72,31 +90,27 @@ SettingItem
|
||||
{
|
||||
color:
|
||||
{
|
||||
if (!enabled)
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled");
|
||||
}
|
||||
if(control.hovered || base.activeFocus)
|
||||
if(control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_highlight");
|
||||
}
|
||||
else
|
||||
{
|
||||
return UM.Theme.getColor("setting_control");
|
||||
}
|
||||
return UM.Theme.getColor("setting_control");
|
||||
}
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color:
|
||||
{
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border");
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
if(control.hovered || base.activeFocus)
|
||||
if(control.hovered || control.activeFocus)
|
||||
{
|
||||
UM.Theme.getColor("setting_control_border_highlight")
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import UM 1.1 as UM
|
||||
SettingItem
|
||||
{
|
||||
id: base
|
||||
property var focusItem: input
|
||||
|
||||
contents: Rectangle
|
||||
{
|
||||
@ -17,10 +18,21 @@ SettingItem
|
||||
anchors.fill: parent
|
||||
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border")
|
||||
border.color:
|
||||
{
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
if(hovered || input.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
|
||||
color: {
|
||||
if (!enabled)
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled")
|
||||
}
|
||||
@ -83,6 +95,15 @@ SettingItem
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Keys.onTabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(true)
|
||||
}
|
||||
Keys.onBacktabPressed:
|
||||
{
|
||||
base.setActiveFocusToNextSetting(false)
|
||||
}
|
||||
|
||||
Keys.onReleased:
|
||||
{
|
||||
propertyProvider.setPropertyValue("value", text)
|
||||
@ -93,6 +114,14 @@ SettingItem
|
||||
propertyProvider.setPropertyValue("value", text)
|
||||
}
|
||||
|
||||
onActiveFocusChanged:
|
||||
{
|
||||
if(activeFocus)
|
||||
{
|
||||
base.focusReceived();
|
||||
}
|
||||
}
|
||||
|
||||
color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text")
|
||||
font: UM.Theme.getFont("default");
|
||||
|
||||
|
@ -168,6 +168,8 @@ Item
|
||||
onVisibilityChanged: Cura.SettingInheritanceManager.forceUpdate()
|
||||
}
|
||||
|
||||
property var indexWithFocus: -1
|
||||
|
||||
delegate: Loader
|
||||
{
|
||||
id: delegate
|
||||
@ -298,11 +300,53 @@ Item
|
||||
}
|
||||
Cura.SettingInheritanceManager.manualRemoveOverride(category_id)
|
||||
}
|
||||
onFocusReceived:
|
||||
{
|
||||
contents.indexWithFocus = index;
|
||||
animateContentY.from = contents.contentY;
|
||||
contents.positionViewAtIndex(index, ListView.Contain);
|
||||
animateContentY.to = contents.contentY;
|
||||
animateContentY.running = true;
|
||||
}
|
||||
onSetActiveFocusToNextSetting:
|
||||
{
|
||||
if(forward == undefined || forward)
|
||||
{
|
||||
contents.currentIndex = contents.indexWithFocus + 1;
|
||||
while(contents.currentItem && contents.currentItem.height <= 0)
|
||||
{
|
||||
contents.currentIndex++;
|
||||
}
|
||||
if(contents.currentItem)
|
||||
{
|
||||
contents.currentItem.item.focusItem.forceActiveFocus();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
contents.currentIndex = contents.indexWithFocus - 1;
|
||||
while(contents.currentItem && contents.currentItem.height <= 0)
|
||||
{
|
||||
contents.currentIndex--;
|
||||
}
|
||||
if(contents.currentItem)
|
||||
{
|
||||
contents.currentItem.item.focusItem.forceActiveFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
|
||||
NumberAnimation {
|
||||
id: animateContentY
|
||||
target: contents
|
||||
property: "contentY"
|
||||
duration: 50
|
||||
}
|
||||
|
||||
add: Transition {
|
||||
SequentialAnimation {
|
||||
NumberAnimation { properties: "height"; from: 0; duration: 100 }
|
||||
|
76
resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg
Normal file
76
resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg
Normal file
@ -0,0 +1,76 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Normal
|
||||
definition = ultimaker2_plus
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
material = generic_polypropylene_ultimaker2_plus_0.4_mm
|
||||
weight = -1
|
||||
quality_type = fast
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_layer_0 = =acceleration_topbottom
|
||||
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_print = 4000
|
||||
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_support_interface = =acceleration_topbottom
|
||||
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
|
||||
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
|
||||
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
|
||||
brim_width = 20
|
||||
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 20
|
||||
gradual_infill_step_height = =layer_height * 2
|
||||
gradual_infill_steps = 3
|
||||
infill_line_width = =round(line_width * 0.4 / 0.38, 2)
|
||||
infill_overlap = 0
|
||||
infill_pattern = cubic
|
||||
infill_sparse_density = 96
|
||||
infill_wipe_dist = 0
|
||||
jerk_enabled = True
|
||||
jerk_layer_0 = =jerk_topbottom
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_print = 25
|
||||
jerk_support = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_support_interface = =jerk_topbottom
|
||||
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
|
||||
jerk_wall = =math.ceil(jerk_print * 10 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
|
||||
layer_height = 0.15
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
multiple_mesh_overlap = 0
|
||||
retraction_count_max = 12
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 0.15
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.5
|
||||
retraction_prime_speed = 15
|
||||
skin_overlap = 10
|
||||
speed_layer_0 = 25
|
||||
speed_prime_tower = =speed_topbottom
|
||||
speed_print = 25
|
||||
speed_support_interface = =speed_topbottom
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 250
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 20 / 25)
|
||||
support_angle = 60
|
||||
support_bottom_distance = =support_z_distance / 2
|
||||
support_top_distance = =support_z_distance
|
||||
support_xy_distance = =wall_line_width_0 * 2.5
|
||||
support_xy_distance_overhang = =wall_line_width_0
|
||||
support_z_distance = =layer_height * 2
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =round(line_width * 0.38 / 0.38, 2)
|
||||
wall_thickness = 0.76
|
@ -0,0 +1,75 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Fine
|
||||
definition = ultimaker2_plus
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
material = generic_polypropylene_ultimaker2_plus_0.4_mm
|
||||
weight = 0
|
||||
quality_type = normal
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_layer_0 = =acceleration_topbottom
|
||||
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_print = 4000
|
||||
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_support_interface = =acceleration_topbottom
|
||||
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
|
||||
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
|
||||
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
|
||||
brim_width = 20
|
||||
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 20
|
||||
gradual_infill_step_height = =layer_height * 2
|
||||
gradual_infill_steps = 3
|
||||
infill_line_width = =round(line_width * 0.4 / 0.38, 2)
|
||||
infill_overlap = 0
|
||||
infill_pattern = cubic
|
||||
infill_sparse_density = 96
|
||||
infill_wipe_dist = 0
|
||||
jerk_enabled = True
|
||||
jerk_layer_0 = =jerk_topbottom
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_print = 25
|
||||
jerk_support = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_support_interface = =jerk_topbottom
|
||||
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
|
||||
jerk_wall = =math.ceil(jerk_print * 10 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
multiple_mesh_overlap = 0
|
||||
retraction_count_max = 12
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 0.15
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.5
|
||||
retraction_prime_speed = 15
|
||||
skin_overlap = 10
|
||||
speed_layer_0 = 25
|
||||
speed_prime_tower = =speed_topbottom
|
||||
speed_print = 25
|
||||
speed_support_interface = =speed_topbottom
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 250
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 20 / 25)
|
||||
support_angle = 60
|
||||
support_bottom_distance = =support_z_distance / 2
|
||||
support_top_distance = =support_z_distance
|
||||
support_xy_distance = =wall_line_width_0 * 2.5
|
||||
support_xy_distance_overhang = =wall_line_width_0
|
||||
support_z_distance = =layer_height * 2
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =round(line_width * 0.38 / 0.38, 2)
|
||||
wall_thickness = 0.76
|
79
resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg
Normal file
79
resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg
Normal file
@ -0,0 +1,79 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Fast
|
||||
definition = ultimaker2_plus
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
material = generic_polypropylene_ultimaker2_plus_0.6_mm
|
||||
weight = -2
|
||||
quality_type = draft
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_layer_0 = =acceleration_topbottom
|
||||
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_print = 4000
|
||||
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_support_interface = =acceleration_topbottom
|
||||
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
|
||||
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
|
||||
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
|
||||
brim_width = 20
|
||||
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 20
|
||||
gradual_infill_step_height = =layer_height * 2
|
||||
gradual_infill_steps = 3
|
||||
infill_line_width = =round(line_width * 0.6 / 0.57, 2)
|
||||
infill_overlap = 0
|
||||
infill_overlap_mm = 0
|
||||
infill_pattern = cubic
|
||||
infill_sparse_density = 96
|
||||
infill_wipe_dist = 0
|
||||
jerk_enabled = True
|
||||
jerk_layer_0 = =jerk_topbottom
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_print = 25
|
||||
jerk_support = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_support_interface = =jerk_topbottom
|
||||
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
|
||||
jerk_wall = =math.ceil(jerk_print * 10 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
|
||||
layer_height = 0.2
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
multiple_mesh_overlap = 0
|
||||
retraction_count_max = 12
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 0.15
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.5
|
||||
retraction_prime_speed = 15
|
||||
skin_overlap = 10
|
||||
skirt_brim_line_width = 0.6
|
||||
speed_layer_0 = 25
|
||||
speed_prime_tower = =speed_topbottom
|
||||
speed_print = 25
|
||||
speed_support_interface = =speed_topbottom
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 250
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 20 / 25)
|
||||
support_angle = 60
|
||||
support_bottom_distance = =support_z_distance / 2
|
||||
support_top_distance = =support_z_distance
|
||||
support_xy_distance = =wall_line_width_0 * 2.5
|
||||
support_xy_distance_overhang = =wall_line_width_0
|
||||
support_z_distance = =layer_height * 2
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 1.1
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =round(line_width * 0.57 / 0.57, 2)
|
||||
wall_thickness = 1.14
|
79
resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg
Normal file
79
resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg
Normal file
@ -0,0 +1,79 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Normal
|
||||
definition = ultimaker2_plus
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
material = generic_polypropylene_ultimaker2_plus_0.6_mm
|
||||
weight = -1
|
||||
quality_type = fast
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_layer_0 = =acceleration_topbottom
|
||||
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_print = 4000
|
||||
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_support_interface = =acceleration_topbottom
|
||||
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
|
||||
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
|
||||
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
|
||||
brim_width = 20
|
||||
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 20
|
||||
gradual_infill_step_height = =layer_height * 2
|
||||
gradual_infill_steps = 3
|
||||
infill_line_width = =round(line_width * 0.6 / 0.57, 2)
|
||||
infill_overlap = 0
|
||||
infill_overlap_mm = 0
|
||||
infill_pattern = cubic
|
||||
infill_sparse_density = 96
|
||||
infill_wipe_dist = 0
|
||||
jerk_enabled = True
|
||||
jerk_layer_0 = =jerk_topbottom
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_print = 25
|
||||
jerk_support = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_support_interface = =jerk_topbottom
|
||||
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
|
||||
jerk_wall = =math.ceil(jerk_print * 10 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
|
||||
layer_height = 0.15
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
multiple_mesh_overlap = 0
|
||||
retraction_count_max = 12
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 0.15
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.5
|
||||
retraction_prime_speed = 15
|
||||
skin_overlap = 10
|
||||
skirt_brim_line_width = 0.6
|
||||
speed_layer_0 = 25
|
||||
speed_prime_tower = =speed_topbottom
|
||||
speed_print = 25
|
||||
speed_support_interface = =speed_topbottom
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 250
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 20 / 25)
|
||||
support_angle = 60
|
||||
support_bottom_distance = =support_z_distance / 2
|
||||
support_top_distance = =support_z_distance
|
||||
support_xy_distance = =wall_line_width_0 * 2.5
|
||||
support_xy_distance_overhang = =wall_line_width_0
|
||||
support_z_distance = =layer_height * 2
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 1.1
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =round(line_width * 0.57 / 0.57, 2)
|
||||
wall_thickness = 1.14
|
79
resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg
Normal file
79
resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg
Normal file
@ -0,0 +1,79 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Fast
|
||||
definition = ultimaker2_plus
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
material = generic_polypropylene_ultimaker2_plus_0.8_mm
|
||||
weight = -2
|
||||
quality_type = fast
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_layer_0 = =acceleration_topbottom
|
||||
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_print = 4000
|
||||
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_support_interface = =acceleration_topbottom
|
||||
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
|
||||
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
|
||||
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
|
||||
brim_width = 20
|
||||
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 20
|
||||
gradual_infill_step_height = =layer_height * 3
|
||||
gradual_infill_steps = 3
|
||||
infill_line_width = =round(line_width * 0.8 / 0.76, 2)
|
||||
infill_overlap = 0
|
||||
infill_overlap_mm = 0
|
||||
infill_pattern = cubic
|
||||
infill_sparse_density = 96
|
||||
infill_wipe_dist = 0
|
||||
jerk_enabled = True
|
||||
jerk_layer_0 = =jerk_topbottom
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_print = 25
|
||||
jerk_support = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_support_interface = =jerk_topbottom
|
||||
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
|
||||
jerk_wall = =math.ceil(jerk_print * 10 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
|
||||
layer_height = 0.2
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
multiple_mesh_overlap = 0
|
||||
retraction_count_max = 12
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 0.15
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.5
|
||||
retraction_prime_speed = 15
|
||||
skin_overlap = 10
|
||||
skirt_brim_line_width = 0.8
|
||||
speed_layer_0 = 25
|
||||
speed_prime_tower = =speed_topbottom
|
||||
speed_print = 25
|
||||
speed_support_interface = =speed_topbottom
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 250
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 20 / 25)
|
||||
support_angle = 60
|
||||
support_bottom_distance = =support_z_distance / 2
|
||||
support_top_distance = =support_z_distance
|
||||
support_xy_distance = =wall_line_width_0 * 2.5
|
||||
support_xy_distance_overhang = =wall_line_width_0
|
||||
support_z_distance = =layer_height * 2
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 1.5
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =round(line_width * 0.76 / 0.76, 2)
|
||||
wall_thickness = 1.52
|
@ -0,0 +1,79 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Extra Fast
|
||||
definition = ultimaker2_plus
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
material = generic_polypropylene_ultimaker2_plus_0.8_mm
|
||||
weight = -3
|
||||
quality_type = draft
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_layer_0 = =acceleration_topbottom
|
||||
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_print = 4000
|
||||
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
|
||||
acceleration_support_interface = =acceleration_topbottom
|
||||
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
|
||||
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
|
||||
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
|
||||
brim_width = 20
|
||||
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 20
|
||||
gradual_infill_step_height = =layer_height * 2
|
||||
gradual_infill_steps = 3
|
||||
infill_line_width = =round(line_width * 0.8 / 0.76, 2)
|
||||
infill_overlap = 0
|
||||
infill_overlap_mm = 0
|
||||
infill_pattern = cubic
|
||||
infill_sparse_density = 96
|
||||
infill_wipe_dist = 0
|
||||
jerk_enabled = True
|
||||
jerk_layer_0 = =jerk_topbottom
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_print = 25
|
||||
jerk_support = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_support_interface = =jerk_topbottom
|
||||
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
|
||||
jerk_wall = =math.ceil(jerk_print * 10 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
|
||||
layer_height = 0.3
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
multiple_mesh_overlap = 0
|
||||
retraction_count_max = 12
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 0.15
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.5
|
||||
retraction_prime_speed = 15
|
||||
skin_overlap = 10
|
||||
skirt_brim_line_width = 0.8
|
||||
speed_layer_0 = 25
|
||||
speed_prime_tower = =speed_topbottom
|
||||
speed_print = 25
|
||||
speed_support_interface = =speed_topbottom
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 250
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 20 / 25)
|
||||
support_angle = 60
|
||||
support_bottom_distance = =support_z_distance / 2
|
||||
support_top_distance = =support_z_distance
|
||||
support_xy_distance = =wall_line_width_0 * 2.5
|
||||
support_xy_distance_overhang = =wall_line_width_0
|
||||
support_z_distance = =layer_height * 2
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 1.5
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =round(line_width * 0.76 / 0.76, 2)
|
||||
wall_thickness = 1.52
|
@ -0,0 +1,65 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Fast
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = draft
|
||||
material = generic_polypropylene_ultimaker3_AA_0.4
|
||||
weight = -2
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_print = 4000
|
||||
brim_width = 20
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time = 7
|
||||
cool_min_layer_time_fan_speed_max = 7
|
||||
cool_min_speed = 2.5
|
||||
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||
infill_overlap = 0
|
||||
infill_pattern = tetrahedral
|
||||
infill_wipe_dist = 0.1
|
||||
jerk_enabled = True
|
||||
jerk_print = 25
|
||||
layer_height = 0.2
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
material_bed_temperature_layer_0 = 90
|
||||
material_final_print_temperature = 205
|
||||
material_initial_print_temperature = 210
|
||||
material_print_temperature = 215
|
||||
material_print_temperature_layer_0 = 220
|
||||
multiple_mesh_overlap = 0
|
||||
prime_tower_enable = False
|
||||
prime_tower_size = 16
|
||||
prime_tower_wipe_enabled = True
|
||||
retraction_amount = 6.5
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.8
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 2
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 18
|
||||
speed_equalize_flow_enabled = True
|
||||
speed_layer_0 = 15
|
||||
speed_print = 25
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 300
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
|
||||
support_angle = 50
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =line_width
|
||||
wall_thickness = =line_width * 3
|
@ -0,0 +1,65 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Normal
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = fast
|
||||
material = generic_polypropylene_ultimaker3_AA_0.4
|
||||
weight = -1
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_print = 4000
|
||||
brim_width = 20
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time = 7
|
||||
cool_min_layer_time_fan_speed_max = 7
|
||||
cool_min_speed = 2.5
|
||||
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||
infill_overlap = 0
|
||||
infill_pattern = tetrahedral
|
||||
infill_wipe_dist = 0.1
|
||||
jerk_enabled = True
|
||||
jerk_print = 25
|
||||
layer_height = 0.15
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
material_bed_temperature_layer_0 = 90
|
||||
material_final_print_temperature = 195
|
||||
material_initial_print_temperature = 205
|
||||
material_print_temperature = 207
|
||||
material_print_temperature_layer_0 = 210
|
||||
multiple_mesh_overlap = 0
|
||||
prime_tower_enable = False
|
||||
prime_tower_size = 16
|
||||
prime_tower_wipe_enabled = True
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.8
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 2
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 18
|
||||
speed_equalize_flow_enabled = True
|
||||
speed_layer_0 = 15
|
||||
speed_print = 25
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 300
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
|
||||
support_angle = 50
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 1.1
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =line_width
|
||||
wall_thickness = =line_width * 3
|
@ -0,0 +1,64 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Fine
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = normal
|
||||
material = generic_polypropylene_ultimaker3_AA_0.4
|
||||
weight = 0
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
acceleration_enabled = True
|
||||
acceleration_print = 4000
|
||||
brim_width = 20
|
||||
cool_fan_speed_max = 100
|
||||
cool_min_layer_time = 7
|
||||
cool_min_layer_time_fan_speed_max = 7
|
||||
cool_min_speed = 2.5
|
||||
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||
infill_overlap = 0
|
||||
infill_pattern = tetrahedral
|
||||
infill_wipe_dist = 0.1
|
||||
jerk_enabled = True
|
||||
jerk_print = 25
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
material_bed_temperature_layer_0 = 90
|
||||
material_final_print_temperature = 195
|
||||
material_initial_print_temperature = 200
|
||||
material_print_temperature = 205
|
||||
material_print_temperature_layer_0 = 208
|
||||
multiple_mesh_overlap = 0
|
||||
prime_tower_enable = False
|
||||
prime_tower_size = 16
|
||||
prime_tower_wipe_enabled = True
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.8
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 2
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 18
|
||||
speed_equalize_flow_enabled = True
|
||||
speed_layer_0 = 15
|
||||
speed_print = 25
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 25)
|
||||
speed_travel = 300
|
||||
speed_travel_layer_0 = 50
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
|
||||
support_angle = 50
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 1
|
||||
travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =line_width
|
||||
wall_thickness = =line_width * 3
|
@ -29,25 +29,24 @@ jerk_print = 25
|
||||
layer_height = 0.2
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
material_final_print_temperature = =material_print_temperature - 10
|
||||
machine_nozzle_cool_down_speed = 0.5
|
||||
machine_nozzle_heat_up_speed = 2.5
|
||||
material_final_print_temperature = =material_print_temperature - 21
|
||||
material_flow = 106
|
||||
material_initial_print_temperature = =material_print_temperature - 5
|
||||
material_initial_print_temperature = =material_print_temperature - 16
|
||||
material_print_temperature = =default_material_print_temperature + 2
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||
material_standby_temperature = 100
|
||||
multiple_mesh_overlap = 0
|
||||
prime_tower_enable = True
|
||||
prime_tower_wipe_enabled = True
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.8
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 2
|
||||
retraction_hop_enabled = False
|
||||
retraction_hop = 1.5
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 15
|
||||
skin_overlap = 5
|
||||
speed_equalize_flow_enabled = True
|
||||
speed_layer_0 = 18
|
||||
speed_print = 25
|
||||
@ -56,12 +55,11 @@ speed_travel = 300
|
||||
speed_wall = =math.ceil(speed_print * 25 / 25)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
|
||||
support_angle = 50
|
||||
skin_overlap = 5
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 0.7
|
||||
travel_avoid_distance = 0.5
|
||||
travel_avoid_distance = 1.5
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =line_width
|
||||
wall_thickness = 0.76
|
@ -29,23 +29,21 @@ jerk_print = 25
|
||||
layer_height = 0.15
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
material_final_print_temperature = =material_print_temperature - 10
|
||||
machine_nozzle_cool_down_speed = 0.5
|
||||
machine_nozzle_heat_up_speed = 2.5
|
||||
material_final_print_temperature = =material_print_temperature - 21
|
||||
material_flow = 106
|
||||
material_initial_print_temperature = =material_print_temperature - 5
|
||||
material_initial_print_temperature = =material_print_temperature - 16
|
||||
material_print_temperature = =default_material_print_temperature + 2
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||
material_standby_temperature = 100
|
||||
multiple_mesh_overlap = 0
|
||||
prime_tower_enable = True
|
||||
prime_tower_wipe_enabled = True
|
||||
retraction_amount = 7
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.8
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 2
|
||||
retraction_hop_enabled = False
|
||||
retraction_hop = 1.5
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 15
|
||||
@ -62,7 +60,7 @@ switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 0.7
|
||||
travel_avoid_distance = 0.5
|
||||
travel_avoid_distance = 1.5
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =line_width
|
||||
wall_thickness = 0.76
|
@ -28,21 +28,19 @@ jerk_enabled = True
|
||||
jerk_print = 25
|
||||
line_width = =machine_nozzle_size * 0.95
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
material_final_print_temperature = =material_print_temperature - 10
|
||||
machine_nozzle_cool_down_speed = 0.5
|
||||
machine_nozzle_heat_up_speed = 2.5
|
||||
material_final_print_temperature = =material_print_temperature - 21
|
||||
material_flow = 106
|
||||
material_initial_print_temperature = =material_print_temperature - 10
|
||||
material_initial_print_temperature = =material_print_temperature - 16
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||
material_standby_temperature = 100
|
||||
multiple_mesh_overlap = 0
|
||||
prime_tower_enable = True
|
||||
prime_tower_wipe_enabled = True
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.8
|
||||
retraction_extrusion_window = 1
|
||||
retraction_hop = 2
|
||||
retraction_hop_enabled = False
|
||||
retraction_hop = 1.5
|
||||
retraction_hop_enabled = True
|
||||
retraction_hop_only_when_collides = True
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 15
|
||||
@ -59,7 +57,7 @@ switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 35
|
||||
top_bottom_thickness = 0.7
|
||||
travel_avoid_distance = 0.5
|
||||
travel_avoid_distance = 1.5
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =line_width
|
||||
wall_thickness = 0.76
|
@ -0,0 +1,36 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Fast - Experimental
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = draft
|
||||
material = generic_cpe_plus_ultimaker3_AA_0.8
|
||||
weight = -2
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 14
|
||||
cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
|
||||
infill_before_walls = True
|
||||
line_width = =machine_nozzle_size * 0.9375
|
||||
machine_nozzle_cool_down_speed = 0.9
|
||||
machine_nozzle_heat_up_speed = 1.4
|
||||
material_print_temperature = =default_material_print_temperature - 10
|
||||
material_print_temperature_layer_0 = =material_print_temperature
|
||||
retraction_combing = off
|
||||
retraction_hop = 0.1
|
||||
retraction_hop_enabled = False
|
||||
skin_overlap = 0
|
||||
speed_layer_0 = 15
|
||||
speed_print = 50
|
||||
speed_slowdown_layers = 15
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 50)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
|
||||
support_bottom_distance = =support_z_distance
|
||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||
support_z_distance = =layer_height
|
||||
top_bottom_thickness = 1.2
|
||||
travel_avoid_distance = 1.5
|
@ -1,14 +0,0 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Not Supported
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = normal
|
||||
material = generic_cpe_plus_ultimaker3_AA_0.8
|
||||
weight = 0
|
||||
supported = False
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
@ -1,14 +0,0 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Not Supported
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = superdraft
|
||||
material = generic_cpe_plus_ultimaker3_AA_0.8
|
||||
weight = 0
|
||||
supported = False
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
@ -0,0 +1,38 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Sprint - Experimental
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = superdraft
|
||||
material = generic_cpe_plus_ultimaker3_AA_0.8
|
||||
weight = -2
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 14
|
||||
cool_fan_full_at_height = =layer_height_0 + 7 * layer_height
|
||||
infill_before_walls = True
|
||||
layer_height = 0.4
|
||||
line_width = =machine_nozzle_size * 0.9375
|
||||
machine_nozzle_cool_down_speed = 0.9
|
||||
machine_nozzle_heat_up_speed = 1.4
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
material_print_temperature_layer_0 = =material_print_temperature
|
||||
prime_tower_enable = True
|
||||
retraction_combing = off
|
||||
retraction_hop = 0.1
|
||||
retraction_hop_enabled = False
|
||||
skin_overlap = 0
|
||||
speed_layer_0 = 15
|
||||
speed_print = 50
|
||||
speed_slowdown_layers = 8
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 50)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
|
||||
support_bottom_distance = =support_z_distance
|
||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||
support_z_distance = =layer_height
|
||||
top_bottom_thickness = 1.2
|
||||
travel_avoid_distance = 1.5
|
@ -0,0 +1,38 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Extra Fast - Experimental
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = verydraft
|
||||
material = generic_cpe_plus_ultimaker3_AA_0.8
|
||||
weight = -1
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 14
|
||||
cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
|
||||
infill_before_walls = True
|
||||
layer_height = 0.3
|
||||
line_width = =machine_nozzle_size * 0.9375
|
||||
machine_nozzle_cool_down_speed = 0.9
|
||||
machine_nozzle_heat_up_speed = 1.4
|
||||
material_print_temperature = =default_material_print_temperature - 7
|
||||
material_print_temperature_layer_0 = =material_print_temperature
|
||||
prime_tower_enable = True
|
||||
retraction_combing = off
|
||||
retraction_hop = 0.1
|
||||
retraction_hop_enabled = False
|
||||
skin_overlap = 0
|
||||
speed_layer_0 = 15
|
||||
speed_print = 50
|
||||
speed_slowdown_layers = 10
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 50)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
|
||||
support_bottom_distance = =support_z_distance
|
||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||
support_z_distance = =layer_height
|
||||
top_bottom_thickness = 1.2
|
||||
travel_avoid_distance = 1.5
|
@ -0,0 +1,30 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Fast - Experimental
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = draft
|
||||
material = generic_pc_ultimaker3_AA_0.8
|
||||
weight = 0
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 14
|
||||
cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
|
||||
infill_before_walls = True
|
||||
line_width = =machine_nozzle_size * 0.875
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
material_print_temperature_layer_0 = =material_print_temperature
|
||||
raft_airgap = 0.5
|
||||
raft_margin = 15
|
||||
skin_overlap = 0
|
||||
speed_layer_0 = 15
|
||||
speed_print = 50
|
||||
speed_slowdown_layers = 15
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 50)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||
travel_avoid_distance = 3
|
@ -1,14 +0,0 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Not Supported
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
weight = 0
|
||||
type = quality
|
||||
quality_type = normal
|
||||
material = generic_pc_ultimaker3_AA_0.8
|
||||
supported = False
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
@ -1,14 +0,0 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Not Supported
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
weight = 0
|
||||
type = quality
|
||||
quality_type = superdraft
|
||||
material = generic_pc_ultimaker3_AA_0.8
|
||||
supported = False
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
@ -0,0 +1,30 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Sprint - Experimental
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = superdraft
|
||||
material = generic_pc_ultimaker3_AA_0.8
|
||||
weight = -2
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 14
|
||||
cool_fan_full_at_height = =layer_height_0 + 7 * layer_height
|
||||
infill_before_walls = True
|
||||
layer_height = 0.4
|
||||
line_width = =machine_nozzle_size * 0.875
|
||||
material_print_temperature_layer_0 = =material_print_temperature
|
||||
raft_airgap = 0.5
|
||||
raft_margin = 15
|
||||
skin_overlap = 0
|
||||
speed_layer_0 = 15
|
||||
speed_print = 50
|
||||
speed_slowdown_layers = 8
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 50)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||
travel_avoid_distance = 3
|
@ -0,0 +1,31 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Extra Fast - Experimental
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = verydraft
|
||||
material = generic_pc_ultimaker3_AA_0.8
|
||||
weight = -1
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 14
|
||||
cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
|
||||
infill_before_walls = True
|
||||
layer_height = 0.3
|
||||
line_width = =machine_nozzle_size * 0.875
|
||||
material_print_temperature = =default_material_print_temperature - 2
|
||||
material_print_temperature_layer_0 = =material_print_temperature
|
||||
raft_airgap = 0.5
|
||||
raft_margin = 15
|
||||
skin_overlap = 0
|
||||
speed_layer_0 = 15
|
||||
speed_print = 50
|
||||
speed_slowdown_layers = 10
|
||||
speed_topbottom = =math.ceil(speed_print * 25 / 50)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 50)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||
support_line_width = =round(line_width * 0.6 / 0.7, 2)
|
||||
travel_avoid_distance = 3
|
@ -0,0 +1,52 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Fast
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = draft
|
||||
material = generic_polypropylene_ultimaker3_AA_0.8
|
||||
weight = -2
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 25
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 17
|
||||
expand_skins_expand_distance = =line_width * 2
|
||||
expand_skins_into_infill = True
|
||||
expand_upper_skins = True
|
||||
infill_before_walls = True
|
||||
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
infill_pattern = tetrahedral
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
material_bed_temperature_layer_0 = =material_bed_temperature
|
||||
material_print_temperature = =default_material_print_temperature - 2
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||
multiple_mesh_overlap = 0.2
|
||||
prime_tower_enable = True
|
||||
prime_tower_flow = 100
|
||||
prime_tower_wall_thickness = =prime_tower_line_width * 2
|
||||
retract_at_layer_change = False
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.5
|
||||
retraction_hop = 0.5
|
||||
retraction_min_travel = 1.5
|
||||
retraction_prime_speed = 15
|
||||
skin_line_width = =round(line_width * 0.78 / 0.8, 2)
|
||||
speed_travel = 300
|
||||
speed_wall_x = =math.ceil(speed_wall * 30 / 30)
|
||||
support_bottom_distance = =support_z_distance
|
||||
support_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
support_offset = =line_width
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 45
|
||||
top_bottom_thickness = 1.6
|
||||
travel_compensate_overlapping_walls_0_enabled = False
|
||||
wall_0_wipe_dist = =line_width * 2
|
||||
wall_line_width_x = =round(line_width * 0.8 / 0.8, 2)
|
||||
wall_thickness = 1.6
|
@ -0,0 +1,52 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Sprint
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = superdraft
|
||||
material = generic_polypropylene_ultimaker3_AA_0.8
|
||||
weight = -4
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 25
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 17
|
||||
expand_skins_expand_distance = =line_width * 2
|
||||
expand_skins_into_infill = True
|
||||
expand_upper_skins = True
|
||||
infill_before_walls = True
|
||||
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
infill_pattern = tetrahedral
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
material_bed_temperature_layer_0 = =material_bed_temperature
|
||||
material_print_temperature = =default_material_print_temperature + 2
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||
multiple_mesh_overlap = 0.2
|
||||
prime_tower_enable = True
|
||||
prime_tower_flow = 100
|
||||
prime_tower_wall_thickness = =prime_tower_line_width * 2
|
||||
retract_at_layer_change = False
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.5
|
||||
retraction_hop = 0.5
|
||||
retraction_min_travel = 1.5
|
||||
retraction_prime_speed = 15
|
||||
skin_line_width = =round(line_width * 0.78 / 0.8, 2)
|
||||
speed_travel = 300
|
||||
speed_wall_x = =math.ceil(speed_wall * 30 / 30)
|
||||
support_bottom_distance = =support_z_distance
|
||||
support_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
support_offset = =line_width
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 45
|
||||
top_bottom_thickness = 1.6
|
||||
travel_compensate_overlapping_walls_0_enabled = False
|
||||
wall_0_wipe_dist = =line_width * 2
|
||||
wall_line_width_x = =round(line_width * 0.8 / 0.8, 2)
|
||||
wall_thickness = 1.6
|
@ -0,0 +1,52 @@
|
||||
[general]
|
||||
version = 2
|
||||
name = Extra Fast
|
||||
definition = ultimaker3
|
||||
|
||||
[metadata]
|
||||
type = quality
|
||||
quality_type = verydraft
|
||||
material = generic_polypropylene_ultimaker3_AA_0.8
|
||||
weight = -3
|
||||
setting_version = 1
|
||||
|
||||
[values]
|
||||
brim_width = 25
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 17
|
||||
expand_skins_expand_distance = =line_width * 2
|
||||
expand_skins_into_infill = True
|
||||
expand_upper_skins = True
|
||||
infill_before_walls = True
|
||||
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
infill_pattern = tetrahedral
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
layer_height = 0.3
|
||||
material_bed_temperature_layer_0 = =material_bed_temperature
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||
multiple_mesh_overlap = 0.2
|
||||
prime_tower_enable = True
|
||||
prime_tower_flow = 100
|
||||
prime_tower_wall_thickness = =prime_tower_line_width * 2
|
||||
retract_at_layer_change = False
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.5
|
||||
retraction_hop = 0.5
|
||||
retraction_min_travel = 1.5
|
||||
retraction_prime_speed = 15
|
||||
skin_line_width = =round(line_width * 0.78 / 0.8, 2)
|
||||
speed_travel = 300
|
||||
speed_wall_x = =math.ceil(speed_wall * 30 / 30)
|
||||
support_bottom_distance = =support_z_distance
|
||||
support_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
support_offset = =line_width
|
||||
switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 45
|
||||
top_bottom_thickness = 1.6
|
||||
travel_compensate_overlapping_walls_0_enabled = False
|
||||
wall_0_wipe_dist = =line_width * 2
|
||||
wall_line_width_x = =round(line_width * 0.8 / 0.8, 2)
|
||||
wall_thickness = 1.6
|
@ -25,11 +25,14 @@ infill_sparse_density = 80
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
machine_nozzle_cool_down_speed = 0.5
|
||||
machine_nozzle_heat_up_speed = 2.5
|
||||
material_bed_temperature_layer_0 = 0
|
||||
material_final_print_temperature = =material_print_temperature - 21
|
||||
material_flow = 105
|
||||
material_initial_print_temperature = =material_print_temperature - 16
|
||||
material_print_temperature = =default_material_print_temperature - 2
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||
material_standby_temperature = 100
|
||||
multiple_mesh_overlap = 0.2
|
||||
prime_tower_enable = True
|
||||
prime_tower_flow = 100
|
||||
@ -37,8 +40,7 @@ prime_tower_wall_thickness = =prime_tower_line_width * 2
|
||||
retract_at_layer_change = False
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.5
|
||||
retraction_hop = 0.5
|
||||
retraction_hop_enabled = False
|
||||
retraction_hop = 1.5
|
||||
retraction_hop_only_when_collides = False
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 15
|
||||
@ -56,9 +58,8 @@ switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 45
|
||||
top_bottom_thickness = 1.2
|
||||
travel_avoid_distance = 0.5
|
||||
travel_avoid_distance = 1.5
|
||||
travel_compensate_overlapping_walls_0_enabled = False
|
||||
wall_0_wipe_dist = =line_width * 2
|
||||
wall_line_width_x = =round(line_width * 0.6 / 0.8, 2)
|
||||
wall_thickness = 1.3
|
||||
|
||||
|
@ -26,11 +26,14 @@ jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
layer_height = 0.4
|
||||
machine_nozzle_cool_down_speed = 0.5
|
||||
machine_nozzle_heat_up_speed = 2.5
|
||||
material_bed_temperature_layer_0 = 0
|
||||
material_final_print_temperature = =material_print_temperature - 21
|
||||
material_flow = 105
|
||||
material_initial_print_temperature = =material_print_temperature - 16
|
||||
material_print_temperature = =default_material_print_temperature + 2
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||
material_standby_temperature = 100
|
||||
multiple_mesh_overlap = 0.2
|
||||
prime_tower_enable = True
|
||||
prime_tower_flow = 100
|
||||
@ -38,8 +41,7 @@ prime_tower_wall_thickness = =prime_tower_line_width * 2
|
||||
retract_at_layer_change = False
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.5
|
||||
retraction_hop = 0.5
|
||||
retraction_hop_enabled = False
|
||||
retraction_hop = 1.5
|
||||
retraction_hop_only_when_collides = False
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 15
|
||||
@ -57,9 +59,8 @@ switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 45
|
||||
top_bottom_thickness = 1.2
|
||||
travel_avoid_distance = 0.5
|
||||
travel_avoid_distance = 1.5
|
||||
travel_compensate_overlapping_walls_0_enabled = False
|
||||
wall_0_wipe_dist = =line_width * 2
|
||||
wall_line_width_x = =round(line_width * 0.6 / 0.8, 2)
|
||||
wall_thickness = 1.3
|
||||
|
||||
|
@ -26,10 +26,13 @@ jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
layer_height = 0.3
|
||||
machine_nozzle_cool_down_speed = 0.5
|
||||
machine_nozzle_heat_up_speed = 2.5
|
||||
material_bed_temperature_layer_0 = 0
|
||||
material_final_print_temperature = =material_print_temperature - 21
|
||||
material_flow = 105
|
||||
material_initial_print_temperature = =material_print_temperature - 16
|
||||
material_print_temperature_layer_0 = =default_material_print_temperature + 2
|
||||
material_standby_temperature = 100
|
||||
multiple_mesh_overlap = 0.2
|
||||
prime_tower_enable = True
|
||||
prime_tower_flow = 100
|
||||
@ -37,8 +40,7 @@ prime_tower_wall_thickness = =prime_tower_line_width * 2
|
||||
retract_at_layer_change = False
|
||||
retraction_count_max = 12
|
||||
retraction_extra_prime_amount = 0.5
|
||||
retraction_hop = 0.5
|
||||
retraction_hop_enabled = False
|
||||
retraction_hop = 1.5
|
||||
retraction_hop_only_when_collides = False
|
||||
retraction_min_travel = 0.8
|
||||
retraction_prime_speed = 15
|
||||
@ -56,9 +58,8 @@ switch_extruder_prime_speed = 15
|
||||
switch_extruder_retraction_amount = 20
|
||||
switch_extruder_retraction_speeds = 45
|
||||
top_bottom_thickness = 1.2
|
||||
travel_avoid_distance = 0.5
|
||||
travel_avoid_distance = 1.5
|
||||
travel_compensate_overlapping_walls_0_enabled = False
|
||||
wall_0_wipe_dist = =line_width * 2
|
||||
wall_line_width_x = =round(line_width * 0.6 / 0.8, 2)
|
||||
wall_thickness = 1.3
|
||||
|
||||
|
186
resources/themes/cura-dark/theme.json
Normal file
186
resources/themes/cura-dark/theme.json
Normal file
@ -0,0 +1,186 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "Dark",
|
||||
"inherits": "cura"
|
||||
},
|
||||
"colors": {
|
||||
"sidebar": [83, 83, 83, 255],
|
||||
"lining": [127, 127, 127, 255],
|
||||
"viewport_overlay": [66, 66, 66, 255],
|
||||
|
||||
"primary": [12, 169, 227, 255],
|
||||
"primary_hover": [48, 182, 231, 255],
|
||||
"primary_text": [83, 83, 83, 255],
|
||||
"border": [127, 127, 127, 255],
|
||||
"secondary": [66, 66, 66, 255],
|
||||
|
||||
"text": [255, 255, 255, 255],
|
||||
"text_detail": [174, 174, 174, 128],
|
||||
"text_link": [12, 169, 227, 255],
|
||||
"text_inactive": [174, 174, 174, 255],
|
||||
"text_hover": [70, 84, 113, 255],
|
||||
"text_pressed": [12, 169, 227, 255],
|
||||
"text_reversed": [255, 255, 255, 255],
|
||||
"text_subtext": [255, 255, 255, 255],
|
||||
|
||||
"error": [255, 140, 0, 255],
|
||||
|
||||
"sidebar_header_bar": [66, 66, 66, 255],
|
||||
"sidebar_header_active": [83, 83, 83, 255],
|
||||
"sidebar_header_hover": [83, 83, 83, 255],
|
||||
"sidebar_header_highlight": [83, 83, 83, 255],
|
||||
"sidebar_header_highlight_hover": [66, 66, 66, 255],
|
||||
"sidebar_lining": [66, 66, 66, 255],
|
||||
|
||||
"button": [83, 83, 83, 255],
|
||||
"button_hover": [83, 83, 83, 255],
|
||||
"button_active": [32, 166, 219, 255],
|
||||
"button_active_hover": [12, 169, 227, 255],
|
||||
"button_text": [255, 255, 255, 255],
|
||||
"button_disabled": [255, 255, 255, 255],
|
||||
"button_disabled_text": [70, 84, 113, 255],
|
||||
|
||||
"button_tooltip": [83, 83, 83, 255],
|
||||
"button_tooltip_border": [255, 255, 255, 255],
|
||||
"button_tooltip_text": [255, 255, 255, 255],
|
||||
|
||||
"toggle_checked": [255, 255, 255, 255],
|
||||
"toggle_checked_border": [255, 255, 255, 255],
|
||||
"toggle_checked_text": [83, 83, 83, 255],
|
||||
"toggle_unchecked": [83, 83, 83, 255],
|
||||
"toggle_unchecked_border": [127, 127, 127, 255],
|
||||
"toggle_unchecked_text": [255, 255, 255, 255],
|
||||
"toggle_hovered": [83, 83, 83, 255],
|
||||
"toggle_hovered_border": [32, 166, 219, 255],
|
||||
"toggle_hovered_text": [255, 255, 255, 255],
|
||||
"toggle_active": [32, 166, 219, 255],
|
||||
"toggle_active_border": [32, 166, 219, 255],
|
||||
"toggle_active_text": [255, 255, 255, 255],
|
||||
|
||||
"tab_checked": [83, 83, 83, 255],
|
||||
"tab_checked_border": [83, 83, 83, 255],
|
||||
"tab_checked_text": [255, 255, 255, 255],
|
||||
"tab_unchecked": [66, 66, 66, 255],
|
||||
"tab_unchecked_border": [66, 66, 66, 255],
|
||||
"tab_unchecked_text": [127, 127, 127, 255],
|
||||
"tab_hovered": [66, 66, 66, 255],
|
||||
"tab_hovered_border": [66, 66, 66, 255],
|
||||
"tab_hovered_text": [32, 166, 219, 255],
|
||||
"tab_active": [83, 83, 83, 255],
|
||||
"tab_active_border": [83, 83, 83, 255],
|
||||
"tab_active_text": [255, 255, 255, 255],
|
||||
"tab_background": [66, 66, 66, 255],
|
||||
|
||||
"action_button": [83, 83, 83, 255],
|
||||
"action_button_text": [255, 255, 255, 255],
|
||||
"action_button_border": [127, 127, 127, 255],
|
||||
"action_button_hovered": [83, 83, 83, 255],
|
||||
"action_button_hovered_text": [255, 255, 255, 255],
|
||||
"action_button_hovered_border": [12, 169, 227, 255],
|
||||
"action_button_active": [12, 169, 227, 255],
|
||||
"action_button_active_text": [83, 83, 83, 255],
|
||||
"action_button_active_border": [12, 169, 227, 255],
|
||||
"action_button_disabled": [66, 66, 66, 255],
|
||||
"action_button_disabled_text": [127, 127, 127, 255],
|
||||
"action_button_disabled_border": [66, 66, 66, 255],
|
||||
|
||||
"scrollbar_background": [83, 83, 83, 255],
|
||||
"scrollbar_handle": [255, 255, 255, 255],
|
||||
"scrollbar_handle_hover": [12, 159, 227, 255],
|
||||
"scrollbar_handle_down": [12, 159, 227, 255],
|
||||
|
||||
"setting_category": [66, 66, 66, 255],
|
||||
"setting_category_disabled": [83, 83, 83, 255],
|
||||
"setting_category_hover": [66, 66, 66, 255],
|
||||
"setting_category_active": [66, 66, 66, 255],
|
||||
"setting_category_active_hover": [66, 66, 66, 255],
|
||||
"setting_category_text": [255, 255, 255, 255],
|
||||
"setting_category_border": [66, 66, 66, 255],
|
||||
"setting_category_disabled_border": [66, 66, 66, 255],
|
||||
"setting_category_hover_border": [12, 159, 227, 255],
|
||||
"setting_category_active_border": [66, 66, 66, 255],
|
||||
"setting_category_active_hover_border": [12, 159, 227, 255],
|
||||
|
||||
"setting_control": [83, 83, 83, 255],
|
||||
"setting_control_selected": [12, 159, 227, 255],
|
||||
"setting_control_highlight": [83, 83, 83, 0],
|
||||
"setting_control_border": [127, 127, 127, 255],
|
||||
"setting_control_border_highlight": [12, 169, 227, 255],
|
||||
"setting_control_text": [255, 255, 255, 255],
|
||||
"setting_control_depth_line": [127, 127, 127, 255],
|
||||
"setting_control_button": [127, 127, 127, 255],
|
||||
"setting_control_button_hover": [70, 84, 113, 255],
|
||||
"setting_control_disabled": [66, 66, 66, 255],
|
||||
"setting_control_disabled_text": [127, 127, 127, 255],
|
||||
"setting_control_disabled_border": [127, 127, 127, 255],
|
||||
"setting_unit": [127, 127, 127, 255],
|
||||
"setting_validation_error": [204, 37, 0, 255],
|
||||
"setting_validation_warning": [204, 146, 0, 255],
|
||||
"setting_validation_ok": [83, 83, 83, 255],
|
||||
|
||||
"progressbar_background": [66, 66, 66, 255],
|
||||
"progressbar_control": [255, 255, 255, 255],
|
||||
|
||||
"slider_groove": [66, 66, 66, 255],
|
||||
"slider_groove_border": [127, 127, 127, 255],
|
||||
"slider_groove_fill": [127, 127, 127, 255],
|
||||
"slider_handle": [32, 166, 219, 255],
|
||||
"slider_handle_hover": [77, 182, 226, 255],
|
||||
"slider_text_background": [83, 83, 83, 255],
|
||||
|
||||
"checkbox": [83, 83, 83, 255],
|
||||
"checkbox_hover": [83, 83, 83, 255],
|
||||
"checkbox_border": [127, 127, 127, 255],
|
||||
"checkbox_border_hover": [12, 169, 227, 255],
|
||||
"checkbox_mark": [255, 255, 255, 255],
|
||||
"checkbox_text": [255, 255, 255, 255],
|
||||
|
||||
"mode_switch": [83, 83, 83, 255],
|
||||
"mode_switch_hover": [83, 83, 83, 255],
|
||||
"mode_switch_border": [127, 127, 127, 255],
|
||||
"mode_switch_border_hover": [12, 169, 227, 255],
|
||||
"mode_switch_handle": [255, 255, 255, 255],
|
||||
"mode_switch_text": [255, 255, 255, 255],
|
||||
"mode_switch_text_hover": [255, 255, 255, 255],
|
||||
"mode_switch_text_checked": [12, 169, 227, 255],
|
||||
|
||||
"tooltip": [12, 169, 227, 255],
|
||||
"tooltip_text": [255, 255, 255, 255],
|
||||
|
||||
"message_background": [255, 255, 255, 255],
|
||||
"message_text": [83, 83, 83, 255],
|
||||
"message_border": [255, 255, 255, 255],
|
||||
"message_button": [83, 83, 83, 255],
|
||||
"message_button_hover": [12, 169, 227, 255],
|
||||
"message_button_active": [32, 166, 219, 255],
|
||||
"message_button_text": [255, 255, 255, 255],
|
||||
"message_button_text_hover": [83, 83, 83, 255],
|
||||
"message_button_text_active": [83, 83, 83, 255],
|
||||
"message_progressbar_background": [83, 83, 83, 255],
|
||||
"message_progressbar_control": [12, 169, 227, 255],
|
||||
|
||||
"tool_panel_background": [83, 83, 83, 255],
|
||||
|
||||
"status_offline": [0, 0, 0, 255],
|
||||
"status_ready": [0, 205, 0, 255],
|
||||
"status_busy": [12, 169, 227, 255],
|
||||
"status_paused": [255, 140, 0, 255],
|
||||
"status_stopped": [236, 82, 80, 255],
|
||||
"status_unknown": [127, 127, 127, 255],
|
||||
|
||||
"disabled_axis": [127, 127, 127, 255],
|
||||
"x_axis": [255, 0, 0, 255],
|
||||
"y_axis": [0, 0, 255, 255],
|
||||
"z_axis": [0, 255, 0, 255],
|
||||
"all_axis": [83, 83, 83, 255],
|
||||
|
||||
"viewport_background": [66, 66, 66, 255],
|
||||
"volume_outline": [12, 169, 227, 255],
|
||||
"buildplate": [169, 169, 169, 255],
|
||||
"buildplate_alt": [204, 204, 204, 255],
|
||||
|
||||
"convex_hull": [35, 35, 35, 127],
|
||||
"disallowed_area": [0, 0, 0, 40],
|
||||
"error_area": [255, 0, 0, 127]
|
||||
}
|
||||
}
|
@ -368,11 +368,11 @@ QtObject {
|
||||
color: {
|
||||
if(!control.enabled) {
|
||||
return Theme.getColor("setting_category_disabled_border");
|
||||
} else if(control.hovered && control.checkable && control.checked) {
|
||||
} else if((control.hovered || control.activeFocus) && control.checkable && control.checked) {
|
||||
return Theme.getColor("setting_category_active_hover_border");
|
||||
} else if(control.pressed || (control.checkable && control.checked)) {
|
||||
return Theme.getColor("setting_category_active_border");
|
||||
} else if(control.hovered) {
|
||||
} else if(control.hovered || control.activeFocus) {
|
||||
return Theme.getColor("setting_category_hover_border");
|
||||
} else {
|
||||
return Theme.getColor("setting_category_border");
|
||||
@ -508,7 +508,7 @@ QtObject {
|
||||
{
|
||||
color:
|
||||
{
|
||||
if (!enabled)
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled");
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ line_width = =machine_nozzle_size
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
machine_nozzle_id = AA 0.8
|
||||
machine_nozzle_size = 0.8
|
||||
machine_nozzle_tip_outer_diameter = 2.0
|
||||
material_final_print_temperature = =material_print_temperature - 10
|
||||
|
@ -11,6 +11,7 @@ setting_version = 1
|
||||
[values]
|
||||
brim_width = 7
|
||||
machine_nozzle_cool_down_speed = 0.9
|
||||
machine_nozzle_id = AA 0.4
|
||||
raft_acceleration = =acceleration_print
|
||||
raft_airgap = 0.3
|
||||
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
|
||||
|
@ -29,6 +29,7 @@ jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
|
||||
layer_height = 0.2
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
machine_nozzle_id = BB 0.8
|
||||
machine_nozzle_size = 0.8
|
||||
machine_nozzle_tip_outer_diameter = 2.0
|
||||
material_print_temperature = =default_material_print_temperature + 10
|
||||
|
@ -17,6 +17,7 @@ jerk_support = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
|
||||
jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
machine_nozzle_id = BB 0.4
|
||||
material_print_temperature = 215
|
||||
raft_base_speed = 20
|
||||
raft_interface_speed = 20
|
||||
|
@ -31,6 +31,7 @@ line_width = =machine_nozzle_size
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
machine_nozzle_id = AA 0.8
|
||||
machine_nozzle_size = 0.8
|
||||
machine_nozzle_tip_outer_diameter = 2.0
|
||||
material_final_print_temperature = =material_print_temperature - 10
|
||||
|
@ -11,6 +11,7 @@ setting_version = 1
|
||||
[values]
|
||||
brim_width = 7
|
||||
machine_nozzle_cool_down_speed = 0.9
|
||||
machine_nozzle_id = AA 0.4
|
||||
machine_nozzle_size = 0.4
|
||||
raft_airgap = 0.3
|
||||
raft_base_speed = 15
|
||||
|
@ -29,6 +29,7 @@ jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
|
||||
layer_height = 0.2
|
||||
machine_min_cool_heat_time_window = 15
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
machine_nozzle_id = BB 0.8
|
||||
machine_nozzle_size = 0.8
|
||||
machine_nozzle_tip_outer_diameter = 2.0
|
||||
material_print_temperature = =default_material_print_temperature + 10
|
||||
|
@ -17,6 +17,7 @@ jerk_support = =math.ceil(jerk_print * 15 / 25)
|
||||
jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
|
||||
jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
|
||||
machine_nozzle_heat_up_speed = 1.5
|
||||
machine_nozzle_id = BB 0.4
|
||||
material_print_temperature = 215
|
||||
raft_base_speed = 20
|
||||
raft_interface_speed = 20
|
||||
|
@ -86,6 +86,28 @@ def test_addExtruder(global_stack):
|
||||
# global_stack.addExtruder(unittest.mock.MagicMock())
|
||||
assert len(global_stack.extruders) == 2 #Didn't add the faulty extruder.
|
||||
|
||||
## Tests getting the approximate material diameter.
|
||||
@pytest.mark.parametrize("diameter, approximate_diameter", [
|
||||
#Some real-life cases that are common in printers.
|
||||
(2.85, 3),
|
||||
(1.75, 2),
|
||||
(3.0, 3),
|
||||
(2.0, 2),
|
||||
#Exceptional cases.
|
||||
(0, 0),
|
||||
(-10.1, -10),
|
||||
(-1, -1)
|
||||
])
|
||||
def test_approximateMaterialDiameter(diameter, approximate_diameter, global_stack):
|
||||
global_stack.definition = DefinitionContainer(container_id = "TestDefinition")
|
||||
global_stack.definition._metadata["material_diameter"] = str(diameter)
|
||||
assert float(global_stack.approximateMaterialDiameter) == approximate_diameter
|
||||
|
||||
## Tests getting the material diameter when there is no material diameter.
|
||||
def test_approximateMaterialDiameterNoDiameter(global_stack):
|
||||
global_stack.definition = DefinitionContainer(container_id = "TestDefinition")
|
||||
assert global_stack.approximateMaterialDiameter == "-1"
|
||||
|
||||
#Tests setting user changes profiles to invalid containers.
|
||||
@pytest.mark.parametrize("container", [
|
||||
getInstanceContainer(container_type = "wrong container type"),
|
||||
|
Loading…
x
Reference in New Issue
Block a user