fix merge conflicts

This commit is contained in:
ChrisTerBeke 2017-10-10 09:43:16 +02:00
commit 0b5fac28b9
23 changed files with 568 additions and 21 deletions

2
.gitignore vendored
View file

@ -57,4 +57,6 @@ cmake_install.cmake
#Debug
*.gcode
run.sh
.scannerwork/
CuraEngine

View file

@ -266,7 +266,7 @@ class ConvexHullDecorator(SceneNodeDecorator):
if self._getSettingProperty("mold_enabled", "value"):
mold_width = self._getSettingProperty("mold_width", "value")
hull_offset = horizontal_expansion + mold_width
if hull_offset != 0:
if hull_offset > 0: #TODO: Implement Minkowski subtraction for if the offset < 0.
expansion_polygon = Polygon(numpy.array([
[-hull_offset, -hull_offset],
[-hull_offset, hull_offset],

View file

@ -304,7 +304,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
num_visible_settings = 0
try:
temp_preferences = Preferences()
temp_preferences.readFromFile(io.TextIOWrapper(archive.open("Cura/preferences.cfg"))) # We need to wrap it, else the archive parser breaks.
serialized = archive.open("Cura/preferences.cfg").read().decode("utf-8")
temp_preferences.deserialize(serialized)
visible_settings_string = temp_preferences.getValue("general/visible_settings")
if visible_settings_string is not None:
@ -407,7 +408,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# Create a shadow copy of the preferences (we don't want all of the preferences, but we do want to re-use its
# parsing code.
temp_preferences = Preferences()
temp_preferences.readFromFile(io.TextIOWrapper(archive.open("Cura/preferences.cfg"))) # We need to wrap it, else the archive parser breaks.
serialized = archive.open("Cura/preferences.cfg").read().decode("utf-8")
temp_preferences.deserialize(serialized)
# Copy a number of settings from the temp preferences to the global
global_preferences = Preferences.getInstance()

View file

@ -285,6 +285,14 @@ class WorkspaceDialog(QObject):
except:
pass
@pyqtSlot(bool)
def _onVisibilityChanged(self, visible):
if not visible:
try:
self._lock.release()
except:
pass
@pyqtSlot()
def onOkButtonClicked(self):
self._view.hide()

View file

@ -364,7 +364,7 @@ UM.Dialog
Label
{
id: warningLabel
text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the buildplate")
text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.")
wrapMode: Text.Wrap
}
}

View file

@ -1,7 +1,7 @@
// Copyright (c) 2017 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2
import QtQuick 2.4
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.1
@ -379,4 +379,9 @@ Item
}
}
}
FontMetrics {
id: fontMetrics
font: UM.Theme.getFont("default")
}
}

View file

@ -217,7 +217,7 @@ UM.Dialog
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
text: licenseDialog.pluginName + catalog.i18nc("@label", " plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?")
text: licenseDialog.pluginName + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?")
wrapMode: Text.Wrap
}

View file

@ -1,15 +1,18 @@
# Copyright (c) 2015 Ultimaker B.V.
# Uranium is released under the terms of the LGPLv3 or higher.
# Copyright (c) 2017 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
# Python built-ins
import threading
import time
from UM.Message import Message
from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin
# Uranium/Messaging
from UM.Logger import Logger
# Uranium/IO
from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin
from . import RemovableDriveOutputDevice
from UM.Logger import Logger
# Uranium/l18n
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")

View file

@ -378,7 +378,7 @@ Cura.MachineAction
},
Button {
id: btnOk
text: catalog.i18nc("@action:button", "Ok")
text: catalog.i18nc("@action:button", "OK")
onClicked:
{
manualPrinterDialog.accept()

View file

@ -26,10 +26,11 @@ import gzip
from time import time
i18n_catalog = i18nCatalog("cura")
from time import gmtime
from enum import IntEnum
i18n_catalog = i18nCatalog("cura")
class AuthState(IntEnum):
NotAuthenticated = 1
AuthenticationRequested = 2
@ -1138,6 +1139,11 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
else:
Logger.log("w", "Unable to save authentication for id %s and key %s", self._authentication_id, self._getSafeAuthKey())
# Request 'system' printer data once, when we know we have authentication, so we know we can set the system time.
url = QUrl("http://" + self._address + self._api_prefix + "system")
system_data_request = QNetworkRequest(url)
self._manager.get(system_data_request)
else: # Got a response that we didn't expect, so something went wrong.
Logger.log("e", "While trying to authenticate, we got an unexpected response: %s", reply.attribute(QNetworkRequest.HttpStatusCodeAttribute))
self.setAuthenticationState(AuthState.NotAuthenticated)
@ -1157,6 +1163,27 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
else:
pass
elif self._api_prefix + "system" in reply_url:
# Check if the printer has time, and if this has a valid system time.
try:
data = json.loads(bytes(reply.readAll()).decode("utf-8"))
except json.decoder.JSONDecodeError:
Logger.log("w", "Received an invalid authentication request reply from printer: Not valid JSON.")
return
if "time" in data and "utc" in data["time"]:
try:
printer_time = gmtime(float(data["time"]["utc"]))
Logger.log("i", "Printer has system time of: %s", str(printer_time))
except ValueError:
printer_time = None
if printer_time is not None and printer_time.tm_year < 1990:
# The system time is not valid, sync our current system time to it, so we at least have some reasonable time in the printer.
Logger.log("w", "Printer system time invalid, setting system time")
url = QUrl("http://" + self._address + self._api_prefix + "system/time/utc")
put_request = QNetworkRequest(url)
put_request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
self._manager.put(put_request, str(time()).encode())
elif reply.operation() == QNetworkAccessManager.PostOperation:
if "/auth/request" in reply_url:
# We got a response to requesting authentication.

View file

@ -31,6 +31,7 @@ class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin):
self._zero_conf = None
self._browser = None
self._printers = {}
self._cluster_printers_seen = {} # do not forget a cluster printer when we have seen one, to not 'downgrade' from Connect to legacy printer
self._api_version = "1"
self._api_prefix = "/api/v" + self._api_version + "/"
@ -218,12 +219,16 @@ class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin):
## Because the model needs to be created in the same thread as the QMLEngine, we use a signal.
def addPrinter(self, name, address, properties, force_cluster=False):
cluster_size = int(properties.get(b"cluster_size", -1))
if force_cluster or cluster_size >= 0:
was_cluster_before = name in self._cluster_printers_seen
if was_cluster_before:
Logger.log("d", "Printer [%s] had Cura Connect before, so assume it's still equipped with Cura Connect.", name)
if force_cluster or cluster_size >= 0 or was_cluster_before:
printer = NetworkClusterPrinterOutputDevice.NetworkClusterPrinterOutputDevice(
name, address, properties, self._api_prefix, self._plugin_path)
else:
printer = NetworkPrinterOutputDevice.NetworkPrinterOutputDevice(name, address, properties, self._api_prefix)
self._printers[printer.getKey()] = printer
self._cluster_printers_seen[printer.getKey()] = name # Cluster printers that may be temporary unreachable or is rebooted keep being stored here
global_container_stack = Application.getInstance().getGlobalContainerStack()
if global_container_stack and printer.getKey() == global_container_stack.getMetaDataEntry("um_network_key"):
if printer.getKey() not in self._old_printers: # Was the printer already connected, but a re-scan forced?

View file

@ -119,7 +119,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
self._sendCommand("G0 Y%s F%s" % (z, speed))
def _homeHead(self):
self._sendCommand("G28")
self._sendCommand("G28 X")
self._sendCommand("G28 Y")
def _homeBed(self):
self._sendCommand("G28 Z")

View file

@ -1405,6 +1405,28 @@
"limit_to_extruder": "infill_extruder_nr",
"settable_per_mesh": true
},
"infill_offset_x":
{
"label": "Infill X Offset",
"description": "The infill pattern is offset this distance along the X axis.",
"unit": "mm",
"type": "float",
"default_value": 0,
"enabled": "infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'",
"limit_to_extruder": "infill_extruder_nr",
"settable_per_mesh": true
},
"infill_offset_y":
{
"label": "Infill Y Offset",
"description": "The infill pattern is offset this distance along the Y axis.",
"unit": "mm",
"type": "float",
"default_value": 0,
"enabled": "infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'",
"limit_to_extruder": "infill_extruder_nr",
"settable_per_mesh": true
},
"sub_div_rad_add":
{
"label": "Cubic Subdivision Shell",
@ -3986,7 +4008,7 @@
"skirt_gap":
{
"label": "Skirt Distance",
"description": "The horizontal distance between the skirt and the first layer of the print.\nThis is the minimum distance, multiple skirt lines will extend outwards from this distance.",
"description": "The horizontal distance between the skirt and the first layer of the print.\nThis is the minimum distance. Multiple skirt lines will extend outwards from this distance.",
"unit": "mm",
"type": "float",
"default_value": 3,

View file

@ -0,0 +1,95 @@
{
"id": "raise3D_N2_dual",
"version": 2,
"name": "Raise3D N2 Dual",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Raise3D",
"manufacturer": "Raise3D",
"category": "Other",
"file_formats": "text/x-gcode",
"has_materials": true,
"machine_extruder_trains":
{
"0": "raise3D_N2_dual_extruder_0",
"1": "raise3D_N2_dual_extruder_1"
}
},
"overrides": {
"machine_name": { "default_value": "Raise3D N2 Dual" },
"machine_width": {
"default_value": 305
},
"machine_height": {
"default_value": 305
},
"machine_depth": {
"default_value": 305
},
"machine_center_is_zero": {
"default_value": false
},
"machine_heated_bed": {
"default_value": true
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": {
"default_value": 6
},
"machine_nozzle_cool_down_speed": {
"default_value": 4
},
"machine_head_with_fans_polygon":
{
"default_value": [
[ -75, 35 ],
[ -75, -18 ],
[ 18, 35 ],
[ 18, -18 ]
]
},
"machine_min_cool_heat_time_window": {
"default_value": 3600
},
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
},
"retraction_amount": {
"default_value": 1.0
},
"adhesion_type": {
"default_value": "skirt"
},
"gantry_height": {
"default_value": 55
},
"machine_use_extruder_offset_to_offset_coords": {
"default_value": true
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\nT1; left tool\n; set extruder steps per mm\nM92 E140\nT0; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\nT1; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n"
},
"machine_end_gcode": {
"default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84"
},
"machine_extruder_count": {
"default_value": 2
},
"prime_tower_position_x": {
"default_value": 195
},
"prime_tower_position_y": {
"default_value": 149
}
}
}

View file

@ -0,0 +1,95 @@
{
"id": "raise3D_N2_plus_dual",
"version": 2,
"name": "Raise3D N2 Plus Dual",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Raise3D",
"manufacturer": "Raise3D",
"category": "Other",
"file_formats": "text/x-gcode",
"has_materials": true,
"machine_extruder_trains":
{
"0": "raise3D_N2_plus_dual_extruder_0",
"1": "raise3D_N2_plus_dual_extruder_1"
}
},
"overrides": {
"machine_name": { "default_value": "Raise3D N2 Plus Dual" },
"machine_width": {
"default_value": 305
},
"machine_height": {
"default_value": 610
},
"machine_depth": {
"default_value": 305
},
"machine_center_is_zero": {
"default_value": false
},
"machine_heated_bed": {
"default_value": true
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": {
"default_value": 6
},
"machine_nozzle_cool_down_speed": {
"default_value": 4
},
"machine_head_with_fans_polygon":
{
"default_value": [
[ -75, 35 ],
[ -75, -18 ],
[ 18, 35 ],
[ 18, -18 ]
]
},
"machine_min_cool_heat_time_window": {
"default_value": 3600
},
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
},
"retraction_amount": {
"default_value": 1.0
},
"adhesion_type": {
"default_value": "skirt"
},
"gantry_height": {
"default_value": 55
},
"machine_use_extruder_offset_to_offset_coords": {
"default_value": true
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\nT1; left tool\n; set extruder steps per mm\nM92 E140\nT0; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\nT1; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n"
},
"machine_end_gcode": {
"default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84"
},
"machine_extruder_count": {
"default_value": 2
},
"prime_tower_position_x": {
"default_value": 195
},
"prime_tower_position_y": {
"default_value": 149
}
}
}

View file

@ -0,0 +1,87 @@
{
"id": "raise3D_N2_plus_single",
"version": 2,
"name": "Raise3D N2 Plus Single",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Raise3D",
"manufacturer": "Raise3D",
"category": "Other",
"file_formats": "text/x-gcode",
"has_materials": true
},
"overrides": {
"machine_name": { "default_value": "Raise3D N2 Plus Single" },
"machine_width": {
"default_value": 305
},
"machine_height": {
"default_value": 610
},
"machine_depth": {
"default_value": 305
},
"machine_center_is_zero": {
"default_value": false
},
"machine_heated_bed": {
"default_value": true
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": {
"default_value": 6
},
"machine_nozzle_cool_down_speed": {
"default_value": 4
},
"machine_head_with_fans_polygon":
{
"default_value": [
[ -75, 35 ],
[ -75, -18 ],
[ 18, 35 ],
[ 18, -18 ]
]
},
"machine_min_cool_heat_time_window": {
"default_value": 3600
},
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
},
"retraction_amount": {
"default_value": 1.0
},
"adhesion_type": {
"default_value": "skirt"
},
"gantry_height": {
"default_value": 55
},
"machine_use_extruder_offset_to_offset_coords": {
"default_value": true
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n"
},
"machine_end_gcode": {
"default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84"
},
"prime_tower_position_x": {
"default_value": 195
},
"prime_tower_position_y": {
"default_value": 149
}
}
}

View file

@ -0,0 +1,87 @@
{
"id": "raise3D_N2_single",
"version": 2,
"name": "Raise3D N2 Single",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Raise3D",
"manufacturer": "Raise3D",
"category": "Other",
"file_formats": "text/x-gcode",
"has_materials": true
},
"overrides": {
"machine_name": { "default_value": "Raise3D N2 Single" },
"machine_width": {
"default_value": 305
},
"machine_height": {
"default_value": 305
},
"machine_depth": {
"default_value": 305
},
"machine_center_is_zero": {
"default_value": false
},
"machine_heated_bed": {
"default_value": true
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": {
"default_value": 6
},
"machine_nozzle_cool_down_speed": {
"default_value": 4
},
"machine_head_with_fans_polygon":
{
"default_value": [
[ -75, 35 ],
[ -75, -18 ],
[ 18, 35 ],
[ 18, -18 ]
]
},
"machine_min_cool_heat_time_window": {
"default_value": 3600
},
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
},
"retraction_amount": {
"default_value": 1.0
},
"adhesion_type": {
"default_value": "skirt"
},
"gantry_height": {
"default_value": 55
},
"machine_use_extruder_offset_to_offset_coords": {
"default_value": true
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n"
},
"machine_end_gcode": {
"default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84"
},
"prime_tower_position_x": {
"default_value": 195
},
"prime_tower_position_y": {
"default_value": 149
}
}
}

View file

@ -0,0 +1,26 @@
{
"id": "raise3D_N2_dual_extruder_0",
"version": 2,
"name": "Left Extruder",
"inherits": "fdmextruder",
"metadata": {
"machine": "raise3D_N2_dual",
"position": "0"
},
"overrides": {
"extruder_nr": {
"default_value": 0,
"maximum_value": "1"
},
"machine_nozzle_offset_x": { "default_value": 0 },
"machine_nozzle_offset_y": { "default_value": 0 },
"machine_extruder_start_pos_abs": { "default_value": true },
"machine_extruder_start_pos_x": { "value": "prime_tower_position_x" },
"machine_extruder_start_pos_y": { "value": "prime_tower_position_y" },
"machine_extruder_end_pos_abs": { "default_value": true },
"machine_extruder_end_pos_x": { "value": "prime_tower_position_x" },
"machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }
}
}

View file

@ -0,0 +1,28 @@
{
"id": "raise3D_N2_dual_extruder_1",
"version": 2,
"name": "Right Extruder",
"inherits": "fdmextruder",
"metadata": {
"machine": "raise3D_N2_dual",
"position": "1"
},
"overrides": {
"extruder_nr": {
"default_value": 1,
"maximum_value": "1"
},
"machine_nozzle_offset_x": { "default_value": 24.8 },
"machine_nozzle_offset_y": { "default_value": 0.6 },
"machine_extruder_start_pos_abs": { "default_value": true },
"machine_extruder_start_pos_x": { "value": "prime_tower_position_x" },
"machine_extruder_start_pos_y": { "value": "prime_tower_position_y" },
"machine_extruder_end_pos_abs": { "default_value": true },
"machine_extruder_end_pos_x": { "value": "prime_tower_position_x" },
"machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }
}
}

View file

@ -0,0 +1,26 @@
{
"id": "raise3D_N2_plus_dual_extruder_0",
"version": 2,
"name": "Left Extruder",
"inherits": "fdmextruder",
"metadata": {
"machine": "raise3D_N2_plus_dual",
"position": "0"
},
"overrides": {
"extruder_nr": {
"default_value": 0,
"maximum_value": "1"
},
"machine_nozzle_offset_x": { "default_value": 0 },
"machine_nozzle_offset_y": { "default_value": 0 },
"machine_extruder_start_pos_abs": { "default_value": true },
"machine_extruder_start_pos_x": { "value": "prime_tower_position_x" },
"machine_extruder_start_pos_y": { "value": "prime_tower_position_y" },
"machine_extruder_end_pos_abs": { "default_value": true },
"machine_extruder_end_pos_x": { "value": "prime_tower_position_x" },
"machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }
}
}

View file

@ -0,0 +1,28 @@
{
"id": "raise3D_N2_plus_dual_extruder_1",
"version": 2,
"name": "Right Extruder",
"inherits": "fdmextruder",
"metadata": {
"machine": "raise3D_N2_plus_dual",
"position": "1"
},
"overrides": {
"extruder_nr": {
"default_value": 1,
"maximum_value": "1"
},
"machine_nozzle_offset_x": { "default_value": 24.8 },
"machine_nozzle_offset_y": { "default_value": 0.6 },
"machine_extruder_start_pos_abs": { "default_value": true },
"machine_extruder_start_pos_x": { "value": "prime_tower_position_x" },
"machine_extruder_start_pos_y": { "value": "prime_tower_position_y" },
"machine_extruder_end_pos_abs": { "default_value": true },
"machine_extruder_end_pos_x": { "value": "prime_tower_position_x" },
"machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }
}
}

View file

@ -324,7 +324,7 @@ Rectangle
anchors.bottom: timeSpecDescription.top
font: UM.Theme.getFont("large")
color: UM.Theme.getColor("text_subtext")
text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short)
text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label Hours and minutes", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short)
MouseArea
{
@ -407,12 +407,12 @@ Rectangle
}
if(someCostsKnown)
{
return catalog.i18nc("@label", "%1m / ~ %2g / ~ %4 %3").arg(lengths.join(" + "))
return catalog.i18nc("@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost", "%1m / ~ %2g / ~ %4 %3").arg(lengths.join(" + "))
.arg(weights.join(" + ")).arg(costs.join(" + ")).arg(UM.Preferences.getValue("cura/currency"));
}
else
{
return catalog.i18nc("@label", "%1m / ~ %2g").arg(lengths.join(" + ")).arg(weights.join(" + "));
return catalog.i18nc("@label Print estimates: m for meters, g for grams", "%1m / ~ %2g").arg(lengths.join(" + ")).arg(weights.join(" + "));
}
}
}