Merge branch 'master' into python_type_hinting

This commit is contained in:
Simon Edwards 2017-01-17 08:42:55 +01:00
commit fb70eb6813
124 changed files with 65675 additions and 49200 deletions

View file

@ -10,6 +10,7 @@ set(URANIUM_SCRIPTS_DIR "${CMAKE_SOURCE_DIR}/../uranium/scripts" CACHE DIRECTORY
add_custom_target(tests)
add_custom_command(TARGET tests POST_BUILD COMMAND "PYTHONPATH=${CMAKE_SOURCE_DIR}/../Uranium/:${CMAKE_SOURCE_DIR}" ${PYTHON_EXECUTABLE} -m pytest -r a --junitxml=${CMAKE_BINARY_DIR}/junit.xml ${CMAKE_SOURCE_DIR} || exit 0)
option(CURA_DEBUGMODE "Enable debug dialog and other debug features" OFF)
set(CURA_VERSION "master" CACHE STRING "Version name of Cura")
set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'")

View file

@ -0,0 +1,9 @@
from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
class BlockSlicingDecorator(SceneNodeDecorator):
def __init__(self):
super().__init__()
def isBlockSlicing(self):
return True

View file

@ -223,7 +223,7 @@ class BuildVolume(SceneNode):
scale_matrix = Matrix()
if self._width != 0:
# Scale circular meshes by aspect ratio if width != height
aspect = self._height / self._width
aspect = self._depth / self._width
scale_matrix.compose(scale = Vector(1, 1, aspect))
mb = MeshBuilder()
mb.addArc(max_w, Vector.Unit_Y, center = (0, min_h - z_fight_distance, 0), color = self.VolumeOutlineColor)
@ -283,6 +283,9 @@ class BuildVolume(SceneNode):
color = Color(0.0, 0.0, 0.0, 0.15)
for polygon in self._disallowed_areas:
points = polygon.getPoints()
if len(points) == 0:
continue
first = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, self._clamp(points[0][1], min_d, max_d))
previous_point = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, self._clamp(points[0][1], min_d, max_d))
for point in points:
@ -533,8 +536,11 @@ class BuildVolume(SceneNode):
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")
prime_tower_x = self._global_container_stack.getProperty("prime_tower_position_x", "value") - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left.
prime_tower_y = - self._global_container_stack.getProperty("prime_tower_position_y", "value") + machine_depth / 2
prime_tower_x = self._global_container_stack.getProperty("prime_tower_position_x", "value")
prime_tower_y = - self._global_container_stack.getProperty("prime_tower_position_y", "value")
if not self._global_container_stack.getProperty("machine_center_is_zero", "value"):
prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left.
prime_tower_y = prime_tower_y + machine_depth / 2
prime_tower_area = Polygon([
[prime_tower_x - prime_tower_size, prime_tower_y - prime_tower_size],
@ -565,8 +571,17 @@ class BuildVolume(SceneNode):
machine_width = self._global_container_stack.getProperty("machine_width", "value")
machine_depth = self._global_container_stack.getProperty("machine_depth", "value")
for extruder in used_extruders:
prime_x = extruder.getProperty("extruder_prime_pos_x", "value") - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left.
prime_y = machine_depth / 2 - extruder.getProperty("extruder_prime_pos_y", "value")
prime_x = extruder.getProperty("extruder_prime_pos_x", "value")
prime_y = - extruder.getProperty("extruder_prime_pos_y", "value")
#Ignore extruder prime position if it is not set
if prime_x == 0 and prime_y == 0:
result[extruder.getId()] = []
continue
if not self._global_container_stack.getProperty("machine_center_is_zero", "value"):
prime_x = prime_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left.
prime_y = prime_x + machine_depth / 2
prime_polygon = Polygon.approximatedCircle(PRIME_CLEARANCE)
prime_polygon = prime_polygon.translate(prime_x, prime_y)
@ -716,7 +731,12 @@ class BuildVolume(SceneNode):
#
# \return A sequence of setting values, one for each extruder.
def _getSettingFromAllExtruders(self, setting_key, property = "value"):
return ExtruderManager.getInstance().getAllExtruderSettings(setting_key, property)
all_values = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, property)
all_types = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, "type")
for i in range(len(all_values)):
if not all_values[i] and (all_types[i] == "int" or all_types[i] == "float"):
all_values[i] = 0
return all_values
## Private convenience function to get a setting from the support infill
# extruder.
@ -740,16 +760,21 @@ class BuildVolume(SceneNode):
multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1
if not multi_extrusion:
return self._global_container_stack.getProperty(setting_key, property)
stack = self._global_container_stack
else:
extruder_index = self._global_container_stack.getProperty(extruder_setting_key, "value")
extruder_index = self._global_container_stack.getProperty(extruder_setting_key, "value")
if extruder_index == "-1": # If extruder index is -1 use global instead
stack = self._global_container_stack
else:
extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(extruder_index)]
stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0]
if extruder_index == "-1": # If extruder index is -1 use global instead
return self._global_container_stack.getProperty(setting_key, property)
extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(extruder_index)]
stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0]
return stack.getProperty(setting_key, property)
value = stack.getProperty(setting_key, property)
setting_type = stack.getProperty(setting_key, "type")
if not value and (setting_type == "int" or setting_type == "float"):
return 0
return value
## Convenience function to calculate the disallowed radius around the edge.
#
@ -825,4 +850,4 @@ class BuildVolume(SceneNode):
_tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y"]
_ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"]
_distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts"]
_extruder_settings = ["support_enable", "support_interface_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_interface_extruder_nr", "brim_line_count", "adhesion_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used.
_extruder_settings = ["support_enable", "support_interface_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_interface_extruder_nr", "brim_line_count", "adhesion_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used.

View file

@ -12,6 +12,11 @@ from UM.Logger import Logger
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
try:
from cura.CuraVersion import CuraDebugMode
except ImportError:
CuraDebugMode = False # [CodeStyle: Reflecting imported value]
# List of exceptions that should be considered "fatal" and abort the program.
# These are primarily some exception types that we simply cannot really recover from
# (MemoryError and SystemError) and exceptions that indicate grave errors in the
@ -24,21 +29,18 @@ fatal_exception_types = [
]
def show(exception_type, value, tb):
debug_mode = True
Logger.log("c", "An uncaught exception has occurred!")
for line in traceback.format_exception(exception_type, value, tb):
for part in line.rstrip("\n").split("\n"):
Logger.log("c", part)
if not debug_mode and exception_type not in fatal_exception_types:
if not CuraDebugMode and exception_type not in fatal_exception_types:
return
application = QCoreApplication.instance()
if not application:
sys.exit(1)
dialog = QDialog()
dialog.setMinimumWidth(640)
dialog.setMinimumHeight(640)

View file

@ -1,5 +1,6 @@
from PyQt5.QtCore import QObject, pyqtSlot, QUrl
from PyQt5.QtCore import QObject, QUrl
from PyQt5.QtGui import QDesktopServices
from UM.FlameProfiler import pyqtSlot
from UM.Event import CallFunctionEvent
from UM.Application import Application

View file

@ -19,13 +19,16 @@ from UM.SaveFile import SaveFile
from UM.Scene.Selection import Selection
from UM.Scene.GroupDecorator import GroupDecorator
from UM.Settings.Validator import Validator
from UM.Message import Message
from UM.i18n import i18nCatalog
from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation
from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation
from UM.Operations.GroupedOperation import GroupedOperation
from UM.Operations.SetTransformOperation import SetTransformOperation
from UM.Operations.TranslateOperation import TranslateOperation
from cura.SetParentOperation import SetParentOperation
from cura.SliceableObjectDecorator import SliceableObjectDecorator
from cura.BlockSlicingDecorator import BlockSlicingDecorator
from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType
from UM.Settings.ContainerRegistry import ContainerRegistry
@ -34,8 +37,6 @@ from cura.Settings.MachineNameValidator import MachineNameValidator
from cura.Settings.ProfilesModel import ProfilesModel
from cura.Settings.QualityAndUserProfilesModel import QualityAndUserProfilesModel
from cura.Settings.SettingInheritanceManager import SettingInheritanceManager
from UM.i18n import i18nCatalog
from cura.Settings.UserProfilesModel import UserProfilesModel
from . import PlatformPhysics
@ -57,7 +58,8 @@ from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisi
from cura.Settings.QualitySettingsModel import QualitySettingsModel
from cura.Settings.ContainerManager import ContainerManager
from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS
from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS
from UM.FlameProfiler import pyqtSlot
from PyQt5.QtGui import QColor, QIcon
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtQml import qmlRegisterUncreatableType, qmlRegisterSingletonType, qmlRegisterType
@ -151,6 +153,9 @@ class CuraApplication(QtApplication):
}
)
self._currently_loading_files = []
self._non_sliceable_extensions = []
self._machine_action_manager = MachineActionManager.MachineActionManager()
self._machine_manager = None # This is initialized on demand.
self._setting_inheritance_manager = None
@ -228,7 +233,7 @@ class CuraApplication(QtApplication):
Preferences.getInstance().addPreference("cura/recent_files", "")
Preferences.getInstance().addPreference("cura/categories_expanded", "")
Preferences.getInstance().addPreference("cura/jobname_prefix", True)
Preferences.getInstance().addPreference("view/center_on_select", True)
Preferences.getInstance().addPreference("view/center_on_select", False)
Preferences.getInstance().addPreference("mesh/scale_to_fit", True)
Preferences.getInstance().addPreference("mesh/scale_tiny_meshes", True)
Preferences.getInstance().addPreference("cura/dialog_on_project_save", True)
@ -598,9 +603,12 @@ class CuraApplication(QtApplication):
def updatePlatformActivity(self, node = None):
count = 0
scene_bounding_box = None
is_block_slicing_node = False
for node in DepthFirstIterator(self.getController().getScene().getRoot()):
if type(node) is not SceneNode or not node.getMeshData():
if type(node) is not SceneNode or (not node.getMeshData() and not node.callDecoration("getLayerData")):
continue
if node.callDecoration("isBlockSlicing"):
is_block_slicing_node = True
count += 1
if not scene_bounding_box:
@ -610,6 +618,10 @@ class CuraApplication(QtApplication):
if other_bb is not None:
scene_bounding_box = scene_bounding_box + node.getBoundingBox()
print_information = self.getPrintInformation()
if print_information:
print_information.setPreSliced(is_block_slicing_node)
if not scene_bounding_box:
scene_bounding_box = AxisAlignedBox.Null
@ -730,7 +742,7 @@ class CuraApplication(QtApplication):
for node in DepthFirstIterator(self.getController().getScene().getRoot()):
if type(node) is not SceneNode:
continue
if not node.getMeshData() and not node.callDecoration("isGroup"):
if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"):
continue # Node that doesnt have a mesh and is not a group.
if node.getParent() and node.getParent().callDecoration("isGroup"):
continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
@ -1025,3 +1037,78 @@ class CuraApplication(QtApplication):
@pyqtSlot(str)
def log(self, msg):
Logger.log("d", msg)
@pyqtSlot(QUrl)
def readLocalFile(self, file):
if not file.isValid():
return
scene = self.getController().getScene()
for node in DepthFirstIterator(scene.getRoot()):
if node.callDecoration("isBlockSlicing"):
self.deleteAll()
break
f = file.toLocalFile()
extension = os.path.splitext(f)[1]
filename = os.path.basename(f)
if len(self._currently_loading_files) > 0:
# If a non-slicable file is already being loaded, we prevent loading of any further non-slicable files
if extension.lower() in self._non_sliceable_extensions:
message = Message(
self._i18n_catalog.i18nc("@info:status",
"Only one G-code file can be loaded at a time. Skipped importing {0}",
filename))
message.show()
return
# If file being loaded is non-slicable file, then prevent loading of any other files
extension = os.path.splitext(self._currently_loading_files[0])[1]
if extension.lower() in self._non_sliceable_extensions:
message = Message(
self._i18n_catalog.i18nc("@info:status",
"Can't open any other file if G-code is loading. Skipped importing {0}",
filename))
message.show()
return
self._currently_loading_files.append(f)
if extension in self._non_sliceable_extensions:
self.deleteAll()
job = ReadMeshJob(f)
job.finished.connect(self._readMeshFinished)
job.start()
def _readMeshFinished(self, job):
nodes = job.getResult()
filename = job.getFileName()
self._currently_loading_files.remove(filename)
for node in nodes:
node.setSelectable(True)
node.setName(os.path.basename(filename))
extension = os.path.splitext(filename)[1]
if extension.lower() in self._non_sliceable_extensions:
self.getController().setActiveView("LayerView")
view = self.getController().getActiveView()
view.resetLayerData()
view.setLayer(9999999)
view.calculateMaxLayers()
block_slicing_decorator = BlockSlicingDecorator()
node.addDecorator(block_slicing_decorator)
else:
sliceable_decorator = SliceableObjectDecorator()
node.addDecorator(sliceable_decorator)
scene = self.getController().getScene()
op = AddSceneNodeOperation(node, scene.getRoot())
op.push()
scene.sceneChanged.emit(node)
def addNonSliceableExtension(self, extension):
self._non_sliceable_extensions.append(extension)

View file

@ -2,4 +2,5 @@
# Cura is released under the terms of the AGPLv3 or higher.
CuraVersion = "@CURA_VERSION@"
CuraBuildType = "@CURA_BUILDTYPE@"
CuraBuildType = "@CURA_BUILDTYPE@"
CuraDebugMode = True if "@CURA_DEBUGMODE@" == "ON" else False

View file

@ -0,0 +1,13 @@
from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
class GCodeListDecorator(SceneNodeDecorator):
def __init__(self):
super().__init__()
self._gcode_list = []
def getGCodeList(self):
return self._gcode_list
def setGCodeList(self, list):
self._gcode_list = list

View file

@ -6,7 +6,8 @@ from UM.PluginRegistry import PluginRegistry # So MachineAction can be added as
from UM.Settings.ContainerRegistry import ContainerRegistry
from UM.Settings.DefinitionContainer import DefinitionContainer
from PyQt5.QtCore import QObject, pyqtSlot
from PyQt5.QtCore import QObject
from UM.FlameProfiler import pyqtSlot
## Raised when trying to add an unknown machine action as a required action
class UnknownMachineActionError(Exception):

View file

@ -1,7 +1,8 @@
# Copyright (c) 2015 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty, pyqtSlot
from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty
from UM.FlameProfiler import pyqtSlot
from UM.Application import Application
from UM.Qt.Duration import Duration
@ -13,6 +14,9 @@ import math
import os.path
import unicodedata
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
## A class for processing and calculating minimum, current and maximum print time as well as managing the job name
#
# This class contains all the logic relating to calculation and slicing for the
@ -49,6 +53,8 @@ class PrintInformation(QObject):
self._material_lengths = []
self._material_weights = []
self._pre_sliced = False
self._backend = Application.getInstance().getBackend()
if self._backend:
self._backend.printDurationMessage.connect(self._onPrintDurationMessage)
@ -61,6 +67,16 @@ class PrintInformation(QObject):
currentPrintTimeChanged = pyqtSignal()
preSlicedChanged = pyqtSignal()
@pyqtProperty(bool, notify=preSlicedChanged)
def preSliced(self):
return self._pre_sliced
def setPreSliced(self, pre_sliced):
self._pre_sliced = pre_sliced
self.preSlicedChanged.emit()
@pyqtProperty(Duration, notify = currentPrintTimeChanged)
def currentPrintTime(self):
return self._current_print_time
@ -122,7 +138,9 @@ class PrintInformation(QObject):
def createJobName(self, base_name):
base_name = self._stripAccents(base_name)
self._setAbbreviatedMachineName()
if Preferences.getInstance().getValue("cura/jobname_prefix"):
if self._pre_sliced:
return catalog.i18nc("@label", "Pre-sliced file {0}", base_name)
elif Preferences.getInstance().getValue("cura/jobname_prefix"):
return self._abbr_machine + "_" + base_name
else:
return base_name
@ -150,4 +168,4 @@ class PrintInformation(QObject):
## Utility method that strips accents from characters (eg: â -> a)
def _stripAccents(self, str):
return ''.join(char for char in unicodedata.normalize('NFD', str) if unicodedata.category(char) != 'Mn')
return ''.join(char for char in unicodedata.normalize('NFD', str) if unicodedata.category(char) != 'Mn')

View file

@ -224,6 +224,9 @@ class QualityManager:
material_ids = set()
for material_instance in material_containers:
if material_instance is not None:
# Add the parent material too.
for basic_material in self._getBasicMaterials(material_instance):
material_ids.add(basic_material.getId())
material_ids.add(material_instance.getId())
containers = ContainerRegistry.getInstance().findInstanceContainers(**criteria)

View file

@ -4,7 +4,8 @@
import os.path
import urllib
from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal, QUrl, QVariant
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, QUrl, QVariant
from UM.FlameProfiler import pyqtSlot
from PyQt5.QtWidgets import QMessageBox
from UM.PluginRegistry import PluginRegistry

View file

@ -1,7 +1,8 @@
# Copyright (c) 2016 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QObject, QVariant #For communicating data and events to Qt.
from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant #For communicating data and events to Qt.
from UM.FlameProfiler import pyqtSlot
from UM.Application import Application #To get the global container stack to find the current machine.
from UM.Logger import Logger
@ -355,8 +356,11 @@ class ExtruderManager(QObject):
#The platform adhesion extruder. Not used if using none.
if global_stack.getProperty("adhesion_type", "value") != "none":
used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("adhesion_extruder_nr", "value"))])
return [container_registry.findContainerStacks(id = stack_id)[0] for stack_id in used_extruder_stack_ids]
try:
return [container_registry.findContainerStacks(id = stack_id)[0] for stack_id in used_extruder_stack_ids]
except IndexError: # One or more of the extruders was not found.
Logger.log("e", "Unable to find one or more of the extruders in %s", used_extruder_stack_ids)
return []
## Removes the container stack and user profile for the extruders for a specific machine.
#
@ -395,7 +399,12 @@ class ExtruderManager(QObject):
# \return \type{List[ContainerStack]} a list of
def getActiveExtruderStacks(self):
global_stack = Application.getInstance().getGlobalContainerStack()
return list(self._extruder_trains[global_stack.getId()].values()) if global_stack else []
result = []
if global_stack:
for extruder in sorted(self._extruder_trains[global_stack.getId()]):
result.append(self._extruder_trains[global_stack.getId()][extruder])
return result
def __globalContainerStackChanged(self) -> None:
self._addCurrentMachineExtruders()

View file

@ -2,7 +2,8 @@
# Cura is released under the terms of the AGPLv3 or higher.
from typing import Union
from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal
from UM.FlameProfiler import pyqtSlot
from PyQt5.QtWidgets import QMessageBox
from UM import Util
@ -419,6 +420,17 @@ class MachineManager(QObject):
return False
@pyqtProperty(int, notify = activeStackValueChanged)
def numUserSettings(self):
if not self._global_container_stack:
return 0
num_user_settings = 0
num_user_settings += len(self._global_container_stack.getTop().findInstances())
stacks = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()))
for stack in stacks:
num_user_settings += len(stack.getTop().findInstances())
return num_user_settings
## Delete a user setting from the global stack and all extruder stacks.
# \param key \type{str} the name of the key to delete
@pyqtSlot(str)
@ -494,6 +506,17 @@ class MachineManager(QObject):
return ""
@pyqtProperty("QVariantList", notify=activeVariantChanged)
def activeVariantNames(self):
result = []
if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None:
for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
variant_container = stack.findContainer({"type": "variant"})
if variant_container and variant_container != self._empty_variant_container:
result.append(variant_container.getName())
return result
@pyqtProperty("QVariantList", notify = activeMaterialChanged)
def activeMaterialNames(self):
result = []
@ -823,6 +846,8 @@ class MachineManager(QObject):
for stack in stacks:
material = stack.findContainer(type="material")
quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material])
if not quality: #No quality profile is found for this quality type.
quality = self._empty_quality_container
result.append({"stack": stack, "quality": quality, "quality_changes": empty_quality_changes})
if extruder_stacks:
@ -876,6 +901,8 @@ class MachineManager(QObject):
material = stack.findContainer(type="material")
quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material])
if not quality: #No quality profile found for this quality type.
quality = self._empty_quality_container
result.append({"stack": stack, "quality": quality, "quality_changes": quality_changes})
@ -975,6 +1002,15 @@ class MachineManager(QObject):
return ""
@pyqtProperty(str, notify=globalContainerChanged)
def activeDefinitionName(self):
if self._global_container_stack:
definition = self._global_container_stack.getBottom()
if definition:
return definition.getName()
return ""
## Get the Definition ID to use to select quality profiles for the currently active machine
# \returns DefinitionID (string) if found, empty string otherwise
# \sa getQualityDefinitionId

View file

@ -192,6 +192,7 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
profile_value_source = ""
for container in containers:
new_value = container.getProperty(definition.key, "value")
if new_value is not None:
profile_value_source = container.getMetaDataEntry("type")
profile_value = new_value
@ -199,7 +200,7 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
# Global tab should use resolve (if there is one)
if not self._extruder_id:
resolve_value = global_container_stack.getProperty(definition.key, "resolve")
if resolve_value is not None and profile_value is not None:
if resolve_value is not None and profile_value is not None and profile_value_source != "quality_changes":
profile_value = resolve_value
user_value = None

View file

@ -1,7 +1,8 @@
# Copyright (c) 2016 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal
from UM.FlameProfiler import pyqtSlot
from UM.Application import Application
from UM.Logger import Logger
@ -36,7 +37,8 @@ class SettingInheritanceManager(QObject):
def getChildrenKeysWithOverride(self, key):
definitions = self._global_container_stack.getBottom().findDefinitions(key=key)
if not definitions:
return
Logger.log("w", "Could not find definition for key [%s]", key)
return []
result = []
for key in definitions[0].getAllKeys():
if key in self._settings_with_inheritance_warning:
@ -55,7 +57,8 @@ class SettingInheritanceManager(QObject):
definitions = self._global_container_stack.getBottom().findDefinitions(key=key)
if not definitions:
return
Logger.log("w", "Could not find definition for key [%s] (2)", key)
return []
result = []
for key in definitions[0].getAllKeys():
if self._settingIsOverwritingInheritance(key, extruder):

View file

@ -0,0 +1,12 @@
from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
class SliceableObjectDecorator(SceneNodeDecorator):
def __init__(self):
super().__init__()
def isSliceable(self):
return True
def __deepcopy__(self, memo):
return type(self)()

View file

@ -0,0 +1,35 @@
How to Profile Cura and See What It is Doing
============================================
Cura has a simple flame graph profiler available as a plugin which can be used to see what Cura is doing as it runs and how much time it takes. A flame graph profile shows its output as a timeline and stacks of "blocks" which represent parts of the code and are stacked up to show call depth. These often form little peaks which look like flames. It is a simple yet powerful way to visualise the activity of a program.
Setting up and installing the profiler
--------------------------------------
The profiler plugin is kept outside of the Cura source code here: https://github.com/sedwards2009/cura-big-flame-graph
To install it do:
* Use `git clone https://github.com/sedwards2009/cura-big-flame-graph.git` to grab a copy of the code.
* Copy the `BigFlameGraph` directory into the `plugins` directory in your local Cura.
* Set the `URANIUM_FLAME_PROFILER` environment variable to something before starting Cura. This flags to the profiler code in Cura to activate and insert the needed hooks into the code.
Using the profiler
------------------
To open the profiler go to the Extensions menu and select "Start BFG" from the "Big Flame Graph" menu. A page will open up in your default browser. This is the profiler UI. Click on "Record" to start recording, go to Cura and perform an action and then back in the profiler click on "Stop". The results should now load in.
The time scale is at the top of the window. The blocks should be read as meaning the blocks at the bottom call the blocks which are stacked on top of them. Hover the mouse to get more detailed information about a block such as the name of the code involved and its duration. Use the zoom buttons or mouse wheel to zoom in. The display can be panned by dragging with the left mouse button.
What the Profiler Sees
----------------------
The profiler doesn't capture every function call in Cura. It hooks into a number of important systems which give a good picture of activity without too much run time overhead. The most important system is Uranium's signal mechanism and PyQt5 slots. Functions which are called via the signal mechanism are recorded and thier names appear in the results. PyQt5 slots appear in the results with the prefix `[SLOT]`.
Note that not all slots are captured. Only those slots which belong to classes which use the `pyqtSlot` decorator from the `UM.FlameProfiler` module.
Manually adding profiling code to more detail
---------------------------------------------
It is also possible to manually add decorators to methods to make them appear in the profiler results. The `UM.FlameProfiler` module contains the `profile` decorator which can be applied to methods. There is also a `profileCall` context manager which can be used with Python's `with` statement to measure a block of code. `profileCall` takes one argument, a label to use in the results.

View file

@ -1,21 +1,21 @@
# Copyright (c) 2015 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from UM.Mesh.MeshReader import MeshReader
from UM.Mesh.MeshBuilder import MeshBuilder
import os.path
import zipfile
from UM.Job import Job
from UM.Logger import Logger
from UM.Math.Matrix import Matrix
from UM.Math.Vector import Vector
from UM.Scene.SceneNode import SceneNode
from UM.Mesh.MeshBuilder import MeshBuilder
from UM.Mesh.MeshReader import MeshReader
from UM.Scene.GroupDecorator import GroupDecorator
from UM.Job import Job
from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator
from UM.Application import Application
from cura.Settings.ExtruderManager import ExtruderManager
from cura.QualityManager import QualityManager
import os.path
import zipfile
from UM.Scene.SceneNode import SceneNode
try:
import xml.etree.cElementTree as ET
@ -262,4 +262,4 @@ class ThreeMFReader(MeshReader):
Logger.log("w", "Unrecognised unit %s used. Assuming mm instead", unit)
scale = 1
return Vector(scale, scale, scale)
return Vector(scale, scale, scale)

View file

@ -54,7 +54,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
else:
Logger.log("w", "Could not find reader that was able to read the scene data for 3MF workspace")
return WorkspaceReader.PreReadResult.failed
machine_name = ""
machine_type = ""
variant_type_name = i18n_catalog.i18nc("@label", "Nozzle")
num_extruders = 0
# Check if there are any conflicts, so we can ask the user.
archive = zipfile.ZipFile(file_name, "r")
cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")]
@ -76,6 +81,30 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
machine_conflict = True
Job.yieldThread()
definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)]
for definition_container_file in definition_container_files:
container_id = self._stripFileToId(definition_container_file)
definitions = self._container_registry.findDefinitionContainers(id=container_id)
if not definitions:
definition_container = DefinitionContainer(container_id)
definition_container.deserialize(archive.open(definition_container_file).read().decode("utf-8"))
else:
definition_container = definitions[0]
if definition_container.getMetaDataEntry("type") != "extruder":
machine_type = definition_container.getName()
variant_type_name = definition_container.getMetaDataEntry("variants_name", variant_type_name)
else:
num_extruders += 1
Job.yieldThread()
if num_extruders == 0:
num_extruders = 1 # No extruder stacks found, which means there is one extruder
extruders = num_extruders * [""]
material_labels = []
material_conflict = False
xml_material_profile = self._getXmlProfileClass()
@ -95,6 +124,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
quality_name = ""
quality_type = ""
num_settings_overriden_by_quality_changes = 0 # How many settings are changed by the quality changes
num_user_settings = 0
for instance_container_file in instance_container_files:
container_id = self._stripFileToId(instance_container_file)
instance_container = InstanceContainer(container_id)
@ -117,6 +147,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
if quality_name == "":
quality_name = instance_container.getName()
quality_type = instance_container.getName()
elif container_type == "user":
num_user_settings += len(instance_container._instances)
Job.yieldThread()
num_visible_settings = 0
try:
@ -142,9 +175,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
self._dialog.setQualityName(quality_name)
self._dialog.setQualityType(quality_type)
self._dialog.setNumSettingsOverridenByQualityChanges(num_settings_overriden_by_quality_changes)
self._dialog.setNumUserSettings(num_user_settings)
self._dialog.setActiveMode(active_mode)
self._dialog.setMachineName(machine_name)
self._dialog.setMaterialLabels(material_labels)
self._dialog.setMachineType(machine_type)
self._dialog.setExtruders(extruders)
self._dialog.setVariantType(variant_type_name)
self._dialog.setHasObjectsOnPlate(Application.getInstance().getPlatformActivity)
self._dialog.show()

View file

@ -1,7 +1,8 @@
# Copyright (c) 2016 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from PyQt5.QtCore import Qt, QUrl, pyqtSignal, pyqtSlot, QObject, pyqtProperty, QCoreApplication
from PyQt5.QtCore import Qt, QUrl, pyqtSignal, QObject, pyqtProperty, QCoreApplication
from UM.FlameProfiler import pyqtSlot
from PyQt5.QtQml import QQmlComponent, QQmlContext
from UM.PluginRegistry import PluginRegistry
from UM.Application import Application
@ -36,12 +37,16 @@ class WorkspaceDialog(QObject):
self._has_machine_conflict = False
self._has_material_conflict = False
self._num_visible_settings = 0
self._num_user_settings = 0
self._active_mode = ""
self._quality_name = ""
self._num_settings_overriden_by_quality_changes = 0
self._quality_type = ""
self._machine_name = ""
self._machine_type = ""
self._variant_type = ""
self._material_labels = []
self._extruders = []
self._objects_on_plate = False
machineConflictChanged = pyqtSignal()
@ -55,6 +60,34 @@ class WorkspaceDialog(QObject):
machineNameChanged = pyqtSignal()
materialLabelsChanged = pyqtSignal()
objectsOnPlateChanged = pyqtSignal()
numUserSettingsChanged = pyqtSignal()
machineTypeChanged = pyqtSignal()
variantTypeChanged = pyqtSignal()
extrudersChanged = pyqtSignal()
@pyqtProperty(str, notify=variantTypeChanged)
def variantType(self):
return self._variant_type
def setVariantType(self, variant_type):
self._variant_type = variant_type
self.variantTypeChanged.emit()
@pyqtProperty(str, notify=machineTypeChanged)
def machineType(self):
return self._machine_type
def setMachineType(self, machine_type):
self._machine_type = machine_type
self.machineTypeChanged.emit()
def setNumUserSettings(self, num_user_settings):
self._num_user_settings = num_user_settings
self.numVisibleSettingsChanged.emit()
@pyqtProperty(int, notify=numUserSettingsChanged)
def numUserSettings(self):
return self._num_user_settings
@pyqtProperty(bool, notify=objectsOnPlateChanged)
def hasObjectsOnPlate(self):
@ -72,6 +105,14 @@ class WorkspaceDialog(QObject):
self._material_labels = material_labels
self.materialLabelsChanged.emit()
@pyqtProperty("QVariantList", notify=extrudersChanged)
def extruders(self):
return self._extruders
def setExtruders(self, extruders):
self._extruders = extruders
self.extrudersChanged.emit()
@pyqtProperty(str, notify = machineNameChanged)
def machineName(self):
return self._machine_name
@ -144,6 +185,11 @@ class WorkspaceDialog(QObject):
if key in self._result:
self._result[key] = strategy
## Close the backend: otherwise one could end up with "Slicing..."
@pyqtSlot()
def closeBackend(self):
Application.getInstance().getBackend().close()
def setMaterialConflict(self, material_conflict):
self._has_material_conflict = material_conflict
self.materialConflictChanged.emit()

View file

@ -16,9 +16,9 @@ UM.Dialog
minimumWidth: 550
maximumWidth: 550
height: 350
minimumHeight: 350
maximumHeight: 350
height: 400
minimumHeight: 400
maximumHeight: 400
property int comboboxHeight: 15
property int spacerHeight: 10
onClosing: manager.notifyClosed()
@ -28,12 +28,20 @@ UM.Dialog
{
machineResolveComboBox.currentIndex = 0
qualityChangesResolveComboBox.currentIndex = 0
materialConflictComboBox.currentIndex = 0
materialResolveComboBox.currentIndex = 0
}
}
Item
{
anchors.fill: parent
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.topMargin: 20
anchors.bottomMargin: 20
anchors.leftMargin:20
anchors.rightMargin: 20
UM.I18nCatalog
{
@ -77,27 +85,22 @@ UM.Dialog
width: height
}
Label
{
text: catalog.i18nc("@action:label", "Printer settings")
font.bold: true
}
Row
{
width: parent.width
height: childrenRect.height
width: parent.width
Label
{
text: catalog.i18nc("@action:label", "Name")
width: parent.width / 3
text: catalog.i18nc("@action:label", "Printer settings")
font.bold: true
width: parent.width /3
}
Label
Item
{
text: manager.machineName
// spacer
height: spacerHeight
width: parent.width / 3
}
UM.TooltipArea
{
id: machineResolveTooltip
@ -118,16 +121,20 @@ UM.Dialog
}
}
}
Item // Spacer
Row
{
height: spacerHeight
width: height
}
Label
{
text: catalog.i18nc("@action:label", "Profile settings")
font.bold: true
width: parent.width
height: childrenRect.height
Label
{
text: catalog.i18nc("@action:label", "Type")
width: parent.width / 3
}
Label
{
text: manager.machineType
width: parent.width / 3
}
}
Row
@ -141,10 +148,32 @@ UM.Dialog
}
Label
{
text: manager.qualityName
text: manager.machineName
width: parent.width / 3
}
}
Item // Spacer
{
height: spacerHeight
width: height
}
Row
{
height: childrenRect.height
width: parent.width
Label
{
text: catalog.i18nc("@action:label", "Profile settings")
font.bold: true
width: parent.width / 3
}
Item
{
// spacer
height: spacerHeight
width: parent.width / 3
}
UM.TooltipArea
{
id: qualityChangesResolveTooltip
@ -170,13 +199,44 @@ UM.Dialog
width: parent.width
height: childrenRect.height
Label
{
text: catalog.i18nc("@action:label", "Name")
width: parent.width / 3
}
Label
{
text: manager.qualityName
width: parent.width / 3
}
}
Row
{
width: parent.width
height: manager.numUserSettings != 0 ? childrenRect.height : 0
Label
{
text: catalog.i18nc("@action:label", "Not in profile")
width: parent.width / 3
}
Label
{
text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings)
width: parent.width / 3
}
visible: manager.numUserSettings != 0
}
Row
{
width: parent.width
height: manager.numSettingsOverridenByQualityChanges != 0 ? childrenRect.height : 0
Label
{
text: catalog.i18nc("@action:label", "Derivative from")
width: parent.width / 3
}
Label
{
text: catalog.i18nc("@action:label", "%1, %2 override(s)" ).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges)
text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges)
width: parent.width / 3
}
visible: manager.numSettingsOverridenByQualityChanges != 0
@ -186,11 +246,41 @@ UM.Dialog
height: spacerHeight
width: height
}
Label
Row
{
text: catalog.i18nc("@action:label", "Material settings")
font.bold: true
height: childrenRect.height
width: parent.width
Label
{
text: catalog.i18nc("@action:label", "Material settings")
font.bold: true
width: parent.width / 3
}
Item
{
// spacer
height: spacerHeight
width: parent.width / 3
}
UM.TooltipArea
{
id: materialResolveTooltip
width: parent.width / 3
height: visible ? comboboxHeight : 0
visible: manager.materialConflict
text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?")
ComboBox
{
model: resolveStrategiesModel
textRole: "label"
id: materialResolveComboBox
width: parent.width
onActivated:
{
manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key)
}
}
}
}
Repeater
@ -213,37 +303,6 @@ UM.Dialog
}
}
Row
{
width: parent.width
height: childrenRect.height
visible: manager.materialConflict
Item
{
width: parent.width / 3 * 2
height: comboboxHeight
}
UM.TooltipArea
{
id: materialResolveTooltip
width: parent.width / 3
height: visible ? comboboxHeight : 0
text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?")
ComboBox
{
model: resolveStrategiesModel
textRole: "label"
id: materialResolveComboBox
width: parent.width
onActivated:
{
manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key)
}
}
}
}
Item // Spacer
{
height: spacerHeight
@ -290,30 +349,47 @@ UM.Dialog
height: spacerHeight
width: height
}
Label
Row
{
text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the buildplate")
visible: manager.hasObjectsOnPlate
color: "red"
width: parent.width
wrapMode: Text.Wrap
height: childrenRect.height
visible: manager.hasObjectsOnPlate
UM.RecolorImage
{
width: warningLabel.height
height: width
source: UM.Theme.getIcon("notice")
color: "black"
}
Label
{
id: warningLabel
text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the buildplate")
wrapMode: Text.Wrap
}
}
}
}
rightButtons: [
Button
{
id: ok_button
text: catalog.i18nc("@action:button","OK");
onClicked: { manager.onOkButtonClicked() }
enabled: true
},
Button
{
id: cancel_button
text: catalog.i18nc("@action:button","Cancel");
onClicked: { manager.onCancelButtonClicked() }
enabled: true
anchors.bottom: parent.bottom
anchors.right: ok_button.left
anchors.bottomMargin: - 0.5 * height
anchors.rightMargin:2
}
]
Button
{
id: ok_button
text: catalog.i18nc("@action:button","Open");
onClicked: { manager.closeBackend(); manager.onOkButtonClicked() }
anchors.bottomMargin: - 0.5 * height
anchors.bottom: parent.bottom
anchors.right: parent.right
}
}
}

View file

@ -4,10 +4,16 @@
from . import ThreeMFReader
from . import ThreeMFWorkspaceReader
from UM.i18n import i18nCatalog
import UM.Platform
catalog = i18nCatalog("cura")
def getMetaData():
# Workarround for osx not supporting double file extensions correclty.
if UM.Platform.isOSX():
workspace_extension = "3mf"
else:
workspace_extension = "curaproject.3mf"
return {
"plugin": {
"name": catalog.i18nc("@label", "3MF Reader"),
@ -25,7 +31,7 @@ def getMetaData():
"workspace_reader":
[
{
"extension": "curaproject.3mf",
"extension": workspace_extension,
"description": catalog.i18nc("@item:inlistbox", "3MF File")
}
]

View file

@ -1,3 +1,128 @@
[2.4.0]
*Project saving & opening
You can now save your build plate configuration - with all your active machines meshes and settings. When you reopen the project file, youll find that the build plate configuration and all settings will be exactly as you last left them when you saved the project.
*Setting search
You can now search the custom settings directly from the side panel, which means you can easily locate the setting you need to tweak. Thanks to community member Aldo Hoeben & LulzBot for this feature.
*Editing start g-code and end g-code
Aldo Hoeben also added this feature, enabling you to alter both start and end code g-code settings for single extrusion machines.
*Multiply object function
By right-clicking on an object, you can multiply it by a variable amount, rather than duplicating multiple times. Thanks again to Aldo Hoeben for this feature.
*Ultimaker 3 single extrusion prints
Dual extrusion printers now allow for single extrusion prints in a larger printable area.
*Streaming printer monitor view
Ultimaker 3s camera views no longer only show snapshots. They now show a live stream.
*Explain why slicing is disabled
When slicing is blocked by settings with error values, a message now appears, clearly indicating which settings need to be changed.
*Ultimaker 3 print profiles
The initial and final printing temperatures reduce the amount of oozing during PLA-PLA, PLA-PVA and Nylon-PVA prints. This means printing a prime tower is now optional (except for CPE and ABS at the moment). The new Ultimaker 3 printing profiles ensure increased reliability and shorter print time.
*Initial Layer Printing Temperature
Initial and final printing temperature settings have been tuned for higher quality results.
*Printing temperature of the materials
The printing temperature of the materials in the material profiles is now the same as the printing temperature for the Normal Quality profile.
*Improved PLA-PVA layer adhesion
The PVA jerk and acceleration have been optimized to improve the layer adhesion between PVA and PLA.
*Default build plate adhesion type for Nylon
The default build plate adhesion type for Nylon prints has been changed from raft to brim.
*Support Interface Thickness
The Support Roof Thickness is now 0.8 mm and PVA support infill has been slightly decreased to lower the printing time.
*Ultimaker 2+ PC prints
In the polycarbonate profiles, the raft settings for the 0.25 mm and 0.4 mm nozzles are tweaked for less warping.
*Hollow prime tower
Print the prime tower hollow to minimize material use while maintaining stability. Wiping the oozed material on the prime tower is now done from the inside, which means the excess material is contained within the prime tower.
*Precooling and prewarming
Printing now starts at a lower temperature, before increasing swiftly to the normal printing temperature. Cooling also starts earlier than the last extrusion (with that print core). This minimizes the materials heat absorption, which decreases the amount of degradation of the PVA material. This reduces the risk of clogging your nozzles.
*Remove Mesh Intersection
You are now able to turn off resolving of overlapping meshes. Models can now overlap, so you can perform build plate color mixing, by placing meshes over one another and lowering their flow.
*Alternate Mesh Removal
For areas where two models overlap, let each layer of the overlapping volume alternate (depending on which object the overlapping area of that layer belongs to). This improves the bonding between dual color models and allows for more controlled build plate color mixing.
*Hollow Object
Remove the infill from a mesh and treat internal cavities as overhangs, so as to create support in the models interior. This experimental setting greatly reduces the amount of material needed on the inside of the print.
*Fill Gaps Between Walls
Fill up small gaps between consecutive walls, making thin pieces in your model dense, rather than hollow. This feature makes the thin pieces stronger.
*Cubic subdivision infill
This experimental new infill pattern is similar to cubic infill, but generates bigger cubes farther inside the mesh. This greatly reduces print times and material use, while maintaining structural integrity. Thanks to community members Martin Boerwinckle and Nicholas Seward for this feature.
*Concentric 3D infill
This new infill pattern is similar to concentric infill, but touches the shell every X layers, creating better support for the top layers.
* Printing Temperature Initial Layer
Nozzle temperature to be used during the first layer.
*Build Plate Temperature Initial Layer
Bed temperature to be used during the first layer.
*Initial Fan Speed
Fan speed to be used during the first layer.
*Retract at Layer Change
Retract each time the printer progresses to the next layer.
*Outer Wall Wipe Distance
Wipe the nozzle after printing the outer wall.
*Set X-Y coordinate of z-seam
Select where to place the Z seam.
*Start Layers with the Same Part
Start each layer with the part closest to a given location.
*Turn off nozzle after last use
Turn off the nozzle after its last use, while other nozzles are still in use.
*Option for no build plate adhesion
Select not to print any build plate adhesion helper parts.
*Anti-overhang and support meshes
Use a mesh to specify a volume within which to classify nothing as overhang for support or specify a volume within which to print support.
*Delta printer support
This release adds support for printers with elliptic buildplates. This feature has not been extensively tested so please let us know if it works or get involved in improving it.
*bugfixes
The user is now notified when a new version of Cura is available.
When searching in the setting visibility preferences, the category for each setting is always displayed.
3MF files are now saved and loaded correctly.
Dragging a profile onto Cura now loads it automatically.
You can now view which print cores and materials are currently in your Ultimaker 3, via the machine manager.
You can now add the heated bed upgrade etc. from the machine manager.
Print core and material is now arranged under extruder tabs.
Cura now remembers all printers and profiles when you open just after closing it.
You can now duplicate the standard profiles.
Layer view now doesnt use as much RAM.
Its now quicker to change the value of the Support Enable setting.
Changing a setting updates all dependent settings more quickly.
Having errors in your setting values now always blocks slicing.
Selecting a model with any active tool no longer causes a reslice.
The prime poop now introduces a separate area where you cannot print.
Support Extruder setting is now near the support settings.
Build Plate Adhesion Extruder setting is now near the build plate adhesion settings.
Z hop settings have been moved to the Travel category.
Inactive nozzle wiping on the prime tower is re-enabled.
There are no more unnecessary retractions in support.
Each layer now has less extruder switches than the machine has extruders.
Concentric infill doesnt generate the first infill perimeter next to the walls.
Extruder priming now always happens on the first layer.
[2.3.1]
*Layer Height in Profile Selection
Added the layer height to the profile selection menu.

View file

@ -12,6 +12,8 @@ from UM.PluginRegistry import PluginRegistry
from UM.Resources import Resources
from UM.Settings.Validator import ValidatorState #To find if a setting is in an error state. We can't slice then.
from UM.Platform import Platform
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from cura.Settings.ExtruderManager import ExtruderManager
from . import ProcessSlicedLayersJob
@ -65,6 +67,8 @@ class CuraEngineBackend(Backend):
self._scene = Application.getInstance().getController().getScene()
self._scene.sceneChanged.connect(self._onSceneChanged)
self._pause_slicing = False
# Workaround to disable layer view processing if layer view is not active.
self._layer_view_active = False
Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged)
@ -145,6 +149,9 @@ class CuraEngineBackend(Backend):
## Perform a slice of the scene.
def slice(self):
Logger.log("d", "Starting slice job...")
if self._pause_slicing:
return
self._slice_start_time = time()
if not self._enabled or not self._global_container_stack: # We shouldn't be slicing.
# try again in a short time
@ -178,6 +185,17 @@ class CuraEngineBackend(Backend):
self._start_slice_job.start()
self._start_slice_job.finished.connect(self._onStartSliceCompleted)
def pauseSlicing(self):
self.close()
self._pause_slicing = True
self.backendStateChange.emit(BackendState.Disabled)
def continueSlicing(self):
if self._pause_slicing:
self._pause_slicing = False
self.backendStateChange.emit(BackendState.NotStarted)
## Terminate the engine process.
def _terminate(self):
self._slicing = False
@ -293,6 +311,19 @@ class CuraEngineBackend(Backend):
if source is self._scene.getRoot():
return
should_pause = False
for node in DepthFirstIterator(self._scene.getRoot()):
if node.callDecoration("isBlockSlicing"):
should_pause = True
gcode_list = node.callDecoration("getGCodeList")
if gcode_list is not None:
self._scene.gcode_list = gcode_list
if should_pause:
self.pauseSlicing()
else:
self.continueSlicing()
if source.getMeshData() is None:
return

View file

@ -253,7 +253,7 @@ class StartSliceJob(Job):
for key, value in settings.items(): #Add all submessages for each individual setting.
setting_message = self._slice_message.getMessage("global_settings").addRepeatedMessage("settings")
setting_message.name = key
if key == "machine_start_gcode" or key == "machine_end_gcode": #If it's a g-code message, use special formatting.
if key == "machine_start_gcode" or key == "machine_end_gcode" or key == "machine_extruder_start_code" or key == "machine_extruder_end_code": #If it's a g-code message, use special formatting.
setting_message.value = self._expandGcodeTokens(key, value, settings)
else:
setting_message.value = str(value).encode("utf-8")

View file

@ -0,0 +1,303 @@
# Copyright (c) 2016 Aleph Objects, Inc.
# Cura is released under the terms of the AGPLv3 or higher.
from UM.Application import Application
from UM.Logger import Logger
from UM.Math.AxisAlignedBox import AxisAlignedBox
from UM.Math.Vector import Vector
from UM.Mesh.MeshReader import MeshReader
from UM.Message import Message
from UM.Scene.SceneNode import SceneNode
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
from cura import LayerDataBuilder
from cura import LayerDataDecorator
from cura.LayerPolygon import LayerPolygon
from cura.GCodeListDecorator import GCodeListDecorator
import numpy
import math
import re
from collections import namedtuple
# Class for loading and parsing G-code files
class GCodeReader(MeshReader):
def __init__(self):
super(GCodeReader, self).__init__()
self._supported_extensions = [".gcode", ".g"]
Application.getInstance().hideMessageSignal.connect(self._onHideMessage)
self._cancelled = False
self._message = None
self._clearValues()
self._scene_node = None
self._position = namedtuple('Position', ['x', 'y', 'z', 'e'])
def _clearValues(self):
self._extruder = 0
self._layer_type = LayerPolygon.Inset0Type
self._layer = 0
self._previous_z = 0
self._layer_data_builder = LayerDataBuilder.LayerDataBuilder()
self._center_is_zero = False
@staticmethod
def _getValue(line, code):
n = line.find(code)
if n < 0:
return None
n += len(code)
pattern = re.compile("[;\s]")
match = pattern.search(line, n)
m = match.start() if match is not None else -1
try:
if m < 0:
return line[n:]
return line[n:m]
except:
return None
def _getInt(self, line, code):
value = self._getValue(line, code)
try:
return int(value)
except:
return None
def _getFloat(self, line, code):
value = self._getValue(line, code)
try:
return float(value)
except:
return None
def _onHideMessage(self, message):
if message == self._message:
self._cancelled = True
@staticmethod
def _getNullBoundingBox():
return AxisAlignedBox(minimum=Vector(0, 0, 0), maximum=Vector(10, 10, 10))
def _createPolygon(self, current_z, path):
countvalid = 0
for point in path:
if point[3] > 0:
countvalid += 1
if countvalid < 2:
return False
try:
self._layer_data_builder.addLayer(self._layer)
self._layer_data_builder.setLayerHeight(self._layer, path[0][2])
self._layer_data_builder.setLayerThickness(self._layer, math.fabs(current_z - self._previous_z))
this_layer = self._layer_data_builder.getLayer(self._layer)
except ValueError:
return False
count = len(path)
line_types = numpy.empty((count - 1, 1), numpy.int32)
line_widths = numpy.empty((count - 1, 1), numpy.float32)
# TODO: need to calculate actual line width based on E values
line_widths[:, 0] = 0.4
points = numpy.empty((count, 3), numpy.float32)
i = 0
for point in path:
points[i, 0] = point[0]
points[i, 1] = point[2]
points[i, 2] = -point[1]
if i > 0:
line_types[i - 1] = point[3]
if point[3] in [LayerPolygon.MoveCombingType, LayerPolygon.MoveRetractionType]:
line_widths[i - 1] = 0.2
i += 1
this_poly = LayerPolygon(self._layer_data_builder, self._extruder, line_types, points, line_widths)
this_poly.buildCache()
this_layer.polygons.append(this_poly)
return True
def _gCode0(self, position, params, path):
x, y, z, e = position
x = params.x if params.x is not None else x
y = params.y if params.y is not None else y
z_changed = False
if params.z is not None:
if z != params.z:
z_changed = True
self._previous_z = z
z = params.z
if params.e is not None:
if params.e > e[self._extruder]:
path.append([x, y, z, self._layer_type]) # extrusion
else:
path.append([x, y, z, LayerPolygon.MoveRetractionType]) # retraction
e[self._extruder] = params.e
else:
path.append([x, y, z, LayerPolygon.MoveCombingType])
if z_changed:
if not self._is_layers_in_file:
if len(path) > 1 and z > 0:
if self._createPolygon(z, path):
self._layer += 1
path.clear()
else:
path.clear()
return self._position(x, y, z, e)
def _gCode28(self, position, params, path):
return self._position(
params.x if params.x is not None else position.x,
params.y if params.y is not None else position.y,
0,
position.e)
def _gCode92(self, position, params, path):
if params.e is not None:
position.e[self._extruder] = params.e
return self._position(
params.x if params.x is not None else position.x,
params.y if params.y is not None else position.y,
params.z if params.z is not None else position.z,
position.e)
_gCode1 = _gCode0
def _processGCode(self, G, line, position, path):
func = getattr(self, "_gCode%s" % G, None)
x = self._getFloat(line, "X")
y = self._getFloat(line, "Y")
z = self._getFloat(line, "Z")
e = self._getFloat(line, "E")
if func is not None:
if (x is not None and x < 0) or (y is not None and y < 0):
self._center_is_zero = True
params = self._position(x, y, z, e)
return func(position, params, path)
return position
def _processTCode(self, T, line, position, path):
self._extruder = T
if self._extruder + 1 > len(position.e):
position.e.extend([0] * (self._extruder - len(position.e) + 1))
if not self._is_layers_in_file:
if len(path) > 1 and position[2] > 0:
if self._createPolygon(position[2], path):
self._layer += 1
path.clear()
else:
path.clear()
return position
_type_keyword = ";TYPE:"
_layer_keyword = ";LAYER:"
def read(self, file_name):
Logger.log("d", "Preparing to load %s" % file_name)
self._cancelled = False
scene_node = SceneNode()
scene_node.getBoundingBox = self._getNullBoundingBox # Manually set bounding box, because mesh doesn't have mesh data
glist = []
self._is_layers_in_file = False
Logger.log("d", "Opening file %s" % file_name)
with open(file_name, "r") as file:
file_lines = 0
current_line = 0
for line in file:
file_lines += 1
glist.append(line)
if not self._is_layers_in_file and line[:len(self._layer_keyword)] == self._layer_keyword:
self._is_layers_in_file = True
file.seek(0)
file_step = max(math.floor(file_lines / 100), 1)
self._clearValues()
self._message = Message(catalog.i18nc("@info:status", "Parsing G-code"), lifetime=0)
self._message.setProgress(0)
self._message.show()
Logger.log("d", "Parsing %s" % file_name)
current_position = self._position(0, 0, 0, [0])
current_path = []
for line in file:
if self._cancelled:
Logger.log("d", "Parsing %s cancelled" % file_name)
return None
current_line += 1
if current_line % file_step == 0:
self._message.setProgress(math.floor(current_line / file_lines * 100))
if len(line) == 0:
continue
if line.find(self._type_keyword) == 0:
type = line[len(self._type_keyword):].strip()
if type == "WALL-INNER":
self._layer_type = LayerPolygon.InsetXType
elif type == "WALL-OUTER":
self._layer_type = LayerPolygon.Inset0Type
elif type == "SKIN":
self._layer_type = LayerPolygon.SkinType
elif type == "SKIRT":
self._layer_type = LayerPolygon.SkirtType
elif type == "SUPPORT":
self._layer_type = LayerPolygon.SupportType
elif type == "FILL":
self._layer_type = LayerPolygon.InfillType
if self._is_layers_in_file and line[:len(self._layer_keyword)] == self._layer_keyword:
try:
layer_number = int(line[len(self._layer_keyword):])
self._createPolygon(current_position[2], current_path)
current_path.clear()
self._layer = layer_number
except:
pass
if line[0] == ";":
continue
G = self._getInt(line, "G")
if G is not None:
current_position = self._processGCode(G, line, current_position, current_path)
T = self._getInt(line, "T")
if T is not None:
current_position = self._processTCode(T, line, current_position, current_path)
if not self._is_layers_in_file and len(current_path) > 1 and current_position[2] > 0:
if self._createPolygon(current_position[2], current_path):
self._layer += 1
current_path.clear()
layer_mesh = self._layer_data_builder.build()
decorator = LayerDataDecorator.LayerDataDecorator()
decorator.setLayerData(layer_mesh)
scene_node.addDecorator(decorator)
gcode_list_decorator = GCodeListDecorator()
gcode_list_decorator.setGCodeList(glist)
scene_node.addDecorator(gcode_list_decorator)
Logger.log("d", "Finished parsing %s" % file_name)
self._message.hide()
if self._layer == 0:
Logger.log("w", "File %s doesn't contain any valid layers" % file_name)
settings = Application.getInstance().getGlobalContainerStack()
machine_width = settings.getProperty("machine_width", "value")
machine_depth = settings.getProperty("machine_depth", "value")
if not self._center_is_zero:
scene_node.setPosition(Vector(-machine_width / 2, 0, machine_depth / 2))
Logger.log("d", "Loaded %s" % file_name)
return scene_node

View file

@ -0,0 +1,33 @@
# Copyright (c) 2016 Aleph Objects, Inc.
# Cura is released under the terms of the AGPLv3 or higher.
from . import GCodeReader
from UM.i18n import i18nCatalog
i18n_catalog = i18nCatalog("cura")
def getMetaData():
return {
"plugin": {
"name": i18n_catalog.i18nc("@label", "G-code Reader"),
"author": "Victor Larchenko",
"version": "1.0",
"description": i18n_catalog.i18nc("@info:whatsthis", "Allows loading and displaying G-code files."),
"api": 3
},
"mesh_reader": [
{
"extension": "gcode",
"description": i18n_catalog.i18nc("@item:inlistbox", "G-code File")
},
{
"extension": "g",
"description": i18n_catalog.i18nc("@item:inlistbox", "G File")
}
]
}
def register(app):
app.addNonSliceableExtension(".gcode")
app.addNonSliceableExtension(".g")
return { "mesh_reader": GCodeReader.GCodeReader() }

View file

@ -4,9 +4,9 @@
import os
import threading
from PyQt5.QtCore import Qt, QUrl, pyqtSignal, pyqtSlot, QObject
from PyQt5.QtCore import Qt, QUrl, pyqtSignal, QObject
from PyQt5.QtQml import QQmlComponent, QQmlContext
from UM.FlameProfiler import pyqtSlot
from UM.Application import Application
from UM.PluginRegistry import PluginRegistry
from UM.Logger import Logger

View file

@ -45,10 +45,11 @@ class LayerPass(RenderPass):
tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay)
for node in DepthFirstIterator(self._scene.getRoot()):
if isinstance(node, ToolHandle):
tool_handle_batch.addItem(node.getWorldTransformation(), mesh = node.getSolidMesh())
elif isinstance(node, SceneNode) and node.getMeshData() and node.isVisible():
elif isinstance(node, SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible():
layer_data = node.callDecoration("getLayerData")
if not layer_data:
continue

View file

@ -119,7 +119,7 @@ class LayerView(View):
continue
if not node.render(renderer):
if node.getMeshData() and node.isVisible():
if (node.getMeshData()) and node.isVisible():
renderer.queueNode(node, transparent = True, shader = self._ghost_shader)
def setLayer(self, value):

View file

@ -1,4 +1,5 @@
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, pyqtProperty
from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty
from UM.FlameProfiler import pyqtSlot
from UM.Application import Application
import LayerView

View file

@ -1,7 +1,8 @@
# Copyright (c) 2016 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot
from PyQt5.QtCore import pyqtProperty, pyqtSignal
from UM.FlameProfiler import pyqtSlot
from cura.MachineAction import MachineAction

View file

@ -322,7 +322,7 @@ Item {
id: settingPickDialog
title: catalog.i18nc("@title:window", "Select Settings to Customize for this model")
width: screenScaleFactor * 360;
width: Screen.devicePixelRatio * 360;
property string labelFilter: ""

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015 Ultimaker B.V.
# Uranium is released under the terms of the AGPLv3 or higher.
# Cura is released under the terms of the AGPLv3 or higher.
import platform
from UM.Platform import Platform
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
@ -18,15 +18,15 @@ def getMetaData():
}
def register(app):
if platform.system() == "Windows":
if Platform.isWindows():
from . import WindowsRemovableDrivePlugin
return { "output_device": WindowsRemovableDrivePlugin.WindowsRemovableDrivePlugin() }
elif platform.system() == "Darwin":
elif Platform.isOSX():
from . import OSXRemovableDrivePlugin
return { "output_device": OSXRemovableDrivePlugin.OSXRemovableDrivePlugin() }
elif platform.system() == "Linux":
elif Platform.isLinux():
from . import LinuxRemovableDrivePlugin
return { "output_device": LinuxRemovableDrivePlugin.LinuxRemovableDrivePlugin() }
else:
Logger.log("e", "Unsupported system %s, no removable device hotplugging support available.", platform.system())
Logger.log("e", "Unsupported system, thus no removable device hotplugging support available.")
return { }

View file

@ -87,8 +87,10 @@ class SolidView(View):
extruder_id = node.callDecoration("getActiveExtruder")
if extruder_id:
extruder_index = max(0, self._extruders_model.find("id", extruder_id))
material_color = self._extruders_model.getItem(extruder_index)["color"]
try:
material_color = self._extruders_model.getItem(extruder_index)["color"]
except KeyError:
material_color = self._extruders_model.defaultColors[0]
if extruder_index != ExtruderManager.getInstance().activeExtruderIndex:
# Shade objects that are printed with the non-active extruder 25% darker

View file

@ -1016,7 +1016,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
## Let the user decide if the hotends and/or material should be synced with the printer
def materialHotendChangedMessage(self, callback):
Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Changes on the Printer"),
Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Sync with your printer"),
i18n_catalog.i18nc("@label",
"Would you like to use your current printer configuration in Cura?"),
i18n_catalog.i18nc("@label",

View file

@ -313,6 +313,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
if self._serial is None:
try:
self._serial = serial.Serial(str(self._serial_port), baud_rate, timeout = 3, writeTimeout = 10000)
time.sleep(10)
except serial.SerialException:
Logger.log("d", "Could not open port %s" % self._serial_port)
continue
@ -468,7 +469,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
break # None is only returned when something went wrong. Stop listening
if time.time() > temperature_request_timeout:
if self._num_extruders > 0:
if self._num_extruders > 1:
self._temperature_requested_extruder_index = (self._temperature_requested_extruder_index + 1) % self._num_extruders
self.sendCommand("M105 T%d" % (self._temperature_requested_extruder_index))
else:
@ -524,7 +525,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
# Request the temperature on comm timeout (every 2 seconds) when we are not printing.)
if line == b"":
if self._num_extruders > 0:
if self._num_extruders > 1:
self._temperature_requested_extruder_index = (self._temperature_requested_extruder_index + 1) % self._num_extruders
self.sendCommand("M105 T%d" % self._temperature_requested_extruder_index)
else:

View file

@ -43,17 +43,20 @@ class Stk500v2(ispBase.IspBase):
self.serial.flushInput()
self.serial.flushOutput()
if self.sendMessage([0x10, 0xc8, 0x64, 0x19, 0x20, 0x00, 0x53, 0x03, 0xac, 0x53, 0x00, 0x00]) != [0x10, 0x00]:
try:
if self.sendMessage([0x10, 0xc8, 0x64, 0x19, 0x20, 0x00, 0x53, 0x03, 0xac, 0x53, 0x00, 0x00]) != [0x10, 0x00]:
raise ispBase.IspError("Failed to enter programming mode")
self.sendMessage([0x06, 0x80, 0x00, 0x00, 0x00])
if self.sendMessage([0xEE])[1] == 0x00:
self._has_checksum = True
else:
self._has_checksum = False
except ispBase.IspError:
self.close()
raise ispBase.IspError("Failed to enter programming mode")
self.sendMessage([0x06, 0x80, 0x00, 0x00, 0x00])
if self.sendMessage([0xEE])[1] == 0x00:
self._has_checksum = True
else:
self._has_checksum = False
raise
self.serial.timeout = 5
def close(self):
if self.serial is not None:
self.serial.close()

View file

@ -1,7 +1,7 @@
from cura.MachineAction import MachineAction
from cura.PrinterOutputDevice import PrinterOutputDevice
from PyQt5.QtCore import pyqtSlot
from UM.FlameProfiler import pyqtSlot
from UM.Application import Application
from UM.i18n import i18nCatalog

View file

@ -8,6 +8,7 @@ import io
from UM.Resources import Resources
from UM.VersionUpgrade import VersionUpgrade # Superclass of the plugin.
import UM.VersionUpgrade
class VersionUpgrade22to24(VersionUpgrade):
@ -19,6 +20,10 @@ class VersionUpgrade22to24(VersionUpgrade):
config = configparser.ConfigParser(interpolation = None)
config.read_string(serialised) # Read the input string as config file.
if config.get("metadata", "type") == "definition_changes":
# This is not a container stack, don't upgrade it here
return
config.set("general", "version", "3")
container_list = []
@ -44,9 +49,11 @@ class VersionUpgrade22to24(VersionUpgrade):
# Change the name of variant and insert empty_variant into the stack.
new_container_list = []
for item in container_list:
if not item: # the last item may be an empty string
continue
if item == variant_name:
new_container_list.append(config_name)
new_container_list.append("empty_variant")
new_container_list.append(config_name)
else:
new_container_list.append(item)
@ -58,7 +65,7 @@ class VersionUpgrade22to24(VersionUpgrade):
config.remove_option("general", "containers")
for index in range(len(container_list)):
config.set("containers", index, container_list[index])
config.set("containers", str(index), container_list[index])
output = io.StringIO()
config.write(output)
@ -114,6 +121,26 @@ class VersionUpgrade22to24(VersionUpgrade):
config.write(output)
return [filename], [output.getvalue()]
def upgradePreferences(self, serialised, filename):
config = configparser.ConfigParser(interpolation = None)
config.read_string(serialised)
if not config.has_section("general"):
raise UM.VersionUpgrade.FormatException("No \"general\" section.")
# Make z_seam_x and z_seam_y options visible. In a clean 2.4 they are visible by default.
if config.has_option("general", "visible_settings"):
visible_settings = config.get("general", "visible_settings")
visible_set = set(visible_settings.split(";"))
visible_set.add("z_seam_x")
visible_set.add("z_seam_y")
config.set("general", "visible_settings", ";".join(visible_set))
config.set("general", "version", value="4")
output = io.StringIO()
config.write(output)
return [filename], [output.getvalue()]
def getCfgVersion(self, serialised):
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialised)

View file

@ -20,8 +20,10 @@ def getMetaData():
"version_upgrade": {
# From To Upgrade function
("machine_instance", 2): ("machine_stack", 3, upgrade.upgradeMachineInstance),
("extruder_train", 2): ("extruder_train", 3, upgrade.upgradeExtruderTrain)
},
("extruder_train", 2): ("extruder_train", 3, upgrade.upgradeExtruderTrain),
("preferences", 3): ("preferences", 4, upgrade.upgradePreferences)
},
"sources": {
"machine_stack": {
"get_version": upgrade.getCfgVersion,

View file

@ -1,15 +1,17 @@
# Contributed by Seva Alekseyev <sevaa@nih.gov> with National Institutes of Health, 2016
# Cura is released under the terms of the AGPLv3 or higher.
from UM.Mesh.MeshReader import MeshReader
from UM.Mesh.MeshBuilder import MeshBuilder
from math import pi, sin, cos, sqrt
import numpy
from UM.Job import Job
from UM.Logger import Logger
from UM.Math.Matrix import Matrix
from UM.Math.Vector import Vector
from UM.Mesh.MeshBuilder import MeshBuilder
from UM.Mesh.MeshReader import MeshReader
from UM.Scene.SceneNode import SceneNode
from UM.Job import Job
from math import pi, sin, cos, sqrt
import numpy
try:
import xml.etree.cElementTree as ET

View file

@ -593,6 +593,8 @@ class XmlMaterialProfile(InstanceContainer):
# Map XML file product names to internal ids
# TODO: Move this to definition's metadata
__product_id_map = {
"Ultimaker 3": "ultimaker3",
"Ultimaker 3 Extended": "ultimaker3_extended",
"Ultimaker 2": "ultimaker2",
"Ultimaker 2+": "ultimaker2_plus",
"Ultimaker 2 Go": "ultimaker2_go",

View file

@ -0,0 +1,58 @@
{
"id": "101Hero",
"version": 2,
"name": "101Hero",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "rikky",
"manufacturer": "101Hero",
"category": "Other",
"machine_extruder_trains":
{
"0": "fdmextruder"
},
"file_formats": "text/x-gcode",
"supports_usb_connection": true
},
"overrides": {
"machine_name": { "default_value": "101Hero" },
"machine_shape": { "default_value": "elliptic"},
"machine_heated_bed": { "default_value": false },
"machine_width": { "default_value": 149.86 },
"machine_depth": { "default_value": 149.86 },
"machine_height": { "default_value": 99.822 },
"machine_center_is_zero": { "default_value": true },
"layer_height": { "default_value": 0.2 },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_heat_up_speed": { "default_value": 2 },
"machine_nozzle_cool_down_speed": { "default_value": 2 },
"machine_head_with_fans_polygon": {
"default_value": [
[ 0, 0 ],
[ 0, 0 ],
[ 0, 0 ],
[ 0, 0 ]
]
},
"speed_print": { "default_value": 14 },
"speed_travel": { "value": "speed_print" },
"speed_infill": { "default_value": 14 },
"speed_wall": { "value": "speed_print * 0.7" },
"speed_topbottom": { "value": "speed_print * 0.7" },
"speed_layer_0": { "value": "speed_print * 0.7" },
"gantry_height": { "default_value": 0 },
"retraction_speed": { "default_value" : 10 },
"retraction_amount": { "default_value" : 2.5 },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_start_gcode": {
"default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 Z0 ;home Z\nG1 Z15.0 F840\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F840\n;Put printing message on LCD screen\nM117 Printing...\n"
},
"machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit\nG1 Z0.5 E-5 F840 ;move Z up a bit and retract even more\nG28 X0 Y0 ;home X/Y, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning"
}
}
}

View file

@ -30,6 +30,7 @@
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_depth": { "default_value": 150 },
"machine_width": { "default_value": 150 },
"machine_name": { "default_value": "DeltaBot style" }
"machine_name": { "default_value": "DeltaBot style" },
"machine_shape": { "default_value": "elliptic"}
}
}

View file

@ -890,6 +890,21 @@
"default_value": "lines",
"settable_per_mesh": true
},
"top_bottom_pattern_0":
{
"label": "Bottom Pattern Initial Layer",
"description": "The pattern on the bottom of the print on the first layer.",
"type": "enum",
"options":
{
"lines": "Lines",
"concentric": "Concentric",
"zigzag": "Zig Zag"
},
"default_value": "lines",
"value": "top_bottom_pattern",
"settable_per_mesh": true
},
"wall_0_inset":
{
"label": "Outer Wall Inset",
@ -1190,7 +1205,7 @@
"type": "int",
"minimum_value": "0",
"maximum_value_warning": "4",
"maximum_value": "20 - math.log(infill_line_distance) / math.log(2)",
"maximum_value": "(20 - math.log(infill_line_distance) / math.log(2)) if infill_line_distance > 0 else 0",
"enabled": "infill_sparse_density > 0 and infill_pattern != 'cubicsubdiv'",
"settable_per_mesh": true
},
@ -2800,7 +2815,7 @@
"support_z_distance":
{
"label": "Support Z Distance",
"description": "Distance from the top/bottom of the support structure to the print. This gap provides clearance to remove the supports after the model is printed. This value is rounded down to a multiple of the layer height.",
"description": "Distance from the top/bottom of the support structure to the print. This gap provides clearance to remove the supports after the model is printed. This value is rounded up to a multiple of the layer height.",
"unit": "mm",
"type": "float",
"minimum_value": "0",
@ -3113,8 +3128,8 @@
"type": "float",
"unit": "mm",
"default_value": 0,
"minimum_value_warning": "0",
"maximum_value_warning": "machine_width",
"minimum_value_warning": "machine_width / -2 if machine_center_is_zero else 0",
"maximum_value_warning": "machine_width / 2 if machine_center_is_zero else machine_width",
"settable_per_mesh": false,
"settable_per_extruder": true,
"enabled": false
@ -3126,8 +3141,8 @@
"type": "float",
"unit": "mm",
"default_value": 0,
"minimum_value_warning": "0",
"maximum_value_warning": "machine_depth",
"minimum_value_warning": "machine_depth / -2 if machine_center_is_zero else 0",
"maximum_value_warning": "machine_depth / 2 if machine_center_is_zero else machine_depth",
"settable_per_mesh": false,
"settable_per_extruder": true,
"enabled": false
@ -3755,7 +3770,7 @@
"unit": "mm",
"type": "float",
"default_value": 2,
"value": "max(2 * min(extruderValues('prime_tower_line_width')), 0.5 * (resolveOrValue('prime_tower_size') - math.sqrt(resolveOrValue('prime_tower_size') ** 2 - max(extruderValues('prime_tower_min_volume')) / resolveOrValue('layer_height'))))",
"value": "max(2 * min(extruderValues('prime_tower_line_width')), 0.5 * (resolveOrValue('prime_tower_size') - math.sqrt(max(0, resolveOrValue('prime_tower_size') ** 2 - max(extruderValues('prime_tower_min_volume')) / resolveOrValue('layer_height')))))",
"resolve": "max(extruderValues('prime_tower_wall_thickness'))",
"minimum_value": "0.001",
"minimum_value_warning": "2 * min(extruderValues('prime_tower_line_width'))",
@ -3776,8 +3791,8 @@
"default_value": 200,
"minimum_value_warning": "-1000",
"maximum_value_warning": "1000",
"maximum_value": "machine_width - 0.5 * resolveOrValue('prime_tower_size')",
"minimum_value": "0.5 * resolveOrValue('prime_tower_size')",
"maximum_value": "machine_width / 2 if machine_center_is_zero else machine_width",
"minimum_value": "resolveOrValue('prime_tower_size') - machine_width / 2 if machine_center_is_zero else resolveOrValue('prime_tower_size')",
"settable_per_mesh": false,
"settable_per_extruder": false
},
@ -3791,8 +3806,10 @@
"default_value": 200,
"minimum_value_warning": "-1000",
"maximum_value_warning": "1000",
"maximum_value": "machine_depth - 0.5 * resolveOrValue('prime_tower_size')",
"minimum_value": "0.5 * resolveOrValue('prime_tower_size')",
"maximum_value": "machine_depth - resolveOrValue('prime_tower_size')",
"minimum_value": "0",
"maximum_value": "machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')",
"minimum_value": "machine_depth / -2 if machine_center_is_zero else 0",
"settable_per_mesh": false,
"settable_per_extruder": false
},
@ -3804,6 +3821,7 @@
"unit": "%",
"enabled": "resolveOrValue('prime_tower_enable')",
"default_value": 100,
"value": "material_flow",
"minimum_value": "0.0001",
"minimum_value_warning": "50",
"maximum_value_warning": "150",

View file

@ -10,7 +10,8 @@
"category": "Other",
"file_formats": "text/x-gcode",
"icon": "icon_ultimaker2",
"platform": "kossel_platform.stl"
"platform": "kossel_platform.stl",
"platform_offset": [0, -0.25, 0]
},
"overrides": {
@ -50,18 +51,8 @@
"machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning"
},
"machine_disallowed_areas": {
"default_value": [
[[-34, -85], [ -85, -85], [-70, -70]],
[[-85, -85], [-85, -34], [-70, -70]],
[[34, -85], [ 85, -85], [70, -70]],
[[85, -85], [85, -34], [70, -70]],
[[-34, 85], [ -85, 85], [-70, 70]],
[[-85, 85], [-85, 34], [-70, 70]],
[[34, 85], [ 85, 85], [70, 70]],
[[85, 85], [85, 34], [70, 70]]
]
"machine_shape": {
"default_value": "elliptic"
}
}
}

View file

@ -10,7 +10,8 @@
"category": "Other",
"file_formats": "text/x-gcode",
"icon": "icon_ultimaker2",
"platform": "kossel_pro_build_platform.stl"
"platform": "kossel_pro_build_platform.stl",
"platform_offset": [0, -0.25, 0]
},
"overrides": {
"machine_heated_bed": {
@ -49,8 +50,8 @@
"machine_end_gcode": {
"default_value": "M104 S0 ; turn off temperature\nM140 S0 ; turn off bed\nG28 ; home all axes\nM84 ; disable motors\n"
},
"machine_disallowed_areas": {
"default_value": [[[125.0, 125.0], [125.0, 0.0], [120.741, 32.352]], [[-125.0, 125.0], [-125.0, 0.0], [-120.741, 32.352]], [[125.0, -125.0], [125.0, -0.0], [120.741, -32.352]], [[-125.0, -125.0], [-125.0, -0.0], [-120.741, -32.352]], [[125.0, 125.0], [120.741, 32.352], [108.253, 62.5]], [[-125.0, 125.0], [-120.741, 32.352], [-108.253, 62.5]], [[125.0, -125.0], [120.741, -32.352], [108.253, -62.5]], [[-125.0, -125.0], [-120.741, -32.352], [-108.253, -62.5]], [[125.0, 125.0], [108.253, 62.5], [88.388, 88.388]], [[-125.0, 125.0], [-108.253, 62.5], [-88.388, 88.388]], [[125.0, -125.0], [108.253, -62.5], [88.388, -88.388]], [[-125.0, -125.0], [-108.253, -62.5], [-88.388, -88.388]], [[125.0, 125.0], [88.388, 88.388], [62.5, 108.253]], [[-125.0, 125.0], [-88.388, 88.388], [-62.5, 108.253]], [[125.0, -125.0], [88.388, -88.388], [62.5, -108.253]], [[-125.0, -125.0], [-88.388, -88.388], [-62.5, -108.253]], [[125.0, 125.0], [62.5, 108.253], [32.352, 120.741]], [[-125.0, 125.0], [-62.5, 108.253], [-32.352, 120.741]], [[125.0, -125.0], [62.5, -108.253], [32.352, -120.741]], [[-125.0, -125.0], [-62.5, -108.253], [-32.352, -120.741]], [[125.0, 125.0], [32.352, 120.741], [0.0, 125.0]], [[-125.0, 125.0], [-32.352, 120.741], [-0.0, 125.0]], [[125.0, -125.0], [32.352, -120.741], [0.0, -125.0]], [[-125.0, -125.0], [-32.352, -120.741], [-0.0, -125.0]]]
"machine_shape": {
"default_value": "elliptic"
}
}
}

View file

@ -26,10 +26,10 @@
"machine_nozzle_cool_down_speed": { "default_value": 2 },
"machine_head_with_fans_polygon": {
"default_value": [
[ 55, -20 ],
[ 55, 99999 ],
[ -49, 99999 ],
[ -49, -20 ]
[-49, 20],
[-49, -99999],
[55, 20],
[55, -99999]
]
},
"gantry_height": { "default_value": 99999 },

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,182 +1,173 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-09-20 17:35+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Gerät"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Gerätespezifische Einstellungen"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Extruder"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Die für das Drucken verwendete Extruder-Einheit. Diese wird für die Mehrfach-Extrusion benutzt."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "X-Versatz Düse"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Die X-Koordinate des Düsenversatzes."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Y-Versatz Düse"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Die Y-Koordinate des Düsenversatzes."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "G-Code Extruder-Start"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Starten Sie den G-Code jedes Mal, wenn Sie den Extruder einschalten."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Absolute Startposition des Extruders"
#: 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 "Bevorzugen Sie eine absolute Startposition des Extruders anstelle einer relativen Position zur zuletzt bekannten Kopfposition."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "X-Position Extruder-Start"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description"
msgid "The x-coordinate of the starting position when turning the extruder on."
msgstr "Die X-Koordinate der Startposition beim Einschalten des Extruders."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Y-Position Extruder-Start"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description"
msgid "The y-coordinate of the starting position when turning the extruder on."
msgstr "Die Y-Koordinate der Startposition beim Einschalten des Extruders."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "G-Code Extruder-Ende"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Beenden Sie den G-Code jedes Mal, wenn Sie den Extruder ausschalten."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Absolute Extruder-Endposition"
#: 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 "Bevorzugen Sie eine absolute Endposition des Extruders anstelle einer relativen Position zur zuletzt bekannten Kopfposition."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Extruder-Endposition 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 "Die X-Koordinate der Endposition beim Ausschalten des Extruders."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Extruder-Endposition 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 "Die Y-Koordinate der Endposition beim Ausschalten des Extruders."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Z-Position Extruder-Einzug"
#: 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 "Die Z-Koordinate der Position, an der die Düse am Druckbeginn einzieht."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Druckplattenhaftung"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Haftung"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "X-Position Extruder-Einzug"
#: 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 "Die X-Koordinate der Position, an der die Düse am Druckbeginn einzieht."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Y-Position Extruder-Einzug"
#: 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 "Die Y-Koordinate der Position, an der die Düse am Druckbeginn einzieht."
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Gerät"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Gerätespezifische Einstellungen"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Extruder"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Die für das Drucken verwendete Extruder-Einheit. Diese wird für die Mehrfach-Extrusion benutzt."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "X-Versatz Düse"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Die X-Koordinate des Düsenversatzes."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Y-Versatz Düse"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Die Y-Koordinate des Düsenversatzes."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "G-Code Extruder-Start"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Starten Sie den G-Code jedes Mal, wenn Sie den Extruder einschalten."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Absolute Startposition des Extruders"
#: 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 "Bevorzugen Sie eine absolute Startposition des Extruders anstelle einer relativen Position zur zuletzt bekannten Kopfposition."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "X-Position Extruder-Start"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description"
msgid "The x-coordinate of the starting position when turning the extruder on."
msgstr "Die X-Koordinate der Startposition beim Einschalten des Extruders."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Y-Position Extruder-Start"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description"
msgid "The y-coordinate of the starting position when turning the extruder on."
msgstr "Die Y-Koordinate der Startposition beim Einschalten des Extruders."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "G-Code Extruder-Ende"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Beenden Sie den G-Code jedes Mal, wenn Sie den Extruder ausschalten."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Absolute Extruder-Endposition"
#: 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 "Bevorzugen Sie eine absolute Endposition des Extruders anstelle einer relativen Position zur zuletzt bekannten Kopfposition."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Extruder-Endposition 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 "Die X-Koordinate der Endposition beim Ausschalten des Extruders."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Extruder-Endposition 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 "Die Y-Koordinate der Endposition beim Ausschalten des Extruders."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Z-Position Extruder-Einzug"
#: 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 "Die Z-Koordinate der Position, an der die Düse am Druckbeginn einzieht."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Druckplattenhaftung"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Haftung"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "X-Position Extruder-Einzug"
#: 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 "Die X-Koordinate der Position, an der die Düse am Druckbeginn einzieht."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Y-Position Extruder-Einzug"
#: 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 "Die Y-Koordinate der Position, an der die Düse am Druckbeginn einzieht."

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,182 +1,173 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-09-20 17:35+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Máquina"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Ajustes específicos de la máquina"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Extrusor"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "El tren extrusor que se utiliza para imprimir. Se emplea en la extrusión múltiple."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Desplazamiento de la tobera sobre el eje X"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Coordenada X del desplazamiento de la tobera."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Desplazamiento de la tobera sobre el eje Y"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Coordenada Y del desplazamiento de la tobera."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Gcode inicial del extrusor"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Gcode inicial que se ejecuta cada vez que se enciende el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Posición de inicio absoluta del extrusor"
#: 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 "El extrusor se coloca en la posición de inicio absoluta según la última ubicación conocida del cabezal."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "Posición de inicio del extrusor sobre el eje 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 "Coordenada X de la posición de inicio cuando se enciende el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Posición de inicio del extrusor sobre el eje 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 "Coordenada Y de la posición de inicio cuando se enciende el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Gcode final del extrusor"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Gcode final que se ejecuta cada vez que se apaga el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Posición final absoluta del extrusor"
#: 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 "La posición final del extrusor se considera absoluta, en lugar de relativa a la última ubicación conocida del cabezal."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Posición de fin del extrusor sobre el eje 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 "Coordenada X de la posición de fin cuando se apaga el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Posición de fin del extrusor sobre el eje 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 "Coordenada Y de la posición de fin cuando se apaga el extrusor."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Posición de preparación del extrusor sobre el eje 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 "Coordenada Z de la posición en la que la tobera queda preparada al inicio de la impresión."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Adherencia de la placa de impresión"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Adherencia"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Posición de preparación del extrusor sobre el eje 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 "Coordenada X de la posición en la que la tobera se coloca al inicio de la impresión."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Posición de preparación del extrusor sobre el eje 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 "Coordenada X de la posición en la que la tobera se coloca al inicio de la impresión."
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Máquina"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Ajustes específicos de la máquina"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Extrusor"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "El tren extrusor que se utiliza para imprimir. Se emplea en la extrusión múltiple."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Desplazamiento de la tobera sobre el eje X"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Coordenada X del desplazamiento de la tobera."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Desplazamiento de la tobera sobre el eje Y"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Coordenada Y del desplazamiento de la tobera."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Gcode inicial del extrusor"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Gcode inicial que se ejecuta cada vez que se enciende el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Posición de inicio absoluta del extrusor"
#: 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 "El extrusor se coloca en la posición de inicio absoluta según la última ubicación conocida del cabezal."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "Posición de inicio del extrusor sobre el eje 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 "Coordenada X de la posición de inicio cuando se enciende el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Posición de inicio del extrusor sobre el eje 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 "Coordenada Y de la posición de inicio cuando se enciende el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Gcode final del extrusor"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Gcode final que se ejecuta cada vez que se apaga el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Posición final absoluta del extrusor"
#: 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 "La posición final del extrusor se considera absoluta, en lugar de relativa a la última ubicación conocida del cabezal."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Posición de fin del extrusor sobre el eje 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 "Coordenada X de la posición de fin cuando se apaga el extrusor."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Posición de fin del extrusor sobre el eje 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 "Coordenada Y de la posición de fin cuando se apaga el extrusor."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Posición de preparación del extrusor sobre el eje 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 "Coordenada Z de la posición en la que la tobera queda preparada al inicio de la impresión."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Adherencia de la placa de impresión"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Adherencia"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Posición de preparación del extrusor sobre el eje 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 "Coordenada X de la posición en la que la tobera se coloca al inicio de la impresión."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Posición de preparación del extrusor sobre el eje 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 "Coordenada X de la posición en la que la tobera se coloca al inicio de la impresión."

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-10-27 11:28+0000\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-10-27 11:28+0000\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
@ -145,6 +145,27 @@ msgctxt "machine_depth description"
msgid "The depth (Y-direction) of the printable area."
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_shape label"
msgid "Build plate shape"
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_shape description"
msgid ""
"The shape of the build plate without taking unprintable areas into account."
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_shape option rectangular"
msgid "Rectangular"
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_shape option elliptic"
msgid "Elliptic"
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_height label"
msgid "Machine height"
@ -179,7 +200,7 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "machine_extruder_count label"
msgid "Number extruders"
msgid "Number of Extruders"
msgstr ""
#: fdmprinter.def.json
@ -232,7 +253,19 @@ msgstr ""
msgctxt "machine_heat_zone_length description"
msgid ""
"The distance from the tip of the nozzle in which heat from the nozzle is "
"transfered to the filament."
"transferred to the filament."
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_filament_park_distance label"
msgid "Filament Park Distance"
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_filament_park_distance description"
msgid ""
"The distance from the tip of the nozzle where to park the filament when an "
"extruder is no longer used."
msgstr ""
#: fdmprinter.def.json
@ -332,6 +365,16 @@ msgctxt "machine_disallowed_areas description"
msgid "A list of polygons with areas the print head is not allowed to enter."
msgstr ""
#: fdmprinter.def.json
msgctxt "nozzle_disallowed_areas label"
msgid "Nozzle Disallowed Areas"
msgstr ""
#: fdmprinter.def.json
msgctxt "nozzle_disallowed_areas description"
msgid "A list of polygons with areas the nozzle is not allowed to enter."
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_head_polygon label"
msgid "Machine head polygon"
@ -716,6 +759,18 @@ msgid ""
"rounded to a whole number."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_wipe_dist label"
msgid "Outer Wall Wipe Distance"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_wipe_dist description"
msgid ""
"Distance of a travel move inserted after the outer wall, to hide the Z seam "
"better."
msgstr ""
#: fdmprinter.def.json
msgctxt "top_bottom_thickness label"
msgid "Top/Bottom Thickness"
@ -877,6 +932,26 @@ msgid ""
"already a wall in place."
msgstr ""
#: fdmprinter.def.json
msgctxt "fill_perimeter_gaps label"
msgid "Fill Gaps Between Walls"
msgstr ""
#: fdmprinter.def.json
msgctxt "fill_perimeter_gaps description"
msgid "Fills the gaps between walls where no walls fit."
msgstr ""
#: fdmprinter.def.json
msgctxt "fill_perimeter_gaps option nowhere"
msgid "Nowhere"
msgstr ""
#: fdmprinter.def.json
msgctxt "fill_perimeter_gaps option everywhere"
msgid "Everywhere"
msgstr ""
#: fdmprinter.def.json
msgctxt "xy_offset label"
msgid "Horizontal Expansion"
@ -900,14 +975,14 @@ msgctxt "z_seam_type description"
msgid ""
"Starting point of each path in a layer. When paths in consecutive layers "
"start at the same point a vertical seam may show on the print. When aligning "
"these at the back, the seam is easiest to remove. When placed randomly the "
"inaccuracies at the paths' start will be less noticeable. When taking the "
"shortest path the print will be quicker."
"these near a user specified location, the seam is easiest to remove. When "
"placed randomly the inaccuracies at the paths' start will be less "
"noticeable. When taking the shortest path the print will be quicker."
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_type option back"
msgid "Back"
msgid "User Specified"
msgstr ""
#: fdmprinter.def.json
@ -920,6 +995,30 @@ msgctxt "z_seam_type option random"
msgid "Random"
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_x label"
msgid "Z Seam X"
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_x description"
msgid ""
"The X coordinate of the position near where to start printing each part in a "
"layer."
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_y label"
msgid "Z Seam Y"
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_y description"
msgid ""
"The Y coordinate of the position near where to start printing each part in a "
"layer."
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic label"
msgid "Ignore Small Z Gaps"
@ -1000,6 +1099,11 @@ msgctxt "infill_pattern option cubic"
msgid "Cubic"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_pattern option cubicsubdiv"
msgid "Cubic Subdivision"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_pattern option tetrahedral"
msgid "Tetrahedral"
@ -1010,11 +1114,43 @@ msgctxt "infill_pattern option concentric"
msgid "Concentric"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_pattern option concentric_3d"
msgid "Concentric 3D"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_pattern option zigzag"
msgid "Zig Zag"
msgstr ""
#: fdmprinter.def.json
msgctxt "sub_div_rad_mult label"
msgid "Cubic Subdivision Radius"
msgstr ""
#: fdmprinter.def.json
msgctxt "sub_div_rad_mult description"
msgid ""
"A multiplier on the radius from the center of each cube to check for the "
"boundary of the model, as to decide whether this cube should be subdivided. "
"Larger values lead to more subdivisions, i.e. more small cubes."
msgstr ""
#: fdmprinter.def.json
msgctxt "sub_div_rad_add label"
msgid "Cubic Subdivision Shell"
msgstr ""
#: fdmprinter.def.json
msgctxt "sub_div_rad_add description"
msgid ""
"An addition to the radius from the center of each cube to check for the "
"boundary of the model, as to decide whether this cube should be subdivided. "
"Larger values lead to a thicker shell of small cubes near the boundary of "
"the model."
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_overlap label"
msgid "Infill Overlap Percentage"
@ -1148,6 +1284,19 @@ msgid ""
"speed of that layer."
msgstr ""
#: fdmprinter.def.json
msgctxt "default_material_print_temperature label"
msgid "Default Printing Temperature"
msgstr ""
#: fdmprinter.def.json
msgctxt "default_material_print_temperature description"
msgid ""
"The default temperature used for printing. This should be the \"base\" "
"temperature of a material. All other print temperatures should use offsets "
"based on this value"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_print_temperature label"
msgid "Printing Temperature"
@ -1159,6 +1308,42 @@ msgid ""
"The temperature used for printing. Set at 0 to pre-heat the printer manually."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_print_temperature_layer_0 label"
msgid "Printing Temperature Initial Layer"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_print_temperature_layer_0 description"
msgid ""
"The temperature used for printing the first layer. Set at 0 to disable "
"special handling of the initial layer."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_initial_print_temperature label"
msgid "Initial Printing Temperature"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_initial_print_temperature description"
msgid ""
"The minimal temperature while heating up to the Printing Temperature at "
"which printing can already start."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_final_print_temperature label"
msgid "Final Printing Temperature"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_final_print_temperature description"
msgid ""
"The temperature to which to already start cooling down just before the end "
"of printing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow_temp_graph label"
msgid "Flow Temperature Graph"
@ -1195,6 +1380,16 @@ msgid ""
"printer manually."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_bed_temperature_layer_0 label"
msgid "Build Plate Temperature Initial Layer"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_bed_temperature_layer_0 description"
msgid "The temperature used for the heated build plate at the first layer."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_diameter label"
msgid "Diameter"
@ -1230,6 +1425,16 @@ msgid ""
"Retract the filament when the nozzle is moving over a non-printed area. "
msgstr ""
#: fdmprinter.def.json
msgctxt "retract_at_layer_change label"
msgid "Retract at Layer Change"
msgstr ""
#: fdmprinter.def.json
msgctxt "retract_at_layer_change description"
msgid "Retract the filament when the nozzle is moving to the next layer."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_amount label"
msgid "Retraction Distance"
@ -1553,7 +1758,9 @@ msgstr ""
msgctxt "speed_travel_layer_0 description"
msgid ""
"The speed of travel moves in the initial layer. A lower value is advised to "
"prevent pulling previously printed parts away from the build plate."
"prevent pulling previously printed parts away from the build plate. The "
"value of this setting can automatically be calculated from the ratio between "
"the Travel Speed and the Print Speed."
msgstr ""
#: fdmprinter.def.json
@ -1991,9 +2198,7 @@ msgid ""
"results in slightly longer travel moves but reduces the need for "
"retractions. If combing is off, the material will retract and the nozzle "
"moves in a straight line to the next point. It is also possible to avoid "
"combing over top/bottom skin areas by combing within the infill only. It is "
"also possible to avoid combing over top/bottom skin areas by combing within "
"the infill only."
"combing over top/bottom skin areas by combing within the infill only."
msgstr ""
#: fdmprinter.def.json
@ -2013,7 +2218,7 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "travel_avoid_other_parts label"
msgid "Avoid Printed Parts when Traveling"
msgid "Avoid Printed Parts When Traveling"
msgstr ""
#: fdmprinter.def.json
@ -2035,9 +2240,47 @@ msgid ""
"during travel moves."
msgstr ""
#: fdmprinter.def.json
msgctxt "start_layers_at_same_position label"
msgid "Start Layers with the Same Part"
msgstr ""
#: fdmprinter.def.json
msgctxt "start_layers_at_same_position description"
msgid ""
"In each layer start with printing the object near the same point, so that we "
"don't start a new layer with printing the piece which the previous layer "
"ended with. This makes for better overhangs and small parts, but increases "
"printing time."
msgstr ""
#: fdmprinter.def.json
msgctxt "layer_start_x label"
msgid "Layer Start X"
msgstr ""
#: fdmprinter.def.json
msgctxt "layer_start_x description"
msgid ""
"The X coordinate of the position near where to find the part to start "
"printing each layer."
msgstr ""
#: fdmprinter.def.json
msgctxt "layer_start_y label"
msgid "Layer Start Y"
msgstr ""
#: fdmprinter.def.json
msgctxt "layer_start_y description"
msgid ""
"The Y coordinate of the position near where to find the part to start "
"printing each layer."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_enabled label"
msgid "Z Hop when Retracted"
msgid "Z Hop When Retracted"
msgstr ""
#: fdmprinter.def.json
@ -2156,6 +2399,19 @@ msgid ""
"maximum fan speed."
msgstr ""
#: fdmprinter.def.json
msgctxt "cool_fan_speed_0 label"
msgid "Initial Fan Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "cool_fan_speed_0 description"
msgid ""
"The speed at which the fans spin at the start of the print. In subsequent "
"layers the fan speed is gradually increased up to the layer corresponding to "
"Regular Fan Speed at Height."
msgstr ""
#: fdmprinter.def.json
msgctxt "cool_fan_full_at_height label"
msgid "Regular Fan Speed at Height"
@ -2165,7 +2421,8 @@ msgstr ""
msgctxt "cool_fan_full_at_height description"
msgid ""
"The height at which the fans spin on regular fan speed. At the layers below "
"the fan speed gradually increases from zero to regular fan speed."
"the fan speed gradually increases from Initial Fan Speed to Regular Fan "
"Speed."
msgstr ""
#: fdmprinter.def.json
@ -2358,6 +2615,11 @@ msgctxt "support_pattern option concentric"
msgid "Concentric"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_pattern option concentric_3d"
msgid "Concentric 3D"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_pattern option zigzag"
msgid "Zig Zag"
@ -2635,6 +2897,11 @@ msgctxt "support_interface_pattern option concentric"
msgid "Concentric"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_pattern option concentric_3d"
msgid "Concentric 3D"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_pattern option zigzag"
msgid "Zig Zag"
@ -2751,6 +3018,11 @@ msgctxt "adhesion_type option raft"
msgid "Raft"
msgstr ""
#: fdmprinter.def.json
msgctxt "adhesion_type option none"
msgid "None"
msgstr ""
#: fdmprinter.def.json
msgctxt "adhesion_extruder_nr label"
msgid "Build Plate Adhesion Extruder"
@ -3198,6 +3470,30 @@ msgctxt "prime_tower_size description"
msgid "The width of the prime tower."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_min_volume label"
msgid "Prime Tower Minimum Volume"
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_min_volume description"
msgid ""
"The minimum volume for each layer of the prime tower in order to purge "
"enough material."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_wall_thickness label"
msgid "Prime Tower Thickness"
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_wall_thickness description"
msgid ""
"The thickness of the hollow prime tower. A thickness larger than half the "
"Prime Tower Minimum Volume will result in a dense prime tower."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_position_x label"
msgid "Prime Tower X Position"
@ -3232,7 +3528,7 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_wipe_enabled label"
msgid "Wipe Nozzle on Prime Tower"
msgid "Wipe Inactive Nozzle on Prime Tower"
msgstr ""
#: fdmprinter.def.json
@ -3243,15 +3539,16 @@ msgid ""
msgstr ""
#: fdmprinter.def.json
msgctxt "multiple_mesh_overlap label"
msgid "Dual Extrusion Overlap"
msgctxt "dual_pre_wipe label"
msgid "Wipe Nozzle After Switch"
msgstr ""
#: fdmprinter.def.json
msgctxt "multiple_mesh_overlap description"
msgctxt "dual_pre_wipe description"
msgid ""
"Make the models printed with different extruder trains overlap a bit. This "
"makes the different materials bond together better."
"After switching extruder, wipe the oozed material off of the nozzle on the "
"first thing printed. This performs a safe slow wipe move at a place where "
"the oozed material causes least harm to the surface quality of your print."
msgstr ""
#: fdmprinter.def.json
@ -3308,8 +3605,9 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "meshfix_union_all description"
msgid ""
"Ignore the internal geometry arising from overlapping volumes and print the "
"volumes as one. This may cause internal cavities to disappear."
"Ignore the internal geometry arising from overlapping volumes within a mesh "
"and print the volumes as one. This may cause unintended internal cavities to "
"disappear."
msgstr ""
#: fdmprinter.def.json
@ -3352,6 +3650,18 @@ msgid ""
"everything else fails to produce proper GCode."
msgstr ""
#: fdmprinter.def.json
msgctxt "multiple_mesh_overlap label"
msgid "Merged Meshes Overlap"
msgstr ""
#: fdmprinter.def.json
msgctxt "multiple_mesh_overlap description"
msgid ""
"Make meshes which are touching each other overlap a bit. This makes them "
"bond together better."
msgstr ""
#: fdmprinter.def.json
msgctxt "carve_multiple_volumes label"
msgid "Remove Mesh Intersection"
@ -3360,8 +3670,22 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "carve_multiple_volumes description"
msgid ""
"Remove areas where multiple objecs are overlapping with each other. This is "
"may be used if merged dual material objects overlap with each other."
"Remove areas where multiple meshes are overlapping with each other. This may "
"be used if merged dual material objects overlap with each other."
msgstr ""
#: fdmprinter.def.json
msgctxt "alternate_carve_order label"
msgid "Alternate Mesh Removal"
msgstr ""
#: fdmprinter.def.json
msgctxt "alternate_carve_order description"
msgid ""
"Switch to which mesh intersecting volumes will belong with every layer, so "
"that the overlapping meshes become interwoven. Turning this setting off will "
"cause one of the meshes to obtain all of the volume in the overlap, while it "
"is removed from the other meshes."
msgstr ""
#: fdmprinter.def.json
@ -3425,6 +3749,30 @@ msgid ""
"lower order and normal meshes."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_mesh label"
msgid "Support Mesh"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_mesh description"
msgid ""
"Use this mesh to specify support areas. This can be used to generate support "
"structure."
msgstr ""
#: fdmprinter.def.json
msgctxt "anti_overhang_mesh label"
msgid "Anti Overhang Mesh"
msgstr ""
#: fdmprinter.def.json
msgctxt "anti_overhang_mesh description"
msgid ""
"Use this mesh to specify where no part of the model should be detected as "
"overhang. This can be used to remove unwanted support structure."
msgstr ""
#: fdmprinter.def.json
msgctxt "magic_mesh_surface_mode label"
msgid "Surface Mode"
@ -3677,6 +4025,17 @@ msgid ""
"Small widths can lead to unstable support structures."
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_hollow label"
msgid "Hollow Out Objects"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_hollow description"
msgid ""
"Remove all infill and make the inside of the object eligible for support."
msgstr ""
#: fdmprinter.def.json
msgctxt "magic_fuzzy_skin_enabled label"
msgid "Fuzzy Skin"
@ -4040,3 +4399,70 @@ msgid ""
"which in turn results in less upward connections with the next layer. Only "
"applies to Wire Printing."
msgstr ""
#: fdmprinter.def.json
msgctxt "command_line_settings label"
msgid "Command Line Settings"
msgstr ""
#: fdmprinter.def.json
msgctxt "command_line_settings description"
msgid ""
"Settings which are only used if CuraEngine isn't called from the Cura "
"frontend."
msgstr ""
#: fdmprinter.def.json
msgctxt "center_object label"
msgid "Center object"
msgstr ""
#: fdmprinter.def.json
msgctxt "center_object description"
msgid ""
"Whether to center the object on the middle of the build platform (0,0), "
"instead of using the coordinate system in which the object was saved."
msgstr ""
#: fdmprinter.def.json
msgctxt "mesh_position_x label"
msgid "Mesh position x"
msgstr ""
#: fdmprinter.def.json
msgctxt "mesh_position_x description"
msgid "Offset applied to the object in the x direction."
msgstr ""
#: fdmprinter.def.json
msgctxt "mesh_position_y label"
msgid "Mesh position y"
msgstr ""
#: fdmprinter.def.json
msgctxt "mesh_position_y description"
msgid "Offset applied to the object in the y direction."
msgstr ""
#: fdmprinter.def.json
msgctxt "mesh_position_z label"
msgid "Mesh position z"
msgstr ""
#: fdmprinter.def.json
msgctxt "mesh_position_z description"
msgid ""
"Offset applied to the object in the z direction. With this you can perform "
"what was used to be called 'Object Sink'."
msgstr ""
#: fdmprinter.def.json
msgctxt "mesh_rotation_matrix label"
msgid "Mesh Rotation Matrix"
msgstr ""
#: fdmprinter.def.json
msgctxt "mesh_rotation_matrix description"
msgid ""
"Transformation matrix to be applied to the model when loading it from file."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -1,182 +1,173 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-09-20 17:35+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Laite"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Laitekohtaiset asetukset"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Suulake"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Tulostukseen käytettävä suulakeryhmä. Tätä käytetään monipursotuksessa."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Suuttimen X-siirtymä"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Suuttimen siirtymän X-koordinaatti."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Suuttimen Y-siirtymä"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Suuttimen siirtymän Y-koordinaatti."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Suulakkeen aloitus-GCode"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Aloitus-GCode, joka suoritetaan suulakkeen käynnistyksen yhteydessä."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Suulakkeen aloitussijainti absoluuttinen"
#: 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 "Tekee suulakkeen aloitussijainnista absoluuttisen eikä suhteellisen viimeksi tunnettuun pään sijaintiin nähden."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "Suulakkeen aloitussijainti 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 "Aloitussijainnin X-koordinaatti suulaketta käynnistettäessä."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Suulakkeen aloitussijainti 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 "Aloitussijainnin Y-koordinaatti suulaketta käynnistettäessä."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Suulakkeen lopetus-GCode"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Lopetus-GCode, joka suoritetaan, kun suulake poistetaan käytöstä."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Suulakkeen lopetussijainti absoluuttinen"
#: 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 "Tekee suulakkeen lopetussijainnista absoluuttisen eikä suhteellisen viimeksi tunnettuun pään sijaintiin nähden."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Suulakkeen lopetussijainti 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 "Lopetussijainnin X-koordinaatti, kun suulake poistetaan käytöstä."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Suulakkeen lopetussijainti 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 "Lopetussijainnin Y-koordinaatti, kun suulake poistetaan käytöstä."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Suulakkeen esitäytön Z-sijainti"
#: 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 "Z-koordinaatti sijainnille, jossa suutin esitäytetään tulostusta aloitettaessa."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Alustan tarttuvuus"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Tarttuvuus"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Suulakkeen esitäytön X-sijainti"
#: 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 "X-koordinaatti sijainnille, jossa suutin esitäytetään tulostusta aloitettaessa."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Suulakkeen esitäytön Y-sijainti"
#: 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 "Y-koordinaatti sijainnille, jossa suutin esitäytetään tulostusta aloitettaessa."
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Laite"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Laitekohtaiset asetukset"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Suulake"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Tulostukseen käytettävä suulakeryhmä. Tätä käytetään monipursotuksessa."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Suuttimen X-siirtymä"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Suuttimen siirtymän X-koordinaatti."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Suuttimen Y-siirtymä"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Suuttimen siirtymän Y-koordinaatti."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Suulakkeen aloitus-GCode"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Aloitus-GCode, joka suoritetaan suulakkeen käynnistyksen yhteydessä."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Suulakkeen aloitussijainti absoluuttinen"
#: 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 "Tekee suulakkeen aloitussijainnista absoluuttisen eikä suhteellisen viimeksi tunnettuun pään sijaintiin nähden."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "Suulakkeen aloitussijainti 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 "Aloitussijainnin X-koordinaatti suulaketta käynnistettäessä."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Suulakkeen aloitussijainti 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 "Aloitussijainnin Y-koordinaatti suulaketta käynnistettäessä."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Suulakkeen lopetus-GCode"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Lopetus-GCode, joka suoritetaan, kun suulake poistetaan käytöstä."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Suulakkeen lopetussijainti absoluuttinen"
#: 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 "Tekee suulakkeen lopetussijainnista absoluuttisen eikä suhteellisen viimeksi tunnettuun pään sijaintiin nähden."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Suulakkeen lopetussijainti 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 "Lopetussijainnin X-koordinaatti, kun suulake poistetaan käytöstä."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Suulakkeen lopetussijainti 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 "Lopetussijainnin Y-koordinaatti, kun suulake poistetaan käytöstä."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Suulakkeen esitäytön Z-sijainti"
#: 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 "Z-koordinaatti sijainnille, jossa suutin esitäytetään tulostusta aloitettaessa."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Alustan tarttuvuus"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Tarttuvuus"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Suulakkeen esitäytön X-sijainti"
#: 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 "X-koordinaatti sijainnille, jossa suutin esitäytetään tulostusta aloitettaessa."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Suulakkeen esitäytön Y-sijainti"
#: 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 "Y-koordinaatti sijainnille, jossa suutin esitäytetään tulostusta aloitettaessa."

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,182 +1,173 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-09-20 17:35+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Machine"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Paramètres spécifiques de la machine"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Extrudeuse"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Le train d'extrudeuse utilisé pour l'impression. Cela est utilisé en multi-extrusion."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Buse Décalage X"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Les coordonnées X du décalage de la buse."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Buse Décalage Y"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Les coordonnées Y du décalage de la buse."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Extrudeuse G-Code de démarrage"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "G-Code de démarrage à exécuter à chaque mise en marche de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Extrudeuse Position de départ absolue"
#: 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 "Rendre la position de départ de l'extrudeuse absolue plutôt que relative à la dernière position connue de la tête."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "Extrudeuse Position de départ 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 "Les coordonnées X de la position de départ lors de la mise en marche de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Extrudeuse Position de départ 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 "Les coordonnées Y de la position de départ lors de la mise en marche de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Extrudeuse G-Code de fin"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "G-Code de fin à exécuter à chaque arrêt de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Extrudeuse Position de fin absolue"
#: 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 "Rendre la position de fin de l'extrudeuse absolue plutôt que relative à la dernière position connue de la tête."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Extrudeuse Position de fin 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 "Les coordonnées X de la position de fin lors de l'arrêt de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Extrudeuse Position de fin 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 "Les coordonnées Y de la position de fin lors de l'arrêt de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Extrudeuse Position d'amorçage 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 "Les coordonnées Z de la position à laquelle la buse s'amorce au début de l'impression."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Adhérence du plateau"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Adhérence"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Extrudeuse Position d'amorçage 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 "Les coordonnées X de la position à laquelle la buse s'amorce au début de l'impression."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Extrudeuse Position d'amorçage 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 "Les coordonnées Y de la position à laquelle la buse s'amorce au début de l'impression."
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Machine"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Paramètres spécifiques de la machine"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Extrudeuse"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Le train d'extrudeuse utilisé pour l'impression. Cela est utilisé en multi-extrusion."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Buse Décalage X"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Les coordonnées X du décalage de la buse."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Buse Décalage Y"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Les coordonnées Y du décalage de la buse."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Extrudeuse G-Code de démarrage"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "G-Code de démarrage à exécuter à chaque mise en marche de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Extrudeuse Position de départ absolue"
#: 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 "Rendre la position de départ de l'extrudeuse absolue plutôt que relative à la dernière position connue de la tête."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "Extrudeuse Position de départ 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 "Les coordonnées X de la position de départ lors de la mise en marche de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Extrudeuse Position de départ 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 "Les coordonnées Y de la position de départ lors de la mise en marche de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Extrudeuse G-Code de fin"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "G-Code de fin à exécuter à chaque arrêt de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Extrudeuse Position de fin absolue"
#: 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 "Rendre la position de fin de l'extrudeuse absolue plutôt que relative à la dernière position connue de la tête."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Extrudeuse Position de fin 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 "Les coordonnées X de la position de fin lors de l'arrêt de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Extrudeuse Position de fin 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 "Les coordonnées Y de la position de fin lors de l'arrêt de l'extrudeuse."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Extrudeuse Position d'amorçage 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 "Les coordonnées Z de la position à laquelle la buse s'amorce au début de l'impression."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Adhérence du plateau"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Adhérence"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Extrudeuse Position d'amorçage 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 "Les coordonnées X de la position à laquelle la buse s'amorce au début de l'impression."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Extrudeuse Position d'amorçage 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 "Les coordonnées Y de la position à laquelle la buse s'amorce au début de l'impression."

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,182 +1,173 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-09-20 17:35+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Macchina"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Impostazioni macchina specifiche"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Estrusore"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Treno estrusore utilizzato per la stampa. Utilizzato nellestrusione multipla."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Offset X ugello"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "La coordinata y delloffset dellugello."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Offset Y ugello"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "La coordinata y delloffset dellugello."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Codice G avvio estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Codice G di avvio da eseguire ogniqualvolta si accende lestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Assoluto posizione avvio estrusore"
#: 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 "Rende la posizione di partenza estrusore assoluta anziché relativa rispetto allultima posizione nota della testina."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "X posizione avvio estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description"
msgid "The x-coordinate of the starting position when turning the extruder on."
msgstr "La coordinata x della posizione di partenza allaccensione dellestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Y posizione avvio estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description"
msgid "The y-coordinate of the starting position when turning the extruder on."
msgstr "La coordinata y della posizione di partenza allaccensione dellestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Codice G fine estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Codice G di fine da eseguire ogniqualvolta si spegne lestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Assoluto posizione fine estrusore"
#: 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 "Rende la posizione di fine estrusore assoluta anziché relativa rispetto allultima posizione nota della testina."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Posizione X fine estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x description"
msgid "The x-coordinate of the ending position when turning the extruder off."
msgstr "La coordinata x della posizione di fine allo spegnimento dellestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Posizione Y fine estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y description"
msgid "The y-coordinate of the ending position when turning the extruder off."
msgstr "La coordinata y della posizione di fine allo spegnimento dellestrusore."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Posizione Z innesco estrusore"
#: 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 "Indica la coordinata Z della posizione in cui lugello si innesca allavvio della stampa."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Adesione piano di stampa"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Adesione"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Posizione X innesco estrusore"
#: 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 "La coordinata X della posizione in cui lugello si innesca allavvio della stampa."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Posizione Y innesco estrusore"
#: 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 "La coordinata Y della posizione in cui lugello si innesca allavvio della stampa."
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Macchina"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Impostazioni macchina specifiche"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Estrusore"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Treno estrusore utilizzato per la stampa. Utilizzato nellestrusione multipla."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Offset X ugello"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "La coordinata y delloffset dellugello."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Offset Y ugello"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "La coordinata y delloffset dellugello."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Codice G avvio estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Codice G di avvio da eseguire ogniqualvolta si accende lestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Assoluto posizione avvio estrusore"
#: 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 "Rende la posizione di partenza estrusore assoluta anziché relativa rispetto allultima posizione nota della testina."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "X posizione avvio estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description"
msgid "The x-coordinate of the starting position when turning the extruder on."
msgstr "La coordinata x della posizione di partenza allaccensione dellestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Y posizione avvio estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description"
msgid "The y-coordinate of the starting position when turning the extruder on."
msgstr "La coordinata y della posizione di partenza allaccensione dellestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Codice G fine estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Codice G di fine da eseguire ogniqualvolta si spegne lestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Assoluto posizione fine estrusore"
#: 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 "Rende la posizione di fine estrusore assoluta anziché relativa rispetto allultima posizione nota della testina."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Posizione X fine estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x description"
msgid "The x-coordinate of the ending position when turning the extruder off."
msgstr "La coordinata x della posizione di fine allo spegnimento dellestrusore."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Posizione Y fine estrusore"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y description"
msgid "The y-coordinate of the ending position when turning the extruder off."
msgstr "La coordinata y della posizione di fine allo spegnimento dellestrusore."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Posizione Z innesco estrusore"
#: 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 "Indica la coordinata Z della posizione in cui lugello si innesca allavvio della stampa."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Adesione piano di stampa"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Adesione"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Posizione X innesco estrusore"
#: 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 "La coordinata X della posizione in cui lugello si innesca allavvio della stampa."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Posizione Y innesco estrusore"
#: 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 "La coordinata Y della posizione in cui lugello si innesca allavvio della stampa."

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,182 +1,173 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/Ultimaker/Cura\n"
"POT-Creation-Date: 2016-09-20 17:35+0000\n"
"PO-Revision-Date: 2016-10-11 16:05+0200\n"
"Last-Translator: Ruben Dulek <r.dulek@ultimaker.com>\n"
"Language-Team: Ultimaker\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Machine"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Instellingen van de machine"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Extruder"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "De extruder train die voor het printen wordt gebruikt. Deze wordt gebruikt in meervoudige doorvoer."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "X-Offset Nozzle"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "De X-coördinaat van de offset van de nozzle."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Y-Offset Nozzle"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "De Y-coördinaat van de offset van de nozzle."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Start G-code van Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Start-g-code die wordt uitgevoerd wanneer de extruder wordt ingeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Absolute Startpositie Extruder"
#: 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 "Maak van de startpositie van de extruder de absolute startpositie, in plaats van de relatieve startpositie ten opzichte van de laatst bekende locatie van de printkop."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "X-startpositie Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description"
msgid "The x-coordinate of the starting position when turning the extruder on."
msgstr "De X-coördinaat van de startpositie wanneer de extruder wordt ingeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Y-startpositie Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description"
msgid "The y-coordinate of the starting position when turning the extruder on."
msgstr "De Y-coördinaat van de startpositie wanneer de extruder wordt ingeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Eind-g-code van Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Eind-g-code die wordt uitgevoerd wanneer de extruder wordt uitgeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Absolute Eindpositie Extruder"
#: 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 "Maak van de eindpositie van de extruder de absolute eindpositie, in plaats van de relatieve eindpositie ten opzichte van de laatst bekende locatie van de printkop."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "X-eindpositie Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x description"
msgid "The x-coordinate of the ending position when turning the extruder off."
msgstr "De X-coördinaat van de eindpositie wanneer de extruder wordt uitgeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Y-eindpositie Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y description"
msgid "The y-coordinate of the ending position when turning the extruder off."
msgstr "De Y-coördinaat van de eindpositie wanneer de extruder wordt uitgeschakeld."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Z-positie voor Primen Extruder"
#: 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 "De Z-coördinaat van de positie waar filament in de nozzle wordt geprimet aan het begin van het printen."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Hechting aan Platform"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Hechting"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "X-positie voor Primen Extruder"
#: 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 "De X-coördinaat van de positie waar filament in de nozzle wordt geprimet aan het begin van het printen."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Y-positie voor Primen Extruder"
#: 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 "De Y-coördinaat van de positie waar filament in de nozzle wordt geprimet aan het begin van het printen."
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: 2016-10-11 16:05+0200\n"
"Last-Translator: Ruben Dulek <r.dulek@ultimaker.com>\n"
"Language-Team: Ultimaker\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Machine"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Instellingen van de machine"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Extruder"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "De extruder train die voor het printen wordt gebruikt. Deze wordt gebruikt in meervoudige doorvoer."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "X-Offset Nozzle"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "De X-coördinaat van de offset van de nozzle."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Y-Offset Nozzle"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "De Y-coördinaat van de offset van de nozzle."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Start G-code van Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Start-g-code die wordt uitgevoerd wanneer de extruder wordt ingeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Absolute Startpositie Extruder"
#: 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 "Maak van de startpositie van de extruder de absolute startpositie, in plaats van de relatieve startpositie ten opzichte van de laatst bekende locatie van de printkop."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "X-startpositie Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description"
msgid "The x-coordinate of the starting position when turning the extruder on."
msgstr "De X-coördinaat van de startpositie wanneer de extruder wordt ingeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Y-startpositie Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description"
msgid "The y-coordinate of the starting position when turning the extruder on."
msgstr "De Y-coördinaat van de startpositie wanneer de extruder wordt ingeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Eind-g-code van Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Eind-g-code die wordt uitgevoerd wanneer de extruder wordt uitgeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Absolute Eindpositie Extruder"
#: 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 "Maak van de eindpositie van de extruder de absolute eindpositie, in plaats van de relatieve eindpositie ten opzichte van de laatst bekende locatie van de printkop."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "X-eindpositie Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x description"
msgid "The x-coordinate of the ending position when turning the extruder off."
msgstr "De X-coördinaat van de eindpositie wanneer de extruder wordt uitgeschakeld."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Y-eindpositie Extruder"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y description"
msgid "The y-coordinate of the ending position when turning the extruder off."
msgstr "De Y-coördinaat van de eindpositie wanneer de extruder wordt uitgeschakeld."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Z-positie voor Primen Extruder"
#: 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 "De Z-coördinaat van de positie waar filament in de nozzle wordt geprimet aan het begin van het printen."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Hechting aan Platform"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Hechting"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "X-positie voor Primen Extruder"
#: 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 "De X-coördinaat van de positie waar filament in de nozzle wordt geprimet aan het begin van het printen."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Y-positie voor Primen Extruder"
#: 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 "De Y-coördinaat van de positie waar filament in de nozzle wordt geprimet aan het begin van het printen."

File diff suppressed because it is too large Load diff

3544
resources/i18n/ru/cura.po Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,182 +1,173 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-09-20 17:35+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Makine"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Makine özel ayarları"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Ekstruder"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Yazdırma için kullanılan ekstruder dişli çark. Çoklu ekstrüzyon işlemi için kullanılır."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Nozül NX Ofseti"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Nozül ofsetinin x koordinatı."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Nozül Y Ofseti"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Nozül ofsetinin y koordinatı."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Ekstruder G-Code'u başlatma"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Ekstruderi her açtığınızda g-code'u başlatın."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Ekstruderin Mutlak Başlangıç Konumu"
#: 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 "Ekstruder başlama konumunu, yazıcı başlığının son konumuna göre ayarlamak yerine mutlak olarak ayarlayın."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "Ekstruder X Başlangıç Konumu"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description"
msgid "The x-coordinate of the starting position when turning the extruder on."
msgstr "Ekstruder açılırken başlangıç konumunun x koordinatı."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Ekstruder Y Başlangıç Konumu"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description"
msgid "The y-coordinate of the starting position when turning the extruder on."
msgstr "Ekstruder açılırken başlangıç konumunun Y koordinatı."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Ekstruder G-Code'u Sonlandırma"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Ekstruderi her kapattığınızda g-code'u sonlandırın."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Ekstruderin Mutlak Bitiş Konumu"
#: 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 "Ekstruder bitiş konumunu, yazıcı başlığının son konumuna göre ayarlamak yerine mutlak olarak ayarlayın."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Ekstruderin X Bitiş Konumu"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x description"
msgid "The x-coordinate of the ending position when turning the extruder off."
msgstr "Ekstruder kapatılırken bitiş konumunun x koordinatı."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Ekstruderin Y Bitiş Konumu"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y description"
msgid "The y-coordinate of the ending position when turning the extruder off."
msgstr "Ekstruder kapatılırken bitiş konumunun Y koordinatı."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Ekstruder İlk Z konumu"
#: 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 "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun Z koordinatı."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Yapı Levhası Yapıştırması"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Yapıştırma"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Extruder İlk X konumu"
#: 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 "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun X koordinatı."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Extruder İlk Y konumu"
#: 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 "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun Y koordinatı."
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-12-28 10:51+0000\n"
"PO-Revision-Date: 2016-09-29 13:02+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: fdmextruder.def.json
msgctxt "machine_settings label"
msgid "Machine"
msgstr "Makine"
#: fdmextruder.def.json
msgctxt "machine_settings description"
msgid "Machine specific settings"
msgstr "Makine özel ayarları"
#: fdmextruder.def.json
msgctxt "extruder_nr label"
msgid "Extruder"
msgstr "Ekstruder"
#: fdmextruder.def.json
msgctxt "extruder_nr description"
msgid "The extruder train used for printing. This is used in multi-extrusion."
msgstr "Yazdırma için kullanılan ekstruder dişli çark. Çoklu ekstrüzyon işlemi için kullanılır."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x label"
msgid "Nozzle X Offset"
msgstr "Nozül NX Ofseti"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_x description"
msgid "The x-coordinate of the offset of the nozzle."
msgstr "Nozül ofsetinin x koordinatı."
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y label"
msgid "Nozzle Y Offset"
msgstr "Nozül Y Ofseti"
#: fdmextruder.def.json
msgctxt "machine_nozzle_offset_y description"
msgid "The y-coordinate of the offset of the nozzle."
msgstr "Nozül ofsetinin y koordinatı."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code"
msgstr "Ekstruder G-Code'u başlatma"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_code description"
msgid "Start g-code to execute whenever turning the extruder on."
msgstr "Ekstruderi her açtığınızda g-code'u başlatın."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute"
msgstr "Ekstruderin Mutlak Başlangıç Konumu"
#: 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 "Ekstruder başlama konumunu, yazıcı başlığının son konumuna göre ayarlamak yerine mutlak olarak ayarlayın."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X"
msgstr "Ekstruder X Başlangıç Konumu"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description"
msgid "The x-coordinate of the starting position when turning the extruder on."
msgstr "Ekstruder açılırken başlangıç konumunun x koordinatı."
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y"
msgstr "Ekstruder Y Başlangıç Konumu"
#: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description"
msgid "The y-coordinate of the starting position when turning the extruder on."
msgstr "Ekstruder açılırken başlangıç konumunun Y koordinatı."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code"
msgstr "Ekstruder G-Code'u Sonlandırma"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_code description"
msgid "End g-code to execute whenever turning the extruder off."
msgstr "Ekstruderi her kapattığınızda g-code'u sonlandırın."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute"
msgstr "Ekstruderin Mutlak Bitiş Konumu"
#: 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 "Ekstruder bitiş konumunu, yazıcı başlığının son konumuna göre ayarlamak yerine mutlak olarak ayarlayın."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X"
msgstr "Ekstruderin X Bitiş Konumu"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x description"
msgid "The x-coordinate of the ending position when turning the extruder off."
msgstr "Ekstruder kapatılırken bitiş konumunun x koordinatı."
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y"
msgstr "Ekstruderin Y Bitiş Konumu"
#: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y description"
msgid "The y-coordinate of the ending position when turning the extruder off."
msgstr "Ekstruder kapatılırken bitiş konumunun Y koordinatı."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position"
msgstr "Ekstruder İlk Z konumu"
#: 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 "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun Z koordinatı."
#: fdmextruder.def.json
msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion"
msgstr "Yapı Levhası Yapıştırması"
#: fdmextruder.def.json
msgctxt "platform_adhesion description"
msgid "Adhesion"
msgstr "Yapıştırma"
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position"
msgstr "Extruder İlk X konumu"
#: 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 "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun X koordinatı."
#: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position"
msgstr "Extruder İlk Y konumu"
#: 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 "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun Y koordinatı."

File diff suppressed because it is too large Load diff

View file

@ -14,25 +14,25 @@ UM.Dialog
//: About dialog title
title: catalog.i18nc("@title:window","About Cura")
minimumWidth: 400 * Screen.devicePixelRatio
minimumHeight: 300 * Screen.devicePixelRatio
minimumWidth: 450 * Screen.devicePixelRatio
minimumHeight: 550 * Screen.devicePixelRatio
width: minimumWidth
height: minimumHeight
//UM.I18nCatalog { id: catalog; }
Image
{
id: logo
width: parent.width * 0.75
width: base.minimumWidth * 0.85
height: width * (1/4.25)
source: UM.Theme.getImage("logo")
sourceSize.width: width
sourceSize.height: height
anchors.centerIn: parent
anchors.verticalCenterOffset : -(height * 0.5)
anchors.top: parent.top
anchors.topMargin: (base.minimumWidth - width) / 2
anchors.horizontalCenter: parent.horizontalCenter
UM.I18nCatalog{id: catalog; name:"cura"}
}
@ -42,10 +42,9 @@ UM.Dialog
text: "Cura %1".arg(UM.Application.version)
font: UM.Theme.getFont("large")
anchors.horizontalCenter : logo.horizontalCenter
anchors.horizontalCenterOffset : (logo.width * 0.25)
anchors.right : logo.right
anchors.top: logo.bottom
anchors.topMargin : 5
anchors.topMargin: UM.Theme.getSize("default_margin").height / 2
}
Label
@ -55,20 +54,82 @@ UM.Dialog
//: About dialog application description
text: catalog.i18nc("@label","End-to-end solution for fused filament 3D printing.")
font: UM.Theme.getFont("system")
wrapMode: Text.WordWrap
anchors.top: version.bottom
anchors.topMargin : 10
anchors.topMargin: UM.Theme.getSize("default_margin").height
}
Label
{
id: author_note
id: creditsNotes
width: parent.width
//: About dialog application author note
text: catalog.i18nc("@info:credit","Cura has been developed by Ultimaker B.V. in cooperation with the community.")
text: catalog.i18nc("@info:credit","Cura is developed by Ultimaker B.V. in cooperation with the community.\nCura proudly uses the following open source projects:")
font: UM.Theme.getFont("system")
wrapMode: Text.WordWrap
anchors.top: description.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
}
ListView
{
id: projectsList
anchors.top: creditsNotes.bottom
anchors.topMargin: 10
width: parent.width
height: childrenRect.height
delegate: Row
{
Label
{
text: "<a href='%1' title='%2'>%2</a>".arg(model.url).arg(model.name)
width: projectsList.width * 0.25
elide: Text.ElideRight
onLinkActivated: Qt.openUrlExternally(link)
}
Label
{
text: model.description
elide: Text.ElideRight
width: projectsList.width * 0.6
}
Label
{
text: model.license
elide: Text.ElideRight
width: projectsList.width * 0.15
}
}
model: ListModel
{
id: projectsModel
}
Component.onCompleted:
{
projectsModel.append({ name:"Cura", description: catalog.i18nc("@label", "Graphical user interface"), license: "AGPLv3", url: "https://github.com/Ultimaker/Cura" });
projectsModel.append({ name:"Uranium", description: catalog.i18nc("@label", "Application framework"), license: "AGPLv3", url: "https://github.com/Ultimaker/Uranium" });
projectsModel.append({ name:"CuraEngine", description: catalog.i18nc("@label", "GCode generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" });
projectsModel.append({ name:"libArcus", description: catalog.i18nc("@label", "Interprocess communication library"), license: "AGPLv3", url: "https://github.com/Ultimaker/libArcus" });
projectsModel.append({ name:"Python", description: catalog.i18nc("@label", "Programming language"), license: "Python", url: "http://python.org/" });
projectsModel.append({ name:"Qt5", description: catalog.i18nc("@label", "GUI framework"), license: "LGPLv3", url: "https://www.qt.io/" });
projectsModel.append({ name:"PyQt", description: catalog.i18nc("@label", "GUI framework bindings"), license: "GPL", url: "https://riverbankcomputing.com/software/pyqt" });
projectsModel.append({ name:"SIP", description: catalog.i18nc("@label", "C/C++ Binding library"), license: "GPL", url: "https://riverbankcomputing.com/software/sip" });
projectsModel.append({ name:"Protobuf", description: catalog.i18nc("@label", "Data interchange format"), license: "BSD", url: "https://developers.google.com/protocol-buffers" });
projectsModel.append({ name:"SciPy", description: catalog.i18nc("@label", "Support library for scientific computing "), license: "BSD-new", url: "https://www.scipy.org/" });
projectsModel.append({ name:"NumPy", description: catalog.i18nc("@label", "Support library for faster math"), license: "BSD", url: "http://www.numpy.org/" });
projectsModel.append({ name:"NumPy-STL", description: catalog.i18nc("@label", "Support library for handling STL files"), license: "BSD", url: "https://github.com/WoLpH/numpy-stl" });
projectsModel.append({ name:"PySerial", description: catalog.i18nc("@label", "Serial communication library"), license: "Python", url: "http://pyserial.sourceforge.net/" });
projectsModel.append({ name:"python-zeroconf", description: catalog.i18nc("@label", "ZeroConf discovery library"), license: "LGPL", url: "https://github.com/jstasiak/python-zeroconf" });
projectsModel.append({ name:"Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" });
projectsModel.append({ name:"Open Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://fonts.google.com/specimen/Open+Sans" });
projectsModel.append({ name:"Font-Awesome-SVG-PNG", description: catalog.i18nc("@label", "SVG icons"), license: "SIL OFL 1.1", url: "https://github.com/encharm/Font-Awesome-SVG-PNG" });
}
}
rightButtons: Button

View file

@ -20,6 +20,11 @@ UM.Dialog
property string preferredCategory: "Ultimaker"
property string activeCategory: preferredCategory
minimumWidth: UM.Theme.getSize("modal_window_minimum").width
minimumHeight: UM.Theme.getSize("modal_window_minimum").height
width: minimumWidth
height: minimumHeight
onVisibilityChanged:
{
// Reset selection and machine name
@ -46,7 +51,8 @@ UM.Dialog
left: parent.left;
top: parent.top;
right: parent.right;
bottom: parent.bottom;
bottom: machineNameRow.top;
bottomMargin: UM.Theme.getSize("default_margin").height
}
ListView
@ -65,6 +71,7 @@ UM.Dialog
section.delegate: Button
{
text: section
width: machineList.width
style: ButtonStyle
{
background: Rectangle
@ -102,8 +109,8 @@ UM.Dialog
base.activeCategory = section;
if (machineList.model.getItem(machineList.currentIndex).section != section) {
// Find the first machine from this section
for(var i = 0; i < sortedMachineDefinitionsModel.count; i++) {
var item = sortedMachineDefinitionsModel.getItem(i);
for(var i = 0; i < machineList.model.rowCount(); i++) {
var item = machineList.model.getItem(i);
if (item.section == section) {
machineList.currentIndex = i;
break;
@ -169,21 +176,33 @@ UM.Dialog
}
}
TextField
Row
{
id: machineName;
text: getMachineName()
implicitWidth: UM.Theme.getSize("standard_list_input").width
maximumLength: 40
//validator: Cura.MachineNameValidator { } //TODO: Gives a segfault in PyQt5.6. For now, we must use a signal on text changed.
validator: RegExpValidator
{
regExp: {
machineName.machine_name_validator.machineNameRegex
}
}
property var machine_name_validator: Cura.MachineNameValidator { }
id: machineNameRow
anchors.bottom:parent.bottom
spacing: UM.Theme.getSize("default_margin").width
Label
{
text: catalog.i18nc("@label", "Printer Name:")
anchors.verticalCenter: machineName.verticalCenter
}
TextField
{
id: machineName
text: getMachineName()
implicitWidth: UM.Theme.getSize("standard_list_input").width
maximumLength: 40
//validator: Cura.MachineNameValidator { } //TODO: Gives a segfault in PyQt5.6. For now, we must use a signal on text changed.
validator: RegExpValidator
{
regExp: {
machineName.machine_name_validator.machineNameRegex
}
}
property var machine_name_validator: Cura.MachineNameValidator { }
}
}
Button

View file

@ -269,16 +269,16 @@ UM.MainWindow
if(drop.urls.length > 0)
{
// Import models
var imported_model = -1;
for(var i in drop.urls)
{
// There is no endsWith in this version of JS...
if ((drop.urls[i].length <= 12) || (drop.urls[i].substring(drop.urls[i].length-12) !== ".curaprofile")) {
// Drop an object
UM.MeshFileHandler.readLocalFile(drop.urls[i]);
if (i == drop.urls.length - 1)
Printer.readLocalFile(drop.urls[i]);
if (imported_model == -1)
{
var meshName = backgroundItem.getMeshName(drop.urls[i].toString());
backgroundItem.hasMesh(decodeURIComponent(meshName));
imported_model = i;
}
}
}
@ -297,6 +297,11 @@ UM.MainWindow
}
messageDialog.open()
}
if (imported_model != -1)
{
var meshName = backgroundItem.getMeshName(drop.urls[imported_model].toString())
backgroundItem.hasMesh(decodeURIComponent(meshName))
}
}
}
}
@ -406,7 +411,8 @@ UM.MainWindow
iconSource: UM.Theme.getIcon("viewmode");
style: UM.Theme.styles.tool_button;
tooltip: '';
tooltip: "";
enabled: !PrintInformation.preSliced
menu: ViewMenu { }
}
@ -533,9 +539,9 @@ UM.MainWindow
target: Cura.Actions.addProfile
onTriggered:
{
preferences.setPage(4);
preferences.show();
preferences.show();
preferences.setPage(4);
// Create a new profile after a very short delay so the preference page has time to initiate
createProfileTimer.start();
}
@ -731,14 +737,11 @@ UM.MainWindow
for(var i in fileUrls)
{
UM.MeshFileHandler.readLocalFile(fileUrls[i])
if (i == fileUrls.length - 1)
{
var meshName = backgroundItem.getMeshName(fileUrls.toString())
backgroundItem.hasMesh(decodeURIComponent(meshName))
}
Printer.readLocalFile(fileUrls[i])
}
var meshName = backgroundItem.getMeshName(fileUrls[0].toString())
backgroundItem.hasMesh(decodeURIComponent(meshName))
}
}

View file

@ -23,7 +23,7 @@ Menu
if(printerConnected && Cura.MachineManager.printerOutputDevices[0].materialNames.length > extruderIndex)
{
var materialName = Cura.MachineManager.printerOutputDevices[0].materialNames[extruderIndex];
return catalog.i18nc("@title:menuitem %1 is the value from the printer", "Automatic: %1").arg(materialName);
return catalog.i18nc("@title:menuitem %1 is the automatically selected material", "Automatic: %1").arg(materialName);
}
return "";
}

View file

@ -26,7 +26,7 @@ Menu
return (index + 1) + ". " + path.slice(path.lastIndexOf("/") + 1);
}
onTriggered: {
UM.MeshFileHandler.readLocalFile(modelData);
Printer.readLocalFile(modelData);
var meshName = backgroundItem.getMeshName(modelData.toString())
backgroundItem.hasMesh(decodeURIComponent(meshName))
}

View file

@ -11,6 +11,7 @@ Menu
{
title: catalog.i18nc("@title:menu menubar:toplevel", "&View");
id: menu
enabled: !PrintInformation.preSliced
Instantiator
{
model: UM.ViewModel { }

View file

@ -97,6 +97,7 @@ UM.PreferencesPage
append({ text: "Français", code: "fr" })
append({ text: "Italiano", code: "it" })
append({ text: "Nederlands", code: "nl" })
append({ text: "Русский", code: "ru" })
append({ text: "Türkçe", code: "tr" })
}
}

View file

@ -278,6 +278,7 @@ UM.ManagementPage
{
messageDialog.icon = StandardIcon.Information
messageDialog.text = catalog.i18nc("@info:status", "Successfully imported material <filename>%1</filename>").arg(fileUrl)
currentItem = base.model.getItem(base.objectList.currentIndex)
}
else if(result.status == "duplicate")
{

View file

@ -34,6 +34,8 @@ Rectangle {
return catalog.i18nc("@label:PrintjobStatus %1 is target operation","Ready to %1").arg(UM.OutputDeviceManager.activeDeviceShortDescription);
case 4:
return catalog.i18nc("@label:PrintjobStatus", "Unable to Slice");
case 5:
return catalog.i18nc("@label:PrintjobStatus", "Slicing unavailable");
default:
return "";
}
@ -104,7 +106,7 @@ Rectangle {
id: saveToButton
tooltip: UM.OutputDeviceManager.activeDeviceDescription;
enabled: base.backendState == 3 && base.activity == true
enabled: (base.backendState == 3 || base.backendState == 5) && base.activity == true
height: UM.Theme.getSize("save_button_save_to_button").height
anchors.top: parent.top
@ -179,7 +181,7 @@ Rectangle {
anchors.rightMargin: UM.Theme.getSize("default_margin").width
width: UM.Theme.getSize("save_button_save_to_button").height
height: UM.Theme.getSize("save_button_save_to_button").height
enabled: base.backendState == 3 && base.activity == true
enabled: (base.backendState == 3 || base.backendState == 5) && base.activity == true
visible: devicesModel.deviceCount > 1

View file

@ -230,6 +230,10 @@ Item {
}
// Setting does have a limit_to_extruder property, so use that one instead.
if (definition.key === undefined) {
// Observed when loading workspace, probably when SettingItems are removed.
return false;
}
return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, globalPropertyProvider.properties.limit_to_extruder).indexOf(definition.key) >= 0;
}

View file

@ -100,7 +100,7 @@ SettingItem
maximumLength: 10;
validator: RegExpValidator { regExp: (definition.type == "int") ? /^-?[0-9]{0,10}/ : /^-?[0-9.,]{0,10}/ } // definition.type property from parent loader used to disallow fractional number entry
validator: RegExpValidator { regExp: (definition.type == "int") ? /^-?[0-9]{0,10}$/ : /^-?[0-9]{0,9}[.,]?[0-9]{0,10}$/ } // definition.type property from parent loader used to disallow fractional number entry
Binding
{
@ -113,7 +113,8 @@ SettingItem
// 2: quality
// 3: material -> user changed material in materialspage
// 4: variant
// 5: machine
// 5: machine_changes
// 6: machine
if ((base.resolve != "None" && base.resolve) && (stackLevel != 0) && (stackLevel != 1)) {
// We have a resolve function. Indicates that the setting is not settable per extruder and that
// we have to choose between the resolved value (default) and the global value

View file

@ -167,7 +167,7 @@ Item
id: definitionsModel;
containerId: Cura.MachineManager.activeDefinitionId
visibilityHandler: UM.SettingPreferenceVisibilityHandler { }
exclude: ["machine_settings", "command_line_settings", "infill_mesh", "infill_mesh_order"] // TODO: infill_mesh settigns are excluded hardcoded, but should be based on the fact that settable_globally, settable_per_meshgroup and settable_per_extruder are false.
exclude: ["machine_settings", "command_line_settings", "infill_mesh", "infill_mesh_order", "support_mesh", "anti_overhang_mesh"] // TODO: infill_mesh settigns are excluded hardcoded, but should be based on the fact that settable_globally, settable_per_meshgroup and settable_per_extruder are false.
expanded: Printer.expandedCategories
onExpandedChanged:
{

View file

@ -16,6 +16,7 @@ Rectangle
property int currentModeIndex;
property bool monitoringPrint: false
property bool hideSettings: PrintInformation.preSliced
Connections
{
target: Printer
@ -114,10 +115,28 @@ Rectangle
anchors.verticalCenter: parent.verticalCenter
style: ButtonStyle {
background: Rectangle {
color: control.hovered ? UM.Theme.getColor("button_hover") :
control.pressed ? UM.Theme.getColor("button_hover") : UM.Theme.getColor("sidebar_header_bar")
color: {
if(control.pressed) {
return UM.Theme.getColor("sidebar_header_active");
} else if(control.hovered) {
return UM.Theme.getColor("sidebar_header_hover");
} else {
return UM.Theme.getColor("sidebar_header_bar");
}
}
Behavior on color { ColorAnimation { duration: 50; } }
Rectangle {
id: underline;
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
height: UM.Theme.getSize("sidebar_header_highlight").height
color: UM.Theme.getColor("sidebar_header_highlight_hover")
visible: control.hovered || control.pressed
}
UM.RecolorImage {
id: downArrow
anchors.verticalCenter: parent.verticalCenter
@ -252,7 +271,7 @@ Rectangle
Rectangle {
id: headerSeparator
width: parent.width
visible: !monitoringPrint
visible: !monitoringPrint && !hideSettings
height: visible ? UM.Theme.getSize("sidebar_lining").height : 0
color: UM.Theme.getColor("sidebar_lining")
anchors.top: header.bottom
@ -270,7 +289,7 @@ Rectangle
Label {
id: settingsModeLabel
text: catalog.i18nc("@label:listbox", "Print Setup");
text: !hideSettings ? catalog.i18nc("@label:listbox", "Print Setup") : catalog.i18nc("@label:listbox","Print Setup disabled\nG-code files cannot be modified");
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width;
anchors.top: headerSeparator.bottom
@ -290,7 +309,7 @@ Rectangle
anchors.rightMargin: UM.Theme.getSize("default_margin").width
anchors.top: headerSeparator.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
visible: !monitoringPrint
visible: !monitoringPrint && !hideSettings
Component{
id: wizardDelegate
Button {
@ -366,7 +385,7 @@ Rectangle
height: settingsModeSelection.height
width: visible ? height : 0
visible: !monitoringPrint && modesListModel.get(base.currentModeIndex) != undefined && modesListModel.get(base.currentModeIndex).showFilterButton
visible: !monitoringPrint && !hideSettings && modesListModel.get(base.currentModeIndex) != undefined && modesListModel.get(base.currentModeIndex).showFilterButton
opacity: visible ? 1 : 0
onClicked: sidebarContents.currentItem.toggleFilterField()
@ -414,7 +433,7 @@ Rectangle
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: base.left
anchors.right: base.right
visible: !monitoringPrint
visible: !monitoringPrint && !hideSettings
delegate: StackViewDelegate
{

View file

@ -164,7 +164,7 @@ Column
id: variantRow
height: UM.Theme.getSize("sidebar_setup").height
visible: (Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials) && !sidebar.monitoringPrint
visible: (Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials) && !sidebar.monitoringPrint && !sidebar.hideSettings
anchors
{
@ -261,7 +261,7 @@ Column
{
id: globalProfileRow
height: UM.Theme.getSize("sidebar_setup").height
visible: !sidebar.monitoringPrint
visible: !sidebar.monitoringPrint && !sidebar.hideSettings
anchors
{

View file

@ -29,7 +29,6 @@ UM.Dialog
onClosing:
{
UM.Preferences.setValue("cura/asked_dialog_on_project_save", true)
UM.Preferences.setValue("cura/dialog_on_project_save", !dontShowAgainCheckbox.checked)
}
@ -37,16 +36,22 @@ UM.Dialog
{
if(visible)
{
if (UM.Preferences.getValue("cura/asked_dialog_on_project_save"))
{
dontShowAgain = true
} else { dontShowAgain = UM.Preferences.setValue("cura/dialog_on_project_save")}
dontShowAgain = !UM.Preferences.getValue("cura/dialog_on_project_save")
}
}
Item
{
anchors.fill: parent
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.topMargin: 20
anchors.bottomMargin: 20
anchors.leftMargin:20
anchors.rightMargin: 20
UM.SettingDefinitionsModel
{
id: definitionsModel
@ -91,7 +96,21 @@ UM.Dialog
text: catalog.i18nc("@action:label", "Printer settings")
font.bold: true
}
Row
{
width: parent.width
height: childrenRect.height
Label
{
text: catalog.i18nc("@action:label", "Type")
width: parent.width / 3
}
Label
{
text: Cura.MachineManager.activeDefinitionName
width: parent.width / 3
}
}
Row
{
width: parent.width
@ -106,8 +125,42 @@ UM.Dialog
text: Cura.MachineManager.activeMachineName
width: parent.width / 3
}
}
Repeater
{
model: Cura.MachineManager.activeMaterialNames
delegate: Column
{
Item // Spacer
{
height: spacerHeight
width: height
}
Label
{
text: catalog.i18nc("@action:label", "Extruder %1").arg(index+1)
}
height: childrenRect.height
width: parent.width
Row
{
width: parent.width
height: childrenRect.height
Label
{
text: catalog.i18nc("@action:label", "%1 & material").arg(Cura.MachineManager.activeDefinitionVariantsName)
width: parent.width / 3
}
Label
{
text: Cura.MachineManager.activeVariantNames[index] + ", " + modelData
width: parent.width / 3
}
}
}
}
Item // Spacer
{
height: spacerHeight
@ -119,7 +172,21 @@ UM.Dialog
text: catalog.i18nc("@action:label", "Profile settings")
font.bold: true
}
Row
{
width: parent.width
Label
{
text: catalog.i18nc("@action:label", "Not in profile")
width: parent.width / 3
}
Label
{
text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", Cura.MachineManager.numUserSettings).arg(Cura.MachineManager.numUserSettings)
width: parent.width / 3
}
visible: Cura.MachineManager.numUserSettings
}
Row
{
width: parent.width
@ -136,38 +203,6 @@ UM.Dialog
}
}
Item // Spacer
{
height: spacerHeight
width: height
}
Label
{
text: catalog.i18nc("@action:label", "Material settings")
font.bold: true
}
Repeater
{
model: Cura.MachineManager.activeMaterialNames
delegate: Row
{
width: parent.width
height: childrenRect.height
Label
{
text: catalog.i18nc("@action:label", "Name")
width: parent.width / 3
}
Label
{
text: modelData
width: parent.width / 3
}
}
}
Item // Spacer
{
@ -202,22 +237,34 @@ UM.Dialog
checked: dontShowAgain
}
}
}
rightButtons: [
Button
{
id: cancel_button
text: catalog.i18nc("@action:button","Cancel");
enabled: true
onClicked: close()
},
Button
{
id: ok_button
text: catalog.i18nc("@action:button","Save");
enabled: true
onClicked: {
close(); yes() }
close()
yes()
}
anchors.bottomMargin: - 0.5 * height
anchors.bottom: parent.bottom
anchors.right: parent.right
}
]
Button
{
id: cancel_button
text: catalog.i18nc("@action:button","Cancel");
enabled: true
onClicked: close()
anchors.bottom: parent.bottom
anchors.right: ok_button.left
anchors.bottomMargin: - 0.5 * height
anchors.rightMargin:2
}
}
}

View file

@ -17,7 +17,7 @@ infill_sparse_density = 22
speed_print = 30
speed_layer_0 = =round(speed_print * 30 / 30)
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_fan_speed_min = =cool_fan_speed * 0.2
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -20,7 +20,7 @@ speed_wall = 40
speed_topbottom = 30
speed_travel = 150
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_fan_speed_min = =cool_fan_speed * 0.2
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -18,7 +18,7 @@ speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_fan_speed_min = =cool_fan_speed * 0.2
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -18,6 +18,6 @@ speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_fan_speed_min = =cool_fan_speed * 0.2
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -18,7 +18,7 @@ speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
speed_infill = 55
cool_min_layer_time = 3
cool_fan_speed_min = 50
cool_fan_speed_min = =cool_fan_speed * 0.5
cool_min_speed = 20
cool_min_layer_time_fan_speed_max = 20

View file

@ -17,7 +17,7 @@ infill_sparse_density = 20
speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
cool_min_layer_time = 3
cool_fan_speed_min = 50
cool_fan_speed_min = =cool_fan_speed * 0.5
cool_min_speed = 15
cool_min_layer_time_fan_speed_max = 25

View file

@ -17,7 +17,7 @@ infill_sparse_density = 22
speed_print = 30
speed_layer_0 = =round(speed_print * 30 / 30)
cool_min_layer_time = 2
cool_fan_speed_min = 20
cool_fan_speed_min = =cool_fan_speed * 0.2
cool_min_speed = 15
cool_min_layer_time_fan_speed_max = 15

Some files were not shown because too many files have changed in this diff Show more