mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-16 05:35:59 +08:00
Merge branch 'master' of github.com:Ultimaker/Cura
This commit is contained in:
commit
823ac048fa
@ -13,9 +13,8 @@ import ssl
|
||||
import urllib.request
|
||||
import urllib.error
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR
|
||||
from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QFile
|
||||
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox, QCheckBox, QPushButton
|
||||
|
||||
from UM.Application import Application
|
||||
@ -23,6 +22,7 @@ from UM.Logger import Logger
|
||||
from UM.View.GL.OpenGL import OpenGL
|
||||
from UM.i18n import i18nCatalog
|
||||
from UM.Platform import Platform
|
||||
from UM.Resources import Resources
|
||||
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
@ -91,6 +91,7 @@ class CrashHandler:
|
||||
label = QLabel()
|
||||
label.setText(catalog.i18nc("@label crash message", """<p><b>A fatal error has occurred.</p></b>
|
||||
<p>Unfortunately, Cura encountered an unrecoverable error during start up. It was possibly caused by some incorrect configuration files. We suggest to backup and reset your configuration.</p>
|
||||
<p>Your backup can be found in your Configuration folder.</p>
|
||||
<p>Please send us this Crash Report to fix the problem.</p>
|
||||
"""))
|
||||
label.setWordWrap(True)
|
||||
|
@ -228,16 +228,23 @@ class CuraContainerRegistry(ContainerRegistry):
|
||||
Logger.log("e", "Incorrect profile [%s]. Could not find global profile", file_name)
|
||||
return { "status": "error",
|
||||
"message": catalog.i18nc("@info:status Don't translate the XML tags <filename> or <message>!", "This profile <filename>{0}</filename> contains incorrect data, could not import it.", file_name)}
|
||||
|
||||
# In a profile we can have the quality_definition metadata, but if not, we get the definition
|
||||
profile_definition = global_profile.getMetaDataEntry("quality_definition")
|
||||
if not profile_definition:
|
||||
profile_definition = global_profile.getMetaDataEntry("definition")
|
||||
expected_machine_definition = "fdmprinter"
|
||||
|
||||
# The expected machine definition may be the quality_definition if defined or the current definition id
|
||||
expected_machine_definition = None
|
||||
if parseBool(global_container_stack.getMetaDataEntry("has_machine_quality", "False")):
|
||||
expected_machine_definition = global_container_stack.getMetaDataEntry("quality_definition")
|
||||
if not expected_machine_definition:
|
||||
expected_machine_definition = global_container_stack.definition.getId()
|
||||
|
||||
if expected_machine_definition is not None and profile_definition is not None and profile_definition != expected_machine_definition:
|
||||
Logger.log("e", "Profile [%s] is for machine [%s] but the current active machine is [%s]. Will not import the profile", file_name)
|
||||
Logger.log("e", "Profile [%s] is for machine [%s] but the current active machine is [%s]. Will not import the profile", file_name, profile_definition, expected_machine_definition)
|
||||
return { "status": "error",
|
||||
"message": catalog.i18nc("@info:status Don't translate the XML tags <filename> or <message>!", "The machine defined in profile <filename>{0}</filename> doesn't match with your current machine, could not import it.", file_name)}
|
||||
"message": catalog.i18nc("@info:status Don't translate the XML tags <filename> or <message>!", "The machine defined in profile <filename>{0}</filename> ({1}) doesn't match with your current machine ({2}), could not import it.", file_name, profile_definition, expected_machine_definition)}
|
||||
|
||||
name_seed = os.path.splitext(os.path.basename(file_name))[0]
|
||||
new_name = self.uniqueName(name_seed)
|
||||
|
@ -559,7 +559,8 @@ class MachineManager(QObject):
|
||||
def activeVariantNames(self) -> List[str]:
|
||||
result = []
|
||||
|
||||
active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks()
|
||||
# Just return the variants in the extruder stack(s). For the variant in the global stack, use activeVariantBuildplateName
|
||||
active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
|
||||
if active_stacks is not None:
|
||||
for stack in active_stacks:
|
||||
variant_container = stack.variant
|
||||
|
@ -775,6 +775,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||
# Ensure a unique ID and name
|
||||
stack.setMetaDataEntry("id", new_id)
|
||||
|
||||
# Keep same quality between extruders and global stack
|
||||
stack.quality = global_stack.quality
|
||||
|
||||
self._container_registry.addContainer(stack)
|
||||
extruder_stacks_added.append(stack)
|
||||
containers_added.append(stack)
|
||||
|
@ -5,6 +5,7 @@ from UM.Mesh.MeshWriter import MeshWriter
|
||||
from UM.Logger import Logger
|
||||
from UM.Application import Application
|
||||
from UM.Settings.InstanceContainer import InstanceContainer
|
||||
from UM.Util import parseBool
|
||||
|
||||
from cura.Settings.ExtruderManager import ExtruderManager
|
||||
|
||||
@ -120,6 +121,10 @@ class GCodeWriter(MeshWriter):
|
||||
if flat_global_container.getMetaDataEntry("quality_type", None) is None:
|
||||
flat_global_container.addMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
|
||||
|
||||
# Ensure that quality_definition is set. (Can happen if we have empty quality changes).
|
||||
if parseBool(stack.getMetaDataEntry("has_machine_quality", "False")):
|
||||
flat_global_container.addMetaDataEntry("quality_definition", stack.getMetaDataEntry("quality_definition"))
|
||||
|
||||
serialized = flat_global_container.serialize()
|
||||
data = {"global_quality": serialized}
|
||||
|
||||
|
@ -10,7 +10,8 @@ Item
|
||||
{
|
||||
id: base
|
||||
|
||||
property bool isUM3: Cura.MachineManager.activeQualityDefinitionId == "ultimaker3"
|
||||
property string activeQualityDefinitionId: Cura.MachineManager.activeQualityDefinitionId
|
||||
property bool isUM3: activeQualityDefinitionId == "ultimaker3" || activeQualityDefinitionId.match("ultimaker_") != null
|
||||
property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0
|
||||
property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands
|
||||
property bool authenticationRequested: printerConnected && (Cura.MachineManager.printerOutputDevices[0].authenticationState == 2 || Cura.MachineManager.printerOutputDevices[0].authenticationState == 5) // AuthState.AuthenticationRequested or AuthenticationReceived.
|
||||
|
@ -90,6 +90,7 @@
|
||||
"infill_overlap": { "value": "0" },
|
||||
"infill_pattern": { "value": "'triangles'" },
|
||||
"infill_wipe_dist": { "value": "0" },
|
||||
"initial_layer_line_width_factor": { "value": "120" },
|
||||
"jerk_enabled": { "value": "True" },
|
||||
"jerk_layer_0": { "value": "jerk_topbottom" },
|
||||
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
|
||||
@ -109,7 +110,9 @@
|
||||
"material_bed_temperature": { "maximum_value": "115" },
|
||||
"material_bed_temperature_layer_0": { "maximum_value": "115" },
|
||||
"material_standby_temperature": { "value": "100" },
|
||||
"meshfix_maximum_resolution": { "value": "0.04" },
|
||||
"multiple_mesh_overlap": { "value": "0" },
|
||||
"optimize_wall_printing_order": { "value": "True" },
|
||||
"prime_tower_enable": { "default_value": true },
|
||||
"raft_airgap": { "value": "0" },
|
||||
"raft_base_thickness": { "value": "0.3" },
|
||||
@ -120,6 +123,7 @@
|
||||
"raft_margin": { "value": "10" },
|
||||
"raft_surface_layers": { "value": "1" },
|
||||
"retraction_amount": { "value": "2" },
|
||||
"retraction_combing": { "default_value": "noskin" },
|
||||
"retraction_count_max": { "value": "10" },
|
||||
"retraction_extrusion_window": { "value": "1" },
|
||||
"retraction_hop": { "value": "2" },
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2018 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2018 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
|
@ -1,9 +1,9 @@
|
||||
// Copyright (c) 2018 Ultimaker B.V.
|
||||
// Uranium is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Layouts 1.2
|
||||
import QtQuick.Controls 2.1
|
||||
import QtQuick.Controls 2.0
|
||||
|
||||
import UM 1.2 as UM
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
// Copyright (c) 2018 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Layouts 1.2
|
||||
import QtQuick.Controls 2.1
|
||||
import QtQuick.Controls 2.0
|
||||
|
||||
import UM 1.1 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2016 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2017 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
|
@ -120,6 +120,31 @@ UM.Dialog
|
||||
width: (parent.width / 3) | 0
|
||||
}
|
||||
}
|
||||
Column
|
||||
{
|
||||
width: parent.width
|
||||
visible: Cura.MachineManager.hasVariantBuildplates
|
||||
Item // Spacer
|
||||
{
|
||||
height: spacerHeight
|
||||
width: height
|
||||
}
|
||||
Row
|
||||
{
|
||||
width: parent.width
|
||||
height: childrenRect.height
|
||||
Label
|
||||
{
|
||||
text: catalog.i18nc("@action:label", "Build plate")
|
||||
width: (parent.width / 3) | 0
|
||||
}
|
||||
Label
|
||||
{
|
||||
text: Cura.MachineManager.activeVariantBuildplateName
|
||||
width: (parent.width / 3) | 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Repeater
|
||||
{
|
||||
|
@ -13,6 +13,7 @@ setting_version = 4
|
||||
[values]
|
||||
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||
cool_fan_speed_max = =cool_fan_speed
|
||||
infill_line_width = =round(line_width * 0.42 / 0.35, 2)
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
material_print_temperature = =default_material_print_temperature + 5
|
||||
@ -20,9 +21,9 @@ material_standby_temperature = 100
|
||||
prime_tower_enable = False
|
||||
skin_overlap = 20
|
||||
speed_layer_0 = 20
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 70)
|
||||
speed_wall = =math.ceil(speed_print * 50 / 70)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 50)
|
||||
speed_topbottom = =math.ceil(speed_print * 40 / 70)
|
||||
speed_wall = =math.ceil(speed_print * 55 / 70)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 45 / 50)
|
||||
top_bottom_thickness = 1
|
||||
wall_thickness = 1
|
||||
|
||||
|
@ -13,6 +13,7 @@ setting_version = 4
|
||||
[values]
|
||||
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||
cool_fan_speed_max = =cool_fan_speed
|
||||
infill_line_width = =round(line_width * 0.42 / 0.35, 2)
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
material_standby_temperature = 100
|
||||
|
@ -14,6 +14,7 @@ setting_version = 4
|
||||
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||
cool_fan_speed_max = =cool_fan_speed
|
||||
cool_min_speed = 10
|
||||
infill_line_width = =round(line_width * 0.42 / 0.35, 2)
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
|
@ -14,6 +14,7 @@ setting_version = 4
|
||||
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||
cool_fan_speed_max = =cool_fan_speed
|
||||
cool_min_speed = 7
|
||||
infill_line_width = =round(line_width * 0.42 / 0.35, 2)
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
material_standby_temperature = 100
|
||||
|
@ -18,11 +18,10 @@ cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 4
|
||||
gradual_infill_step_height = =5 * layer_height
|
||||
gradual_infill_steps = 4
|
||||
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||
infill_overlap = 0
|
||||
infill_pattern = tetrahedral
|
||||
infill_sparse_density = 96
|
||||
infill_pattern = cross_3d
|
||||
infill_sparse_density = 10
|
||||
infill_wipe_dist = 0.1
|
||||
jerk_enabled = True
|
||||
jerk_print = 25
|
||||
|
@ -18,11 +18,10 @@ cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 4
|
||||
gradual_infill_step_height = =5 * layer_height
|
||||
gradual_infill_steps = 4
|
||||
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||
infill_overlap = 0
|
||||
infill_pattern = tetrahedral
|
||||
infill_sparse_density = 96
|
||||
infill_pattern = cross_3d
|
||||
infill_sparse_density = 10
|
||||
infill_wipe_dist = 0.1
|
||||
jerk_enabled = True
|
||||
jerk_print = 25
|
||||
|
@ -18,11 +18,10 @@ cool_fan_speed_max = 100
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
cool_min_speed = 4
|
||||
gradual_infill_step_height = =5 * layer_height
|
||||
gradual_infill_steps = 4
|
||||
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
|
||||
infill_overlap = 0
|
||||
infill_pattern = tetrahedral
|
||||
infill_sparse_density = 96
|
||||
infill_pattern = cross_3d
|
||||
infill_sparse_density = 10
|
||||
infill_wipe_dist = 0.1
|
||||
jerk_enabled = True
|
||||
jerk_print = 25
|
||||
|
@ -15,8 +15,8 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||
cool_fan_speed_max = =100
|
||||
cool_min_speed = 2
|
||||
gradual_infill_step_height = =3 * layer_height
|
||||
infill_line_width = =round(line_width * 0.535 / 0.75, 2)
|
||||
infill_pattern = cubic
|
||||
infill_line_width = =round(line_width * 0.65 / 0.75, 2)
|
||||
infill_pattern = triangles
|
||||
line_width = =machine_nozzle_size * 0.9375
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
@ -25,6 +25,12 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature -
|
||||
material_print_temperature = =default_material_print_temperature + 10
|
||||
material_standby_temperature = 100
|
||||
prime_tower_enable = True
|
||||
retract_at_layer_change = False
|
||||
speed_print = 45
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 45)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 45)
|
||||
speed_wall_x = =speed_wall
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
|
||||
support_angle = 70
|
||||
support_line_width = =line_width * 0.75
|
||||
support_pattern = ='triangles'
|
||||
|
@ -15,8 +15,8 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||
cool_fan_speed_max = =100
|
||||
cool_min_speed = 2
|
||||
gradual_infill_step_height = =3 * layer_height
|
||||
infill_line_width = =round(line_width * 0.535 / 0.75, 2)
|
||||
infill_pattern = cubic
|
||||
infill_line_width = =round(line_width * 0.65 / 0.75, 2)
|
||||
infill_pattern = triangles
|
||||
layer_height = 0.4
|
||||
line_width = =machine_nozzle_size * 0.9375
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
@ -27,6 +27,12 @@ material_print_temperature = =default_material_print_temperature + 15
|
||||
material_standby_temperature = 100
|
||||
prime_tower_enable = True
|
||||
raft_margin = 10
|
||||
retract_at_layer_change = False
|
||||
speed_print = 45
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 45)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 45)
|
||||
speed_wall_x = =speed_wall
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
|
||||
support_angle = 70
|
||||
support_line_width = =line_width * 0.75
|
||||
support_pattern = ='triangles'
|
||||
|
@ -15,8 +15,8 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||
cool_fan_speed_max = =100
|
||||
cool_min_speed = 2
|
||||
gradual_infill_step_height = =3 * layer_height
|
||||
infill_line_width = =round(line_width * 0.535 / 0.75, 2)
|
||||
infill_pattern = cubic
|
||||
infill_line_width = =round(line_width * 0.65 / 0.75, 2)
|
||||
infill_pattern = triangles
|
||||
layer_height = 0.3
|
||||
line_width = =machine_nozzle_size * 0.9375
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
@ -26,6 +26,12 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature -
|
||||
material_print_temperature = =default_material_print_temperature + 10
|
||||
material_standby_temperature = 100
|
||||
prime_tower_enable = True
|
||||
retract_at_layer_change = False
|
||||
speed_print = 45
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 45)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 45)
|
||||
speed_wall_x = =speed_wall
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
|
||||
support_angle = 70
|
||||
support_line_width = =line_width * 0.75
|
||||
support_pattern = ='triangles'
|
||||
|
@ -15,11 +15,10 @@ brim_width = 8.75
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
top_skin_expand_distance = =line_width * 2
|
||||
gradual_infill_step_height = =4 * layer_height
|
||||
gradual_infill_steps = 5
|
||||
infill_before_walls = True
|
||||
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
infill_pattern = tetrahedral
|
||||
infill_sparse_density = 80
|
||||
infill_pattern = cross_3d
|
||||
infill_sparse_density = 10
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
|
@ -15,11 +15,10 @@ brim_width = 8.75
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
top_skin_expand_distance = =line_width * 2
|
||||
gradual_infill_step_height = =4 * layer_height
|
||||
gradual_infill_steps = 5
|
||||
infill_before_walls = True
|
||||
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
infill_pattern = tetrahedral
|
||||
infill_sparse_density = 80
|
||||
infill_pattern = cross_3d
|
||||
infill_sparse_density = 10
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
|
@ -15,11 +15,10 @@ brim_width = 8.75
|
||||
cool_min_layer_time_fan_speed_max = 6
|
||||
top_skin_expand_distance = =line_width * 2
|
||||
gradual_infill_step_height = =4 * layer_height
|
||||
gradual_infill_steps = 5
|
||||
infill_before_walls = True
|
||||
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
|
||||
infill_pattern = tetrahedral
|
||||
infill_sparse_density = 80
|
||||
infill_pattern = cross_3d
|
||||
infill_sparse_density = 10
|
||||
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_support = =math.ceil(jerk_print * 25 / 25)
|
||||
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
|
||||
|
Loading…
x
Reference in New Issue
Block a user