Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNino van Hooff <ninovanhooff@gmail.com>2019-11-01 12:51:21 +0300
committerNino van Hooff <ninovanhooff@gmail.com>2019-11-01 12:51:21 +0300
commit94d291a20c3e5e9bd84d3476cd8844bd9bf8930c (patch)
treed322550e0a12c0661fec06bfa1b1e573b732c94b
parent888c3f51a5718c80f9b3736aa86e5953e1c4ed8d (diff)
parent71fe01d7f20b76a79ff7b259b97fe13a4afa98c2 (diff)
Merge branch 'master' into CURA-6854_align_layer_label_top_bottom
# Conflicts: # plugins/SimulationView/SimulationViewMainComponent.qml
-rw-r--r--CMakeLists.txt6
-rw-r--r--cmake/CuraPluginInstall.cmake99
-rwxr-xr-xcmake/mod_bundled_packages_json.py69
-rw-r--r--cura/Machines/Models/IntentCategoryModel.py14
-rw-r--r--cura/Machines/VariantNode.py2
-rw-r--r--plugins/ImageReader/ConfigUI.qml46
-rw-r--r--plugins/ImageReader/ImageReader.py25
-rw-r--r--plugins/ImageReader/ImageReaderUI.py11
-rw-r--r--plugins/PreviewStage/PreviewMain.qml23
-rw-r--r--plugins/SimulationView/PathSlider.qml5
-rw-r--r--plugins/SimulationView/SimulationViewMainComponent.qml23
-rw-r--r--resources/definitions/ultimaker_s3.def.json2
-rw-r--r--resources/extruders/ultimaker_s3_extruder_right.def.json2
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg34
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg (renamed from resources/intent/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg)2
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg (renamed from resources/intent/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg)0
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg (renamed from resources/intent/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg)0
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg (renamed from resources/intent/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg)2
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg (renamed from resources/intent/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg)0
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg (renamed from resources/intent/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg)0
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg (renamed from resources/intent/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg)2
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg (renamed from resources/intent/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg)0
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg17
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg (renamed from resources/intent/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg)0
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg17
-rw-r--r--resources/qml/Cura.qml15
-rw-r--r--resources/qml/Settings/SettingExtruder.qml2
-rw-r--r--resources/qml/Settings/SettingItem.qml4
-rw-r--r--resources/themes/cura-light/images/logo.svg53
-rw-r--r--resources/themes/cura-light/theme.json2
54 files changed, 947 insertions, 74 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b516de6b63..4954ac46dc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,7 +49,7 @@ endif()
if(NOT ${URANIUM_DIR} STREQUAL "")
- set(CMAKE_MODULE_PATH "${URANIUM_DIR}/cmake")
+ set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake")
endif()
if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "")
list(APPEND CMAKE_MODULE_PATH ${URANIUM_DIR}/cmake)
@@ -63,8 +63,8 @@ endif()
install(DIRECTORY resources
DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
-install(DIRECTORY plugins
- DESTINATION lib${LIB_SUFFIX}/cura)
+
+include(CuraPluginInstall)
if(NOT APPLE AND NOT WIN32)
install(FILES cura_app.py
diff --git a/cmake/CuraPluginInstall.cmake b/cmake/CuraPluginInstall.cmake
new file mode 100644
index 0000000000..d35e74acb8
--- /dev/null
+++ b/cmake/CuraPluginInstall.cmake
@@ -0,0 +1,99 @@
+# Copyright (c) 2019 Ultimaker B.V.
+# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher.
+
+#
+# This module detects all plugins that need to be installed and adds them using the CMake install() command.
+# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it.
+#
+# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the
+# form of "a;b;c" or "a,b,c". By default all plugins will be installed.
+#
+
+# FIXME: Remove the code for CMake <3.12 once we have switched over completely.
+# FindPython3 is a new module since CMake 3.12. It deprecates FindPythonInterp and FindPythonLibs. The FindPython3
+# module is copied from the CMake repository here so in CMake <3.12 we can still use it.
+if(${CMAKE_VERSION} VERSION_LESS 3.12)
+ # Use FindPythonInterp and FindPythonLibs for CMake <3.12
+ find_package(PythonInterp 3 REQUIRED)
+
+ set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE})
+else()
+ # Use FindPython3 for CMake >=3.12
+ find_package(Python3 REQUIRED COMPONENTS Interpreter)
+endif()
+
+# Options or configuration variables
+set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.")
+
+file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json)
+list(LENGTH _plugin_json_list _plugin_json_list_len)
+
+# Sort the lists alphabetically so we can handle cases like this:
+# - plugins/my_plugin/plugin.json
+# - plugins/my_plugin/my_module/plugin.json
+# In this case, only "plugins/my_plugin" should be added via install().
+set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS})
+# Sanitize the string so the comparison will be case-insensitive.
+string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list)
+string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list)
+
+# WORKAROUND counterpart of what's in cura-build.
+string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}")
+
+list(LENGTH _no_install_plugin_list _no_install_plugin_list_len)
+
+if(_no_install_plugin_list_len GREATER 0)
+ list(SORT _no_install_plugin_list)
+endif()
+if(_plugin_json_list_len GREATER 0)
+ list(SORT _plugin_json_list)
+endif()
+
+# Check all plugin directories and add them via install() if needed.
+set(_install_plugin_list "")
+foreach(_plugin_json_path ${_plugin_json_list})
+ get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY)
+ file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir})
+ get_filename_component(_plugin_dir_name ${_plugin_dir} NAME)
+
+ # Make plugin name comparison case-insensitive
+ string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase)
+
+ # Check if this plugin needs to be skipped for installation
+ set(_add_plugin ON) # Indicates if this plugin should be added to the build or not.
+ set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is
+ # specified in the NO_INSTALL_PLUGINS list.
+ if(_no_install_plugin_list)
+ if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list)
+ set(_add_plugin OFF)
+ set(_is_no_install_plugin ON)
+ endif()
+ endif()
+
+ # Make sure this is not a subdirectory in a plugin that's already in the install list
+ if(_add_plugin)
+ foreach(_known_install_plugin_dir ${_install_plugin_list})
+ if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+")
+ set(_add_plugin OFF)
+ break()
+ endif()
+ endforeach()
+ endif()
+
+ if(_add_plugin)
+ message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}")
+ get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY)
+ install(DIRECTORY ${_rel_plugin_dir}
+ DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir}
+ PATTERN "__pycache__" EXCLUDE
+ PATTERN "*.qmlc" EXCLUDE
+ )
+ list(APPEND _install_plugin_list ${_plugin_dir})
+ elseif(_is_no_install_plugin)
+ message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}")
+ execute_process(COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py
+ -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages
+ ${_plugin_dir_name}
+ RESULT_VARIABLE _mod_json_result)
+ endif()
+endforeach()
diff --git a/cmake/mod_bundled_packages_json.py b/cmake/mod_bundled_packages_json.py
new file mode 100755
index 0000000000..6423591f57
--- /dev/null
+++ b/cmake/mod_bundled_packages_json.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python3
+#
+# This script removes the given package entries in the bundled_packages JSON files. This is used by the PluginInstall
+# CMake module.
+#
+
+import argparse
+import collections
+import json
+import os
+import sys
+
+
+## Finds all JSON files in the given directory recursively and returns a list of those files in absolute paths.
+#
+# \param work_dir The directory to look for JSON files recursively.
+# \return A list of JSON files in absolute paths that are found in the given directory.
+def find_json_files(work_dir: str) -> list:
+ json_file_list = []
+ for root, dir_names, file_names in os.walk(work_dir):
+ for file_name in file_names:
+ abs_path = os.path.abspath(os.path.join(root, file_name))
+ json_file_list.append(abs_path)
+ return json_file_list
+
+
+## Removes the given entries from the given JSON file. The file will modified in-place.
+#
+# \param file_path The JSON file to modify.
+# \param entries A list of strings as entries to remove.
+# \return None
+def remove_entries_from_json_file(file_path: str, entries: list) -> None:
+ try:
+ with open(file_path, "r", encoding = "utf-8") as f:
+ package_dict = json.load(f, object_hook = collections.OrderedDict)
+ except Exception as e:
+ msg = "Failed to load '{file_path}' as a JSON file. This file will be ignored Exception: {e}"\
+ .format(file_path = file_path, e = e)
+ sys.stderr.write(msg + os.linesep)
+ return
+
+ for entry in entries:
+ if entry in package_dict:
+ del package_dict[entry]
+ print("[INFO] Remove entry [{entry}] from [{file_path}]".format(file_path = file_path, entry = entry))
+
+ try:
+ with open(file_path, "w", encoding = "utf-8", newline = "\n") as f:
+ json.dump(package_dict, f, indent = 4)
+ except Exception as e:
+ msg = "Failed to write '{file_path}' as a JSON file. Exception: {e}".format(file_path = file_path, e = e)
+ raise IOError(msg)
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser("mod_bundled_packages_json")
+ parser.add_argument("-d", "--dir", dest = "work_dir",
+ help = "The directory to look for bundled packages JSON files, recursively.")
+ parser.add_argument("entries", metavar = "ENTRIES", type = str, nargs = "+")
+
+ args = parser.parse_args()
+
+ json_file_list = find_json_files(args.work_dir)
+ for json_file_path in json_file_list:
+ remove_entries_from_json_file(json_file_path, args.entries)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/cura/Machines/Models/IntentCategoryModel.py b/cura/Machines/Models/IntentCategoryModel.py
index 0ff52b325a..a968d12b7a 100644
--- a/cura/Machines/Models/IntentCategoryModel.py
+++ b/cura/Machines/Models/IntentCategoryModel.py
@@ -35,16 +35,20 @@ class IntentCategoryModel(ListModel):
_translations["default"] = {
"name": catalog.i18nc("@label", "Default")
}
+ _translations["visual"] = {
+ "name": catalog.i18nc("@label", "Visual"),
+ "description": catalog.i18nc("@text", "Optimized for appearance")
+ }
_translations["engineering"] = {
"name": catalog.i18nc("@label", "Engineering"),
- "description": catalog.i18nc("@text", "Suitable for engineering work")
-
+ "description": catalog.i18nc("@text", "Optimized for higher accuracy")
}
- _translations["smooth"] = {
- "name": catalog.i18nc("@label", "Smooth"),
- "description": catalog.i18nc("@text", "Optimized for a smooth surfaces")
+ _translations["quick"] = {
+ "name": catalog.i18nc("@label", "Draft"),
+ "description": catalog.i18nc("@text", "Optimized for fast results")
}
+
## Creates a new model for a certain intent category.
# \param The category to list the intent profiles for.
def __init__(self, intent_category: str) -> None:
diff --git a/cura/Machines/VariantNode.py b/cura/Machines/VariantNode.py
index 334a01158b..b93be9773e 100644
--- a/cura/Machines/VariantNode.py
+++ b/cura/Machines/VariantNode.py
@@ -83,7 +83,7 @@ class VariantNode(ContainerNode):
# if there is no match.
def preferredMaterial(self, approximate_diameter: int) -> MaterialNode:
for base_material, material_node in self.materials.items():
- if self.machine.preferred_material in base_material and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")):
+ if self.machine.preferred_material == base_material and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")):
return material_node
# First fallback: Choose any material with matching diameter.
for material_node in self.materials.values():
diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml
index 47ba10778c..0429fae4e1 100644
--- a/plugins/ImageReader/ConfigUI.qml
+++ b/plugins/ImageReader/ConfigUI.qml
@@ -146,6 +146,52 @@ UM.Dialog
UM.TooltipArea {
Layout.fillWidth:true
height: childrenRect.height
+ text: catalog.i18nc("@info:tooltip","For lithophanes a simple logarithmic model for translucency is available. For height maps the pixel values correspond to heights linearly.")
+ Row {
+ width: parent.width
+
+ Label {
+ text: "Color Model"
+ width: 150 * screenScaleFactor
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ ComboBox {
+ id: color_model
+ objectName: "ColorModel"
+ model: [ catalog.i18nc("@item:inlistbox","Linear"), catalog.i18nc("@item:inlistbox","Translucency") ]
+ width: 180 * screenScaleFactor
+ onCurrentIndexChanged: { manager.onColorModelChanged(currentIndex) }
+ }
+ }
+ }
+
+ UM.TooltipArea {
+ Layout.fillWidth:true
+ height: childrenRect.height
+ text: catalog.i18nc("@info:tooltip","The percentage of light penetrating a print with a thickness of 1 millimeter. Lowering this value increases the contrast in dark regions and decreases the contrast in light regions of the image.")
+ visible: color_model.currentText == catalog.i18nc("@item:inlistbox","Translucency")
+ Row {
+ width: parent.width
+
+ Label {
+ text: catalog.i18nc("@action:label", "1mm Transmittance (%)")
+ width: 150 * screenScaleFactor
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ TextField {
+ id: transmittance
+ objectName: "Transmittance"
+ focus: true
+ validator: RegExpValidator {regExp: /^[1-9]\d{0,2}([\,|\.]\d*)?$/}
+ width: 180 * screenScaleFactor
+ onTextChanged: { manager.onTransmittanceChanged(text) }
+ }
+ }
+ }
+
+ UM.TooltipArea {
+ Layout.fillWidth:true
+ height: childrenRect.height
text: catalog.i18nc("@info:tooltip","The amount of smoothing to apply to the image.")
Row {
width: parent.width
diff --git a/plugins/ImageReader/ImageReader.py b/plugins/ImageReader/ImageReader.py
index e720ce4854..d6c2827d16 100644
--- a/plugins/ImageReader/ImageReader.py
+++ b/plugins/ImageReader/ImageReader.py
@@ -3,6 +3,8 @@
import numpy
+import math
+
from PyQt5.QtGui import QImage, qRed, qGreen, qBlue
from PyQt5.QtCore import Qt
@@ -46,9 +48,9 @@ class ImageReader(MeshReader):
def _read(self, file_name):
size = max(self._ui.getWidth(), self._ui.getDepth())
- return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.lighter_is_higher)
+ return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.lighter_is_higher, self._ui.use_transparency_model, self._ui.transmittance_1mm)
- def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, lighter_is_higher):
+ def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, lighter_is_higher, use_transparency_model, transmittance_1mm):
scene_node = SceneNode()
mesh = MeshBuilder()
@@ -99,12 +101,14 @@ class ImageReader(MeshReader):
for x in range(0, width):
for y in range(0, height):
qrgb = img.pixel(x, y)
- avg = float(qRed(qrgb) + qGreen(qrgb) + qBlue(qrgb)) / (3 * 255)
- height_data[y, x] = avg
+ if use_transparency_model:
+ height_data[y, x] = (0.299 * math.pow(qRed(qrgb) / 255.0, 2.2) + 0.587 * math.pow(qGreen(qrgb) / 255.0, 2.2) + 0.114 * math.pow(qBlue(qrgb) / 255.0, 2.2))
+ else:
+ height_data[y, x] = (0.212655 * qRed(qrgb) + 0.715158 * qGreen(qrgb) + 0.072187 * qBlue(qrgb)) / 255 # fast computation ignoring gamma and degamma
Job.yieldThread()
- if not lighter_is_higher:
+ if lighter_is_higher == use_transparency_model:
height_data = 1 - height_data
for _ in range(0, blur_iterations):
@@ -124,8 +128,15 @@ class ImageReader(MeshReader):
Job.yieldThread()
- height_data *= scale_vector.y
- height_data += base_height
+ if use_transparency_model:
+ divisor = 1.0 / math.log(transmittance_1mm / 100.0) # log-base doesn't matter here. Precompute this value for faster computation of each pixel.
+ min_luminance = (transmittance_1mm / 100.0) ** (peak_height - base_height)
+ for (y, x) in numpy.ndindex(height_data.shape):
+ mapped_luminance = min_luminance + (1.0 - min_luminance) * height_data[y, x]
+ height_data[y, x] = base_height + divisor * math.log(mapped_luminance) # use same base as a couple lines above this
+ else:
+ height_data *= scale_vector.y
+ height_data += base_height
heightmap_face_count = 2 * height_minus_one * width_minus_one
total_face_count = heightmap_face_count + (width_minus_one * 2) * (height_minus_one * 2) + 2
diff --git a/plugins/ImageReader/ImageReaderUI.py b/plugins/ImageReader/ImageReaderUI.py
index 213468a2ab..a61fabb742 100644
--- a/plugins/ImageReader/ImageReaderUI.py
+++ b/plugins/ImageReader/ImageReaderUI.py
@@ -34,6 +34,8 @@ class ImageReaderUI(QObject):
self.peak_height = 2.5
self.smoothing = 1
self.lighter_is_higher = False;
+ self.use_transparency_model = True;
+ self.transmittance_1mm = 50.0; # based on pearl PLA
self._ui_lock = threading.Lock()
self._cancelled = False
@@ -75,6 +77,7 @@ class ImageReaderUI(QObject):
self._ui_view.findChild(QObject, "Base_Height").setProperty("text", str(self.base_height))
self._ui_view.findChild(QObject, "Peak_Height").setProperty("text", str(self.peak_height))
+ self._ui_view.findChild(QObject, "Transmittance").setProperty("text", str(self.transmittance_1mm))
self._ui_view.findChild(QObject, "Smoothing").setProperty("value", self.smoothing)
def _createConfigUI(self):
@@ -144,3 +147,11 @@ class ImageReaderUI(QObject):
@pyqtSlot(int)
def onImageColorInvertChanged(self, value):
self.lighter_is_higher = (value == 1)
+
+ @pyqtSlot(int)
+ def onColorModelChanged(self, value):
+ self.use_transparency_model = (value == 0)
+
+ @pyqtSlot(int)
+ def onTransmittanceChanged(self, value):
+ self.transmittance_1mm = value
diff --git a/plugins/PreviewStage/PreviewMain.qml b/plugins/PreviewStage/PreviewMain.qml
index 4ef10e5dbb..2926f0d012 100644
--- a/plugins/PreviewStage/PreviewMain.qml
+++ b/plugins/PreviewStage/PreviewMain.qml
@@ -12,14 +12,18 @@ import Cura 1.0 as Cura
Item
{
+ // An Item whose bounds are guaranteed to be safe for overlays to be placed.
+ // Defaults to parent, ie. the entire available area
+ property var safeArea: parent
+
// Subtract the actionPanel from the safe area. This way the view won't draw interface elements under/over it
- Item {
- id: safeArea
- visible: false
- anchors.left: parent.left
- anchors.right: actionPanelWidget.left
- anchors.top: parent.top
- anchors.bottom: actionPanelWidget.top
+ Item
+ {
+ id: childSafeArea
+ x: safeArea.x - parent.x
+ y: safeArea.y - parent.y
+ width: actionPanelWidget.x - x
+ height: actionPanelWidget.y - y
}
Loader
@@ -29,9 +33,10 @@ Item
source: UM.Controller.activeView != null && UM.Controller.activeView.mainComponent != null ? UM.Controller.activeView.mainComponent : ""
- onLoaded: {
+ onLoaded:
+ {
if (previewMain.item.safeArea !== undefined){
- previewMain.item.safeArea = Qt.binding(function() { return safeArea });
+ previewMain.item.safeArea = Qt.binding(function() { return childSafeArea });
}
}
}
diff --git a/plugins/SimulationView/PathSlider.qml b/plugins/SimulationView/PathSlider.qml
index c7a43c6407..facdbb6a53 100644
--- a/plugins/SimulationView/PathSlider.qml
+++ b/plugins/SimulationView/PathSlider.qml
@@ -56,6 +56,11 @@ Item
return Math.min(Math.max(value, sliderRoot.minimumValue), sliderRoot.maximumValue)
}
+ onWidthChanged : {
+ // After a width change, the pixel-position of the handle is out of sync with the property value
+ setHandleValue(handleValue)
+ }
+
// slider track
Rectangle
{
diff --git a/plugins/SimulationView/SimulationViewMainComponent.qml b/plugins/SimulationView/SimulationViewMainComponent.qml
index 8d32e50654..bfd8799673 100644
--- a/plugins/SimulationView/SimulationViewMainComponent.qml
+++ b/plugins/SimulationView/SimulationViewMainComponent.qml
@@ -18,7 +18,10 @@ Item
property bool isSimulationPlaying: false
- readonly property var layerSliderSafeYMax: safeArea.y + safeArea.height
+ readonly property real layerSliderSafeYMin: safeArea.y
+ readonly property real layerSliderSafeYMax: safeArea.y + safeArea.height
+ readonly property real pathSliderSafeXMin: safeArea.x + playButton.width
+ readonly property real pathSliderSafeXMax: safeArea.x + safeArea.width
visible: UM.SimulationView.layerActivity && CuraApplication.platformActivity
@@ -26,13 +29,21 @@ Item
PathSlider
{
id: pathSlider
+
+ readonly property real preferredWidth: UM.Theme.getSize("slider_layerview_size").height // not a typo, should be as long as layerview slider
+ readonly property real margin: UM.Theme.getSize("default_margin").width
+ readonly property real pathSliderSafeWidth: pathSliderSafeXMax - pathSliderSafeXMin
+
height: UM.Theme.getSize("slider_handle").width
- width: UM.Theme.getSize("slider_layerview_size").height
+ width: preferredWidth + margin * 2 < pathSliderSafeWidth ? preferredWidth : pathSliderSafeWidth - margin * 2
+
anchors.bottom: parent.bottom
- anchors.bottomMargin: UM.Theme.getSize("default_margin").height
+ anchors.bottomMargin: margin
anchors.horizontalCenter: parent.horizontalCenter
+ anchors.horizontalCenterOffset: -(parent.width - pathSliderSafeXMax - pathSliderSafeXMin) / 2 // center between parent top and layerSliderSafeYMax
+
visible: !UM.SimulationView.compatibilityMode
@@ -184,16 +195,18 @@ Item
{
property var preferredHeight: UM.Theme.getSize("slider_layerview_size").height
property double heightMargin: UM.Theme.getSize("default_margin").height * 3 // extra margin to accomodate layer number tooltips
+ property double layerSliderSafeHeight: layerSliderSafeYMax - layerSliderSafeYMin
+
id: layerSlider
width: UM.Theme.getSize("slider_handle").width
- height: preferredHeight + heightMargin * 2 < layerSliderSafeYMax ? preferredHeight : layerSliderSafeYMax - heightMargin * 2
+ height: preferredHeight + heightMargin * 2 < layerSliderSafeHeight ? preferredHeight : layerSliderSafeHeight - heightMargin * 2
anchors
{
right: parent.right
verticalCenter: parent.verticalCenter
- verticalCenterOffset: -(parent.height - layerSliderSafeYMax) / 2 // center between parent top and layerSliderSafeYMax
+ verticalCenterOffset: -(parent.height - layerSliderSafeYMax - layerSliderSafeYMin) / 2 // center between parent top and layerSliderSafeYMax
rightMargin: UM.Theme.getSize("default_margin").width
bottomMargin: heightMargin
topMargin: heightMargin
diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json
index 7348c14a2a..efdc7cca0a 100644
--- a/resources/definitions/ultimaker_s3.def.json
+++ b/resources/definitions/ultimaker_s3.def.json
@@ -67,8 +67,6 @@
"extruder_prime_pos_abs": { "default_value": true },
"machine_start_gcode": { "default_value": "" },
"machine_end_gcode": { "default_value": "" },
- "prime_tower_position_x": { "value": "345" },
- "prime_tower_position_y": { "value": "222.5" },
"prime_blob_enable": { "enabled": true, "default_value": false },
"speed_travel":
diff --git a/resources/extruders/ultimaker_s3_extruder_right.def.json b/resources/extruders/ultimaker_s3_extruder_right.def.json
index 6771e1c0a8..7199710327 100644
--- a/resources/extruders/ultimaker_s3_extruder_right.def.json
+++ b/resources/extruders/ultimaker_s3_extruder_right.def.json
@@ -22,7 +22,7 @@
"machine_extruder_end_pos_x": { "default_value": 180 },
"machine_extruder_end_pos_y": { "default_value": 180 },
"machine_nozzle_head_distance": { "default_value": 4.2 },
- "extruder_prime_pos_x": { "default_value": 180 },
+ "extruder_prime_pos_x": { "value": "machine_width + 3" },
"extruder_prime_pos_y": { "default_value": 6 },
"extruder_prime_pos_z": { "default_value": 2 }
}
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg
new file mode 100644
index 0000000000..92d91840b5
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Quick
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = quick
+quality_type = draft
+material = generic_abs
+variant = AA 0.4
+
+[values]
+speed_infill = =speed_print
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+speed_layer_0 = 20
+top_bottom_thickness = =wall_thickness
+wall_thickness = =line_width * 2
+fill_perimeter_gaps = nowhere
+infill_sparse_density = 15
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+wall_line_width_x = =line_width
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
new file mode 100644
index 0000000000..b3d58c0df9
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Accurate
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = engineering
+quality_type = fast
+material = generic_abs
+variant = AA 0.4
+
+[values]
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+speed_print = 30
+speed_infill = =speed_print
+speed_layer_0 = 20
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+top_bottom_thickness = =wall_thickness
+wall_line_width_x = =line_width
+wall_thickness = =line_width * 3
+xy_offset = =- layer_height * 0.2
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg
new file mode 100644
index 0000000000..35d0d86ab3
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = fast
+intent_category = visual
+material = generic_abs
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg
new file mode 100644
index 0000000000..2b656dbc35
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = high
+intent_category = visual
+material = generic_abs
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
new file mode 100644
index 0000000000..c85b3fce0e
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Accurate
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = engineering
+quality_type = normal
+material = generic_abs
+variant = AA 0.4
+
+[values]
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+speed_print = 30
+speed_infill = =speed_print
+speed_layer_0 = 20
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+top_bottom_thickness = =wall_thickness
+wall_line_width_x = =line_width
+wall_thickness = =line_width * 3
+xy_offset = =- layer_height * 0.2
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg
new file mode 100644
index 0000000000..aff1d9d9f0
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = normal
+intent_category = visual
+material = generic_abs
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg
new file mode 100644
index 0000000000..1d990b83c0
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Quick
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = quick
+quality_type = draft
+material = generic_pla
+variant = AA 0.4
+
+[values]
+speed_infill = =speed_print
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+speed_layer_0 = 20
+top_bottom_thickness = =wall_thickness
+wall_thickness = =line_width * 2
+fill_perimeter_gaps = nowhere
+infill_sparse_density = 15
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+wall_line_width_x = =line_width
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
new file mode 100644
index 0000000000..1f38e12c42
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Accurate
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = engineering
+quality_type = fast
+material = generic_pla
+variant = AA 0.4
+
+[values]
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+speed_print = 30
+speed_infill = =speed_print
+speed_layer_0 = 20
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+top_bottom_thickness = =wall_thickness
+wall_line_width_x = =line_width
+wall_thickness = =line_width * 3
+xy_offset = =- layer_height * 0.2
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg
new file mode 100644
index 0000000000..92ea0837fe
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = fast
+intent_category = visual
+material = generic_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg
new file mode 100644
index 0000000000..97c7ab325c
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = high
+intent_category = visual
+material = generic_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
new file mode 100644
index 0000000000..e529ff7656
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Accurate
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = engineering
+quality_type = normal
+material = generic_pla
+variant = AA 0.4
+
+[values]
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+speed_print = 30
+speed_infill = =speed_print
+speed_layer_0 = 20
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+top_bottom_thickness = =wall_thickness
+wall_line_width_x = =line_width
+wall_thickness = =line_width * 3
+xy_offset = =- layer_height * 0.2
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg
new file mode 100644
index 0000000000..e012264294
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = normal
+intent_category = visual
+material = generic_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
new file mode 100644
index 0000000000..020a4bbc99
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Quick
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = quick
+quality_type = draft
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+speed_infill = =speed_print
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+speed_layer_0 = 20
+top_bottom_thickness = =wall_thickness
+wall_thickness = =line_width * 2
+fill_perimeter_gaps = nowhere
+infill_sparse_density = 15
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+wall_line_width_x = =line_width
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
new file mode 100644
index 0000000000..8c6727bdb0
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Accurate
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = engineering
+quality_type = fast
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+speed_print = 30
+speed_infill = =speed_print
+speed_layer_0 = 20
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+top_bottom_thickness = =wall_thickness
+wall_line_width_x = =line_width
+wall_thickness = =line_width * 3
+xy_offset = =- layer_height * 0.2
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg
new file mode 100644
index 0000000000..9debbb6d43
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = fast
+intent_category = visual
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg
new file mode 100644
index 0000000000..a57b040660
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = high
+intent_category = visual
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
new file mode 100644
index 0000000000..dd64f3f185
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
@@ -0,0 +1,34 @@
+[general]
+version = 4
+name = Accurate
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+intent_category = engineering
+quality_type = normal
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+infill_line_width = =line_width
+jerk_print = 30
+jerk_infill = =jerk_print
+jerk_topbottom = =jerk_print
+jerk_wall = =jerk_print
+jerk_wall_0 = =jerk_wall
+jerk_wall_x = =jerk_wall
+jerk_layer_0 = 5
+line_width = =machine_nozzle_size
+speed_print = 30
+speed_infill = =speed_print
+speed_layer_0 = 20
+speed_topbottom = =speed_print
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+speed_wall_x = =speed_wall
+top_bottom_thickness = =wall_thickness
+wall_line_width_x = =line_width
+wall_thickness = =line_width * 3
+xy_offset = =- layer_height * 0.2
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg
new file mode 100644
index 0000000000..0f31bcce25
--- /dev/null
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s3
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = normal
+intent_category = visual
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg
index f627fbf74b..14bb0e0f54 100644
--- a/resources/intent/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg
@@ -6,7 +6,7 @@ definition = ultimaker_s5
[metadata]
setting_version = 10
type = intent
-intent_category = smooth
+intent_category = quick
quality_type = draft
material = generic_abs
variant = AA 0.4
diff --git a/resources/intent/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
index be622d6cfe..be622d6cfe 100644
--- a/resources/intent/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg
new file mode 100644
index 0000000000..0f10b8416b
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = fast
+intent_category = visual
+material = generic_abs
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg
new file mode 100644
index 0000000000..b6ea956563
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = high
+intent_category = visual
+material = generic_abs
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
index 352c26d312..352c26d312 100644
--- a/resources/intent/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg
new file mode 100644
index 0000000000..f26003ca30
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = normal
+intent_category = visual
+material = generic_abs
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg
index 553a68201d..86062ecf19 100644
--- a/resources/intent/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg
@@ -6,7 +6,7 @@ definition = ultimaker_s5
[metadata]
setting_version = 10
type = intent
-intent_category = smooth
+intent_category = quick
quality_type = draft
material = generic_pla
variant = AA 0.4
diff --git a/resources/intent/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
index 0943bb2032..0943bb2032 100644
--- a/resources/intent/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg
new file mode 100644
index 0000000000..b20fdcb791
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = fast
+intent_category = visual
+material = generic_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg
new file mode 100644
index 0000000000..3fc0006b3f
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = high
+intent_category = visual
+material = generic_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
index 053b849aff..053b849aff 100644
--- a/resources/intent/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg
new file mode 100644
index 0000000000..4138f62694
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = normal
+intent_category = visual
+material = generic_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
index 458b283dd8..3a6e19c64c 100644
--- a/resources/intent/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
@@ -6,7 +6,7 @@ definition = ultimaker_s5
[metadata]
setting_version = 10
type = intent
-intent_category = smooth
+intent_category = quick
quality_type = draft
material = generic_tough_pla
variant = AA 0.4
diff --git a/resources/intent/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
index d19ad53fae..d19ad53fae 100644
--- a/resources/intent/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg
new file mode 100644
index 0000000000..3f5d3c566e
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = fast
+intent_category = visual
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg
new file mode 100644
index 0000000000..3b5d9fb3db
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = high
+intent_category = visual
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/intent/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
index 23d8b1e39b..23d8b1e39b 100644
--- a/resources/intent/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg
new file mode 100644
index 0000000000..d71bb76b35
--- /dev/null
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Visual
+definition = ultimaker_s5
+
+[metadata]
+setting_version = 10
+type = intent
+quality_type = normal
+intent_category = visual
+material = generic_tough_pla
+variant = AA 0.4
+
+[values]
+speed_infill = 50
+wall_thickness = =wall_line_width * 3
+top_bottom_thickness = =wall_thickness
diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml
index 828d8854dd..f13f9e0ce9 100644
--- a/resources/qml/Cura.qml
+++ b/resources/qml/Cura.qml
@@ -301,6 +301,15 @@ UM.MainWindow
}
}
+ // A hint for the loaded content view. Overlay items / controls can safely be placed in this area
+ Item {
+ id: mainSafeArea
+ anchors.left: viewOrientationControls.right
+ anchors.right: main.right
+ anchors.top: main.top
+ anchors.bottom: main.bottom
+ }
+
Loader
{
// A stage can control this area. If nothing is set, it will therefore show the 3D view.
@@ -316,6 +325,12 @@ UM.MainWindow
}
source: UM.Controller.activeStage != null ? UM.Controller.activeStage.mainComponent : ""
+
+ onLoaded: {
+ if (main.item.safeArea !== undefined){
+ main.item.safeArea = Qt.binding(function() { return mainSafeArea });
+ }
+ }
}
Loader
diff --git a/resources/qml/Settings/SettingExtruder.qml b/resources/qml/Settings/SettingExtruder.qml
index 7162744ae5..ff57381ddf 100644
--- a/resources/qml/Settings/SettingExtruder.qml
+++ b/resources/qml/Settings/SettingExtruder.qml
@@ -75,7 +75,7 @@ SettingItem
base.setActiveFocusToNextSetting(false)
}
- currentIndex: propertyProvider.properties.value
+ currentIndex: propertyProvider.properties.value !== undefined ? propertyProvider.properties.value : 0
property string color: "#fff"
diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml
index e1b3f5a098..9986c7eaf8 100644
--- a/resources/qml/Settings/SettingItem.qml
+++ b/resources/qml/Settings/SettingItem.qml
@@ -277,6 +277,10 @@ Item
// Observed when loading workspace, probably when SettingItems are removed.
return false
}
+ if(globalPropertyProvider.properties.limit_to_extruder === undefined)
+ {
+ return false
+ }
return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, String(globalPropertyProvider.properties.limit_to_extruder)).indexOf(definition.key) >= 0
}
diff --git a/resources/themes/cura-light/images/logo.svg b/resources/themes/cura-light/images/logo.svg
index 814b157e2a..611840e248 100644
--- a/resources/themes/cura-light/images/logo.svg
+++ b/resources/themes/cura-light/images/logo.svg
@@ -1,37 +1,18 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="82px"
- height="18px"
- viewBox="0 0 82 18"
- version="1.1"
- id="svg12"
- sodipodi:docname="logo2.svg"
- inkscape:version="0.92.3 (2405546, 2018-03-11)">
- <polygon
- fill="#20A6DB"
- points="82 10.3797468 77.8757345 10.3797468 75.7721519 12.4764557 75.7721519 16.6075949 79.9067798 16.6075949 82 14.5108861"
- id="polygon2" />
- <path
- fill="white"
- d="M0,9.32538529 C0,14.168804 3.22511,17.6455696 8.53908129,17.6455696 L16.6075949,17.6455696 L16.6075949,13.294146 L8.53908129,13.294146 C5.8534025,13.2832128 4.53351762,11.4792306 4.53351762,9.32538529 C4.53351762,7.17153994 5.8534025,5.40035747 8.53908129,5.37849102 L16.6075949,5.37849102 L16.6075949,1.03800064 L8.53908129,1.03800064 C3.21363275,1.02706742 0,4.47103333 0,9.32538529 Z"
- id="path4"/>
- <path
- fill="white"
- d="M33.004725,9.78605176 C33.004725,12.2613239 31.20074,13.5835846 29.0468913,13.5835846 C26.8930426,13.5835846 25.1218573,12.2613239 25.1218573,9.78605176 L25.1218573,1.03797468 L20.7594937,1.03797468 L20.7594937,9.78605176 C20.7594937,14.6837056 24.203465,17.6455696 29.0468913,17.6455696 C33.8903176,17.6455696 37.3670886,14.6731275 37.3670886,9.78605176 L37.3670886,1.03797468 L33.004725,1.03797468 L33.004725,9.78605176 L33.004725,9.78605176 Z"
- id="path6"/>
- <path
- fill="white"
- d="M62.1251127,1.03797468 C57.0530042,1.03797468 53.9746835,4.47968021 53.9746835,9.31992005 C53.9746835,14.1601599 57.0530042,17.6346436 62.1251127,17.6346436 L63.9217127,17.6346436 L63.9217127,13.297002 L62.1251127,13.297002 C59.5616713,13.2860759 58.3018603,11.4832778 58.3018603,9.3308461 C58.3018603,7.17841439 59.5616713,5.4083944 62.1251127,5.38654231 L66.2112822,5.38654231 L66.2112822,11.0680879 L66.2112822,13.297002 L66.2112822,17.6455696 L70.5822785,17.6455696 L70.5822785,17.3942705 L70.5822785,13.297002 L70.5822785,5.38654231 L70.5822785,1.80279813 L70.5822785,1.03797468 L62.1251127,1.03797468 Z"
- id="path8"/>
- <path
- fill="white"
- d="M 41.518987,9.13915 V 17.646 h 4.36332 V 9.13915 c 0,-2.1053391 1.273557,-3.8366328 3.86497,-3.8580068 h 3.189432 V 1.038405 h -3.189432 c -5.127454,0 -8.22829,3.3664044 -8.22829,8.100745 z"
- id="path10" />
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="170.6px" height="23.7px" viewBox="0 0 170.6 23.7">
+<g fill="white">
+ <!-- U --> <path d="M16.3,3.1v11.1c0,1.2-0.3,2.3-0.8,3.2s-1.3,1.7-2.3,2.3c-1,0.6-2.3,0.8-3.9,0.8c-2.2,0-3.9-0.6-5.1-1.7s-1.7-2.7-1.7-4.6v-11h3.1v10.7c0,1.4,0.3,2.4,0.9,3.1c0.6,0.6,1.6,1,2.9,1c1.3,0,2.3-0.3,2.9-1c0.6-0.7,0.9-1.7,0.9-3V3.1H16.3z" />
+ <!-- l --> <path d="M22.6,20.3h-3V2h3V20.3z" />
+ <!-- t --> <path d="M30.8,18.1c0.4,0,0.7,0,1.1-0.1c0.4-0.1,0.7-0.2,1-0.3V20c-0.3,0.2-0.7,0.3-1.2,0.4c-0.5,0.1-1,0.1-1.6,0.1c-0.8,0-1.4-0.1-2-0.4s-1.1-0.7-1.4-1.3c-0.4-0.6-0.5-1.5-0.5-2.6V9.5h-1.8V8.2l1.9-1.1l1-2.8h1.9v2.9h3.7v2.3h-3.7v6.7c0,0.6,0.2,1.1,0.5,1.4C29.9,17.9,30.3,18.1,30.8,18.1z" />
+ <!-- i --> <path d="M36.3,2.2c0.4,0,0.8,0.1,1.2,0.3C37.8,2.8,38,3.2,38,3.8c0,0.6-0.2,1-0.5,1.2c-0.3,0.2-0.7,0.4-1.2,0.4c-0.5,0-0.9-0.1-1.2-0.4c-0.3-0.2-0.5-0.7-0.5-1.2c0-0.6,0.2-1,0.5-1.2C35.5,2.3,35.8,2.2,36.3,2.2z M37.8,7.2v13h-3v-13H37.8z" />
+ <!-- m --> <path d="M55.9,7c1.5,0,2.6,0.4,3.3,1.1c0.7,0.8,1.1,2,1.1,3.6v8.5h-3v-7.9c0-1.9-0.7-2.9-2.2-2.9c-1.1,0-1.8,0.3-2.3,1c-0.4,0.7-0.7,1.7-0.7,3v6.8h-3v-7.9c0-1.9-0.7-2.9-2.2-2.9c-1.1,0-1.9,0.4-2.3,1.2c-0.4,0.8-0.6,1.9-0.6,3.3v6.4h-3v-13h2.3L43.7,9h0.2c0.4-0.7,0.9-1.2,1.6-1.5C46.2,7.2,46.9,7,47.7,7c1,0,1.8,0.2,2.5,0.5c0.7,0.3,1.2,0.8,1.5,1.5h0.2c0.4-0.7,1-1.2,1.7-1.5C54.3,7.2,55.1,7,55.9,7z" />
+ <!-- a --> <path d="M68.6,7c1.7,0,3,0.4,3.8,1.1c0.9,0.7,1.3,1.9,1.3,3.4v8.7h-2.1L71,18.5h-0.1c-0.6,0.7-1.2,1.2-1.8,1.5c-0.6,0.3-1.5,0.5-2.5,0.5c-1.2,0-2.1-0.3-2.9-1c-0.8-0.7-1.2-1.7-1.2-3c0-1.3,0.5-2.4,1.5-3c1-0.7,2.5-1,4.5-1.1l2.3-0.1v-0.6c0-0.8-0.2-1.4-0.6-1.8c-0.4-0.4-1-0.5-1.7-0.5c-0.7,0-1.3,0.1-1.9,0.3c-0.6,0.2-1.2,0.4-1.8,0.7l-1-2.1c0.6-0.3,1.4-0.6,2.2-0.8S67.7,7,68.6,7z M70.7,14.1l-1.6,0c-1.3,0-2.2,0.3-2.8,0.7c-0.5,0.4-0.8,1-0.8,1.6c0,0.6,0.2,1.1,0.5,1.3c0.4,0.3,0.8,0.4,1.4,0.4c0.9,0,1.6-0.3,2.2-0.8c0.6-0.5,0.9-1.3,0.9-2.2V14.1z" />
+ <!-- k --> <path d="M79.8,2v8.7c0,0.4,0,0.8,0,1.3c0,0.5-0.1,0.9-0.1,1.3h0.1c0.2-0.3,0.4-0.6,0.7-1s0.5-0.7,0.8-1l3.8-4.1h3.4l-5.2,5.6l5.5,7.4h-3.5l-4-5.6l-1.5,1.2v4.3h-3V2H79.8z" />
+ <!-- e --> <path d="M95.4,7c1.7,0,3.1,0.5,4.1,1.6c1,1,1.5,2.5,1.5,4.3v1.5h-8.6c0,1.2,0.4,2.1,1,2.7c0.6,0.6,1.5,1,2.6,1c0.8,0,1.6-0.1,2.3-0.3s1.4-0.4,2.1-0.7v2.4c-0.6,0.3-1.3,0.5-2,0.7c-0.7,0.1-1.5,0.2-2.5,0.2c-1.3,0-2.4-0.2-3.4-0.7c-1-0.5-1.7-1.2-2.3-2.2c-0.6-1-0.8-2.2-0.8-3.7c0-2.2,0.5-3.9,1.6-5.1C92.1,7.6,93.6,7,95.4,7z M95.4,9.2c-0.8,0-1.5,0.3-2,0.8c-0.5,0.5-0.8,1.3-0.9,2.3h5.6c0-0.9-0.2-1.6-0.7-2.2C97,9.5,96.3,9.2,95.4,9.2z" />
+ <!-- r --> <path d="M110.2,7c0.2,0,0.4,0,0.7,0c0.3,0,0.5,0.1,0.6,0.1l-0.3,2.8c-0.2,0-0.4-0.1-0.6-0.1c-0.2,0-0.4,0-0.6,0c-0.6,0-1.2,0.1-1.8,0.4s-1,0.7-1.4,1.2c-0.3,0.5-0.5,1.2-0.5,2.1v6.7h-3v-13h2.3l0.4,2.3h0.1c0.4-0.7,0.9-1.3,1.6-1.8C108.6,7.3,109.3,7,110.2,7z" />
+ <!-- C --> <path d="M127.2,4.1c-1.4,0-2.6,0.3-3.6,0.9c-1,0.6-1.8,1.5-2.3,2.6s-0.8,2.4-0.8,3.9c0,1.5,0.2,2.9,0.7,4c0.5,1.1,1.2,2,2.2,2.6s2.2,0.9,3.6,0.9c0.8,0,1.6-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.5v1.2c-0.6,0.2-1.2,0.4-2,0.5s-1.5,0.2-2.5,0.2c-1.7,0-3.2-0.4-4.3-1.1c-1.2-0.7-2-1.8-2.6-3.1s-0.9-2.9-0.9-4.7c0-1.7,0.3-3.2,1-4.5c0.6-1.3,1.6-2.4,2.8-3.1s2.7-1.1,4.4-1.1c1.7,0,3.2,0.3,4.5,1L131.2,5C129.9,4.4,128.6,4.1,127.2,4.1z" />
+ <!-- u --> <path d="M144.6,7.5v12.8h-1.1l-0.2-2.2h-0.1c-0.4,0.7-0.9,1.3-1.6,1.7s-1.6,0.7-2.7,0.7c-3,0-4.5-1.6-4.5-4.7V7.5h1.4v8.3c0,1.2,0.3,2.1,0.8,2.7s1.4,0.9,2.4,0.9c2.8,0,4.2-1.6,4.2-4.9v-7H144.6z" />
+ <!-- r --> <path d="M154.1,7.3c0.7,0,1.2,0.1,1.7,0.2l-0.2,1.2c-0.3-0.1-0.5-0.1-0.8-0.1s-0.5,0-0.8,0c-1.2,0-2.1,0.4-2.8,1.3c-0.7,0.9-1,2-1,3.4v7h-1.4V7.5h1.2l0.1,2.4h0.1c0.3-0.7,0.8-1.3,1.5-1.8S153.1,7.3,154.1,7.3z" />
+ <!-- a --> <path d="M162.4,7.3c1.4,0,2.5,0.4,3.2,1.1s1.1,1.8,1.1,3.3v8.6h-1l-0.3-2.2h0c-0.4,0.7-1,1.3-1.7,1.7c-0.7,0.4-1.6,0.7-2.8,0.7c-1.2,0-2.2-0.3-2.9-0.9s-1.1-1.5-1.1-2.7c0-1.3,0.5-2.2,1.5-2.9c1-0.7,2.5-1,4.5-1.1l2.3-0.1v-0.9c0-1.3-0.3-2.2-0.8-2.7s-1.2-0.8-2.2-0.8c-0.7,0-1.3,0.1-1.9,0.3c-0.6,0.2-1.2,0.4-1.8,0.7l-0.4-1.1c0.6-0.3,1.2-0.6,2-0.7C160.8,7.4,161.6,7.3,162.4,7.3z M165.3,13.8l-2.2,0.1c-1.6,0.1-2.8,0.3-3.6,0.8c-0.8,0.5-1.2,1.2-1.2,2.2c0,0.8,0.2,1.4,0.7,1.8c0.5,0.4,1.2,0.6,2,0.6c1.3,0,2.4-0.4,3.1-1.1c0.7-0.8,1.1-1.8,1.1-3.2V13.8z" />
+</g>
</svg>
diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json
index 0d9f624805..055f176b33 100644
--- a/resources/themes/cura-light/theme.json
+++ b/resources/themes/cura-light/theme.json
@@ -483,7 +483,7 @@
"default_lining": [0.08, 0.08],
"default_arrow": [0.8, 0.8],
- "logo": [8, 1.75],
+ "logo": [16, 3.5],
"wide_margin": [2.0, 2.0],
"thick_margin": [1.71, 1.43],