Merge branch '2.5' into feature_version_upgrade_2.5

This commit is contained in:
Jack Ha 2017-03-14 11:18:14 +01:00
commit 0a398738b7
10 changed files with 128 additions and 37 deletions

View file

@ -5,6 +5,7 @@ from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty
from UM.FlameProfiler import pyqtSlot
from UM.Application import Application
from UM.Logger import Logger
from UM.Qt.Duration import Duration
from UM.Preferences import Preferences
from UM.Settings.ContainerRegistry import ContainerRegistry
@ -109,7 +110,12 @@ class PrintInformation(QObject):
return self._material_costs
def _onPrintDurationMessage(self, total_time, material_amounts):
self._current_print_time.setDuration(total_time)
if total_time != total_time: # Check for NaN. Engine can sometimes give us weird values.
Logger.log("w", "Received NaN for print duration message")
self._current_print_time.setDuration(0)
else:
self._current_print_time.setDuration(total_time)
self.currentPrintTimeChanged.emit()
self._material_amounts = material_amounts

7
cura/Settings/ExtruderManager.py Normal file → Executable file
View file

@ -135,6 +135,13 @@ class ExtruderManager(QObject):
return self._extruder_trains[global_container_stack.getId()][str(index)]
return None
## Get all extruder stacks
def getExtruderStacks(self):
result = []
for i in range(self.extruderCount):
result.append(self.getExtruderStack(i))
return result
## Adds all extruders of a specific machine definition to the extruder
# manager.
#

29
cura/Settings/MachineManager.py Normal file → Executable file
View file

@ -731,8 +731,11 @@ class MachineManager(QObject):
else:
self._material_incompatible_message.hide()
new_quality_id = old_quality.getId()
quality_type = old_quality.getMetaDataEntry("quality_type")
quality_type = None
new_quality_id = None
if old_quality:
new_quality_id = old_quality.getId()
quality_type = old_quality.getMetaDataEntry("quality_type")
if old_quality_changes:
quality_type = old_quality_changes.getMetaDataEntry("quality_type")
new_quality_id = old_quality_changes.getId()
@ -740,16 +743,20 @@ class MachineManager(QObject):
# See if the requested quality type is available in the new situation.
machine_definition = self._active_container_stack.getBottom()
quality_manager = QualityManager.getInstance()
candidate_quality = quality_manager.findQualityByQualityType(quality_type,
quality_manager.getWholeMachineDefinition(machine_definition),
[material_container])
candidate_quality = None
if quality_type:
candidate_quality = quality_manager.findQualityByQualityType(quality_type,
quality_manager.getWholeMachineDefinition(machine_definition),
[material_container])
if not candidate_quality or candidate_quality.getId() == "empty_quality":
# Fall back to a quality
new_quality = quality_manager.findQualityByQualityType(None,
quality_manager.getWholeMachineDefinition(machine_definition),
[material_container])
if new_quality:
new_quality_id = new_quality.getId()
# Fall back to a quality (which must be compatible with all other extruders)
new_qualities = quality_manager.findAllUsableQualitiesForMachineAndExtruders(
self._global_container_stack, ExtruderManager.getInstance().getExtruderStacks())
if new_qualities:
new_quality_id = new_qualities[0].getId() # Just pick the first available one
else:
Logger.log("w", "No quality profile found that matches the current machine and extruders.")
else:
if not old_quality_changes:
new_quality_id = candidate_quality.getId()

View file

@ -92,7 +92,12 @@ class ThreeMFReader(MeshReader):
um_node.setMeshData(mesh_data)
for child in savitar_node.getChildren():
um_node.addChild(self._convertSavitarNodeToUMNode(child))
child_node = self._convertSavitarNodeToUMNode(child)
if child_node:
um_node.addChild(child_node)
if um_node.getMeshData() is None and len(um_node.getChildren()) == 0:
return None
settings = savitar_node.getSettings()
@ -152,6 +157,8 @@ class ThreeMFReader(MeshReader):
self._unit = scene_3mf.getUnit()
for node in scene_3mf.getSceneNodes():
um_node = self._convertSavitarNodeToUMNode(node)
if um_node is None:
continue
# compensate for original center position, if object(s) is/are not around its zero position
transform_matrix = Matrix()

View file

@ -1,9 +1,59 @@
[2.5.0]
*Layerview double slider.
The layerview now has a nice slider with double handles where you can drag maximum layer, minimum layer and the layer range. Thansk to community member Aldo Hoeben for this feature.
*Speed.
Weve given the system a tweak, to make changing printers, profiles, materials and print cores even quicker than ever. That means less hanging around, more time printing. Weve also adjusted the start-up speed, which is now five seconds faster.
*Included PauseBackendPlugin.
This enables pausing the backend and manually start the backend. Thanks to community member Aldo Hoeben for this feature.
*Speedup engine Multi-threading.
This is one of the most significant improvements, making slicing even faster. Just like computers with multiple cores, Cura can process multiple operations at the same time. Hows that for efficient?
*Better layout for 3D layer view options.
Need things to be a bit clearer? Weve now incorporated an improved layer view for computers that support OpenGL 4.1. For OpenGL 2.0 we will automatically switch to the old layer view. Thanks to community member Aldo Hoeben for the fancy double handle slider.
*Disable automatic slicing.
Some users told us that slicing slowed down their workflow when it auto-starts, and to improve the user experience, we added an option to disable auto-slicing if required. Thanks to community member Aldo Hoeben for contributing to this one.
*Solidworks & Cura macro.
This macro is designed to run inside SolidWorks, open Cura and load the current document / part. You should also be able to add this macro to your toolbar inside Solidworks.
*Auto-scale off by default.
This change needs no explanation!
*Preheat the build plate (with a connected printer).
You can now set your Ultimaker 3 to preheat the build plate, which reduces the downtime, letting you manually speed up your printing workflow. All you need to do is use the preheat function in the Print Monitor screen, and set the correct temperature for the active material(s).
*G-code reader.
The g-code reader has been reintroduced, which means you can load g-code from file and display it in layer view. You can also print saved g-code files with Cura, share and re-use them, and you can check that your printed object looks right via the g-code viewer.
*Switching profiles.
When you change a printing profile after customizing print settings, you have an option (shown in a popup) to transfer your customizations to the new profile or discard those modifications and continue with default settings instead. Weve made this dialog window more informative and intuitive.
*Print cost calculation.
Cura now contains code to help you calculate the cost of your print. To do so, youll need to enter a cost per spool and an amount of materials per spool. You can also set the cost per material and gain better control of your expenses. Thanks to our community member Aldo Hoeben for adding this feature.
*Bug fixes
Property renaming: Properties that start with get have been renamed to avoid confusion.
Window overflow: This is now fixed.
Multiple machine prefixes: Multiple machine prefixes are gone when loading and saving projects.
Removal of file extension: When you save a file or project (without changing the file type), no file extension is added to the name. Its only when you change to another file type that the extension is added.
Ultimaker 3 Extended connectivity: Selecting Ultimaker 3 Extended in Cura let you connect and print with Ultimaker 3, without any warning. This now has been fixed.
Different Y / Z colors: Y and Z colors in the tool menu are now different to the colors on the build plate.
No collision areas: No collision areas were generated for some models.
Perimeter gaps: Perimeter gaps are not filled often enough; weve now amended this.
File location after restart: The old version of Cura didnt remember the last opened file location after its been restarted. Now it does!
Project name: The project name changes after the project is opened.
Slicing when error value is given (print core 2): When a support is printed with extruder 2 (PVA), some support settings will trigger a slice when an error value is given. Weve now sorted this out.
Support Towers: Support Towers can now be disabled.
Support bottoms: When putting one object on top of another with some space in between, and selecting support with support bottom interface, no support bottom is printed. This has now been resolved.
Summary box size: Weve enlarged the summary box when saving your project.
Cubic subdivision infill: In the past, the cubic subdivision infill sometimes didnt produce the infill (WIN) this has now been addressed.
Spiralize outer contour and fill small gaps: When combining Fill Gaps Between Walls with Spiralize Outer Contour, the model gets a massive infill.
Experimental post-processing plugin: Since the TwaekAtZ post-processing plugin is not officially supported, we added the Experimental tag.
*3rd party printers (bug fixes)
Folgertech printer definition has been added
Hello BEE Prusa printer definition has been added
Material profiles for Cartesio printers have been updated
[2.4.0]
*Project saving & opening

24
resources/definitions/fdmprinter.def.json Normal file → Executable file
View file

@ -1318,10 +1318,10 @@
"enabled": "expand_upper_skins or expand_lower_skins",
"settable_per_mesh": true
},
"min_skin_angle_for_expansion":
"max_skin_angle_for_expansion":
{
"label": "Minimum Skin Angle for Expansion",
"description": "Top and or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope.",
"label": "Maximum Skin Angle for Expansion",
"description": "Top and or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0° is horizontal, while an angle of 90° is vertical.",
"unit": "°",
"type": "float",
"minimum_value": "0",
@ -1340,7 +1340,7 @@
"unit": "mm",
"type": "float",
"default_value": 2.24,
"value": "top_layers * layer_height / math.tan(math.radians(min_skin_angle_for_expansion))",
"value": "top_layers * layer_height / math.tan(math.radians(max_skin_angle_for_expansion))",
"minimum_value": "0",
"enabled": "expand_upper_skins or expand_lower_skins",
"settable_per_mesh": true
@ -2556,16 +2556,6 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"start_layers_at_same_position":
{
"label": "Start Layers with the Same Part",
"description": "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time.",
"type": "bool",
"default_value": false,
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": true
},
"layer_start_x":
{
"label": "Layer Start X",
@ -2574,9 +2564,8 @@
"type": "float",
"default_value": 0.0,
"minimum_value": "0",
"enabled": "start_layers_at_same_position",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_extruder": true,
"settable_per_meshgroup": true
},
"layer_start_y":
@ -2587,9 +2576,8 @@
"type": "float",
"default_value": 0.0,
"minimum_value": "0",
"enabled": "start_layers_at_same_position",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_extruder": true,
"settable_per_meshgroup": true
},
"retraction_hop_enabled": {

View file

@ -17,7 +17,7 @@
"has_machine_materials": true,
"has_variant_materials": true,
"has_variants": true,
"preferred_variant": "*aa*",
"preferred_variant": "*aa04*",
"preferred_quality": "*Normal*",
"variants_name": "Print core",
"machine_extruder_trains":

View file

@ -18,7 +18,7 @@
"has_variant_materials": true,
"has_materials": true,
"has_variants": true,
"preferred_variant": "*aa*",
"preferred_variant": "*aa04*",
"variants_name": "Print core",
"machine_extruder_trains":
{

View file

@ -0,0 +1,13 @@
[general]
version = 2
name = Superdraft Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = superdraft
global_quality = True
weight = -2
[values]
layer_height = 0.4

View file

@ -0,0 +1,13 @@
[general]
version = 2
name = Verydraft Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = verydraft
global_quality = True
weight = -2
[values]
layer_height = 0.3