From 93a36a8503ab23b5215d228eb9981bf011398ed8 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 22 May 2017 22:12:36 +0200 Subject: [PATCH 1/6] Add Type A Machines series 1 2014 definition and mesh --- resources/definitions/tam.def.json | 68 +++++++++++++++++++++++++++++ resources/meshes/tam_series1.stl | Bin 0 -> 238284 bytes 2 files changed, 68 insertions(+) create mode 100644 resources/definitions/tam.def.json create mode 100644 resources/meshes/tam_series1.stl diff --git a/resources/definitions/tam.def.json b/resources/definitions/tam.def.json new file mode 100644 index 0000000000..6d085763ce --- /dev/null +++ b/resources/definitions/tam.def.json @@ -0,0 +1,68 @@ +{ + "id": "typeamachines", + "version": 2, + "name": "Type A Machines Series 1 2014", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "typeamachines", + "manufacturer": "typeamachines", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "tam_series1.stl", + "platform_offset": [-580.0, -6.23, 253.5], + "has_materials": false, + "supported_actions":["UpgradeFirmware"] + }, + "overrides": { + "machine_name": { "default_value": "TypeAMachines" }, + + "layer_height": { "default_value": 0.2 }, + "layer_height_0": { "default_value": 0.3 }, + "infill_sparse_density": { "default_value": 5 }, + "wall_thickness": { "default_value": 1 }, + "top_bottom_thickness": { "default_value": 1 }, + + "infill_pattern": { "value": "'tetrahedral'" }, + + "machine_width": { "default_value": 305 }, + "machine_depth": { "default_value": 305 }, + "machine_height": { "default_value": 305 }, + + "machine_heated_bed": { "default_value": true }, + "machine_head_with_fans_polygon": { "default_value": [ [ -35, 65 ], [ -35, -55 ], [ 55, 65 ], [ 55, -55 ] ] }, + "gantry_height": { "default_value": 35 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_center_is_zero": { "default_value": false }, + + "speed_print": { "default_value": 60 }, + "speed_travel": { "default_value": 200 }, + + "retraction_amount": { "default_value": 0.4 }, + "retraction_speed": { "default_value": 35}, + + "xy_offset": { "default_value": -0.01 }, + + "machine_nozzle_heat_up_speed": { "default_value": 2 }, + "machine_nozzle_cool_down_speed": { "default_value": 2 }, + + "machine_use_extruder_offset_to_offset_coords": { "default_value": true }, + + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_tip_outer_diameter": { "default_value": 1 }, + "machine_nozzle_head_distance": { "default_value": 3 }, + "machine_nozzle_expansion_angle": { "default_value": 45 }, + + "machine_max_acceleration_x": { "default_value": 6000 }, + "machine_max_acceleration_y": { "default_value": 6000 }, + "machine_max_acceleration_z": { "default_value": 12000 }, + "machine_max_acceleration_e": { "default_value": 175 }, + + "machine_start_gcode": { + "default_value": ";-- START GCODE --\n;Sliced for Type A Machines Series 1\n;Sliced at: {day} {date} {time}\n;Basic settings:\n;Layer height: {layer_height}\n;Walls: {wall_thickness}\n;Fill: {fill_distance}\n;Print Speed: {print_speed}\n;Support: {support}\n;Retraction Speed: {retraction_speed}\n;Retraction Distance: {retraction_amount}\n;Print time: {print_time}\n;Filament used: {filament_amount}m {filament_weight}g\n;Settings based on: {material_profile}\nG21 ;metric values\nG90 ;absolute positioning\nG28 ;move to endstops\nG29 ;allows for auto-levelling\nG1 Z15.0 F12000 ;move the platform down 15mm\nG1 X150 Y5 F9000 ;center\nM140 S{material_bed_temperature} ;Prep Heat Bed\nM109 S{default_material_print_temperature} ;Heat To temp\nM190 S{material_bed_temperature} ;Heat Bed to temp\nG1 X150 Y5 Z0.3 ;move the platform to purge extrusion\nG92 E0 ;zero the extruded length\nG1 F200 X250 E30 ;extrude 30mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 X150 Y150 Z25 F12000 ;recenter and begin\nG1 F9000" + }, + "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\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + } + } +} diff --git a/resources/meshes/tam_series1.stl b/resources/meshes/tam_series1.stl new file mode 100644 index 0000000000000000000000000000000000000000..43f7a6ece0e8b94df12fd805dddde7e0a4774f34 GIT binary patch literal 238284 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 JYa}i0{{d=C8yNrq literal 0 HcmV?d00001 From 71bb3c3a22b9b21d761af15f0c3f72a4aed553dd Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 29 May 2017 11:28:23 +0200 Subject: [PATCH 2/6] Added electric print cost calculator plugin --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 28c0f13496..2d215c001c 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ Third party plugins * [Auto orientation](https://github.com/nallath/CuraOrientationPlugin): Calculate the optimal orientation for a model. * [OctoPrint Plugin](https://github.com/fieldofview/OctoPrintPlugin): Send printjobs directly to OctoPrint and monitor their progress in Cura. * [WirelessPrinting Plugin](https://github.com/probonopd/WirelessPrinting): Print wirelessly from Cura to your 3D printer connected to an ESP8266 module. +* [Electric Print Cost Calculator Plugin](https://github.com/zoff99/ElectricPrintCostCalculator): Calculate the electric costs of a print. Making profiles for other printers ---------------------------------- From 5dbee706a7a299cb32dffa3fd83985193ebc6eb0 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 29 May 2017 13:02:00 +0200 Subject: [PATCH 3/6] Printer output device can now have a QML item This contributes to CURA-3826. This will allow printer output devices to add custom UI elements to the monitor tab in the future. --- cura/PrinterOutputDevice.py | 38 ++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/cura/PrinterOutputDevice.py b/cura/PrinterOutputDevice.py index f411190fd5..b8a5da6fb9 100644 --- a/cura/PrinterOutputDevice.py +++ b/cura/PrinterOutputDevice.py @@ -3,13 +3,18 @@ from UM.i18n import i18nCatalog from UM.OutputDevice.OutputDevice import OutputDevice -from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QTimer +from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QTimer, pyqtSignal, QUrl +from PyQt5.QtQml import QQmlComponent, QQmlContext from PyQt5.QtWidgets import QMessageBox from enum import IntEnum # For the connection state tracking. from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Logger import Logger from UM.Signal import signalemitter +from UM.PluginRegistry import PluginRegistry +from UM.Application import Application + +import os i18n_catalog = i18nCatalog("cura") @@ -57,6 +62,11 @@ class PrinterOutputDevice(QObject, OutputDevice): self._camera_active = False + self._monitor_view_qml_path = "" + self._monitor_component = None + self._monitor_item = None + self._qml_context = None + def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None): raise NotImplementedError("requestWrite needs to be implemented") @@ -111,6 +121,32 @@ class PrinterOutputDevice(QObject, OutputDevice): # Signal to be emitted when some drastic change occurs in the remaining time (not when the time just passes on normally). preheatBedRemainingTimeChanged = pyqtSignal() + @pyqtProperty(QObject, constant=True) + def monitorItem(self): + # Note that we specifically only check if the monitor component is created. + # It could be that it failed to actually create the qml item! If we check if the item was created, it will try to + # create the item (and fail) every time. + if not self._monitor_component: + self._createMonitorViewFromQML() + + return self._monitor_item + + def _createMonitorViewFromQML(self): + path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), self._monitor_view_qml_path)) + + # Because of garbage collection we need to keep this referenced by python. + self._monitor_component = QQmlComponent(Application.getInstance()._engine, path) + + # Check if the context was already requested before (Printer output device might have multiple items in the future) + if self._qml_context is None: + self._qml_context = QQmlContext(Application.getInstance()._engine.rootContext()) + self._qml_context.setContextProperty("OutputDevice", self) + + self._monitor_item = self._monitor_component.create(self._qml_context) + if self._monitor_item is None: + Logger.log("e", "QQmlComponent status %s", self._monitor_component.status()) + Logger.log("e", "QQmlComponent error string %s", self._monitor_component.errorString()) + @pyqtProperty(str, notify=printerTypeChanged) def printerType(self): return self._printer_type From ca922e9e9da6a9209d8a27849f7ca1949ff9379a Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 29 May 2017 13:47:41 +0200 Subject: [PATCH 4/6] The monitor item is now actually used to display information on monitor page The UM3 now provides camera image in this way CURA-3826 --- cura/PrinterOutputDevice.py | 2 +- plugins/UM3NetworkPrinting/MonitorItem.qml | 40 +++++++++++++++++++ .../NetworkPrinterOutputDevice.py | 1 + resources/qml/Cura.qml | 36 +++-------------- 4 files changed, 47 insertions(+), 32 deletions(-) create mode 100644 plugins/UM3NetworkPrinting/MonitorItem.qml diff --git a/cura/PrinterOutputDevice.py b/cura/PrinterOutputDevice.py index b8a5da6fb9..e23efc0f5a 100644 --- a/cura/PrinterOutputDevice.py +++ b/cura/PrinterOutputDevice.py @@ -132,7 +132,7 @@ class PrinterOutputDevice(QObject, OutputDevice): return self._monitor_item def _createMonitorViewFromQML(self): - path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), self._monitor_view_qml_path)) + path = QUrl.fromLocalFile(self._monitor_view_qml_path) # Because of garbage collection we need to keep this referenced by python. self._monitor_component = QQmlComponent(Application.getInstance()._engine, path) diff --git a/plugins/UM3NetworkPrinting/MonitorItem.qml b/plugins/UM3NetworkPrinting/MonitorItem.qml new file mode 100644 index 0000000000..fa7bb84de3 --- /dev/null +++ b/plugins/UM3NetworkPrinting/MonitorItem.qml @@ -0,0 +1,40 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.1 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +Component +{ + Image + { + id: cameraImage + width: sourceSize.width + height: sourceSize.height * width / sourceSize.width + anchors.horizontalCenter: parent.horizontalCenter + //anchors.verticalCenter: parent.verticalCenter + //anchors.horizontalCenterOffset: - UM.Theme.getSize("sidebar").width / 2 + //visible: base.monitoringPrint + onVisibleChanged: + { + if(visible) + { + OutputDevice.startCamera() + } else + { + OutputDevice.stopCamera() + } + } + source: + { + if(OutputDevice.cameraImage) + { + return OutputDevice.cameraImage; + } + return ""; + } + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index afeaadbb7a..18bf22d18d 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -178,6 +178,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._last_command = "" self._compressing_print = False + self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "MonitorItem.qml") printer_type = self._properties.get(b"machine", b"").decode("utf-8") if printer_type.startswith("9511"): diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 0a48725011..339dac3382 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -400,41 +400,15 @@ UM.MainWindow } } - Image + Loader { - id: cameraImage - width: Math.min(viewportOverlay.width, sourceSize.width) - height: sourceSize.height * width / sourceSize.width + sourceComponent: Cura.MachineManager.printerOutputDevices.length > 0 ? Cura.MachineManager.printerOutputDevices[0].monitorItem: null + visible: base.monitoringPrint anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenterOffset: - UM.Theme.getSize("sidebar").width / 2 - visible: base.monitoringPrint - onVisibleChanged: - { - if(Cura.MachineManager.printerOutputDevices.length == 0 ) - { - return; - } - if(visible) - { - Cura.MachineManager.printerOutputDevices[0].startCamera() - } else - { - Cura.MachineManager.printerOutputDevices[0].stopCamera() - } - } - source: - { - if(!base.monitoringPrint) - { - return ""; - } - if(Cura.MachineManager.printerOutputDevices.length > 0 && Cura.MachineManager.printerOutputDevices[0].cameraImage) - { - return Cura.MachineManager.printerOutputDevices[0].cameraImage; - } - return ""; - } + + } UM.MessageStack From 8ede981a2c8b5a7977c83c27316193fc8a6ab5c2 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 29 May 2017 14:19:50 +0200 Subject: [PATCH 5/6] Set version in when saving XML material files CURA-3884 --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 7519565302..6e91e56930 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -19,6 +19,7 @@ from cura.Settings.CuraContainerRegistry import CuraContainerRegistry ## Handles serializing and deserializing material containers from an XML file class XmlMaterialProfile(InstanceContainer): + CurrentFdmMaterialVersion = "1.3" Version = 1 def __init__(self, container_id, *args, **kwargs): @@ -124,7 +125,9 @@ class XmlMaterialProfile(InstanceContainer): builder = ET.TreeBuilder() - root = builder.start("fdmmaterial", { "xmlns": "http://www.ultimaker.com/material"}) + root = builder.start("fdmmaterial", + {"xmlns": "http://www.ultimaker.com/material", + "version": self.CurrentFdmMaterialVersion}) ## Begin Metadata Block builder.start("metadata") From 8365d866a3dd9616a6cd5a57fcf330ee554c49dd Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Mon, 29 May 2017 15:14:37 +0200 Subject: [PATCH 6/6] feat: 2.6 beta changelog (CURA-3879) --- plugins/ChangeLogPlugin/ChangeLog.txt | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/plugins/ChangeLogPlugin/ChangeLog.txt index 508d5ecbe2..9d19d9b9df 100755 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/plugins/ChangeLogPlugin/ChangeLog.txt @@ -1,3 +1,71 @@ +[2.6.0] +*Cura versions +Cura 2.6 beta has local version folders, which means the new version won’t overwrite the existing configuration and profiles from older versions, but can create a new folder instead. You can now safely check out new beta versions and, if necessary, start up an older version without the danger of losing your profiles. + +*Better support adhesion +We’ve added extra support settings to allow the creation of improved support profiles with better PVA/PLA adhesion. The Support Interface settings, such as speed and density, are now split up into Support Roof and Support Floor settings. + +*Multi-extrusion support for custom FDM printers +Custom third-party printers and Ultimaker modifications now have multi-extrusion support. + +*Model auto-arrange +We’ve improved placing multiple models or multiplying the same ones, making it easier to arrange your build plate. If there’s not enough build plate space or the model is placed beyond the build plate, you can rectify this by selecting ‘Arrange all models’ in the context menu or by pressing Command+R (MacOS) or Ctrl+R (Windows and Linux). Cura 2.6 beta will then find a better solution for model positioning. + +*Gradual infill +You can now find the Gradual Infill button in Recommended mode. This setting makes the infill concentrated near the top of the model – so that we can save time and material for the lower parts of the model. This functionality is especially useful when printing with flexible materials. + +*Support meshes +It’s now possible to load an extra model that will be used as a support structure. + +*Mold +This is a bit of an experimental improvement. Users can use it to print a mold from a 3D model, which can be cast afterwards with the material that you would like your model to have. + +*Towers for tiny overhangs +We’ve added a new support option allowing users to achieve more reliable results by creating towers to support even the smallest overhangs. + +*Cutting meshes +Easily transform any model into a dual-extrusion print by applying a pattern for the second extruder. All areas of the original model, which also fall inside the pattern model, will be printed by the extruder selected for the pattern. + +*Extruder per model selection via the context menu or extruder buttons +You can now select the necessary extruder in the right-click menu or extruder buttons. This is a quicker and more user-friendly process. The material color for each extruder will also be represented in the extruder icons. + +*Custom toggle +We have made the interface a little bit cleaner and more user-friendly for switching from Recommended to Custom mode. + +*Plugin installer +It used to be fairly tricky to install new plugins. We have now added a button to select and install new plugins with ease – you will find it in Preferences. + +*Project-based menu +It’s a lot simpler to save and open files, and Cura will know if it’s a project, model, or gcode. + +*Theme picker +If you have a custom theme, you can now apply it more easily in the preferences screen. + +*Time estimates per feature +You can hover over the print time estimate in the lower right corner to see how the printing time is divided over the printing features (walls, infill, etc.). + +*Invert the direction of camera zoom +We’ve added an option to invert mouse direction for a better user experience. + +*Olsson block upgrade +Ultimaker 2 users can now specify if they have the Olsson block installed on their machine. + +*OctoPrint plugin +Cura 2.6 beta allows users to send prints to OctoPrint. + +*Bug fixes +- Post Processing plugin +- Font rendering +- Progress bar +- Support Bottom Distance issues + +*3rd party printers +- MAKEIT +- Alya +- Peopoly Moai +- Rigid3D Zero +- 3D maker + [2.5.0] *Improved speed We’ve made changing printers, profiles, materials, and print cores even faster. 3MF processing is also much faster now. Opening a 3MF file now takes one tenth of the time.