mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-19 20:29:40 +08:00
Merge branch 'main' into CURA-12352_different-minimum-layer-time-for-layers-that-contain-overhangs
This commit is contained in:
commit
4be40f770c
@ -75,7 +75,7 @@ app = BUNDLE(
|
||||
coll,
|
||||
name='{{ display_name }}.app',
|
||||
icon={{ icon }},
|
||||
bundle_identifier={{ osx_bundle_identifier }} + "_" + '{{ display_name }}'.replace(" ", "_") + "_" {{ short_version }},
|
||||
bundle_identifier={{ osx_bundle_identifier }} + "_" + '{{ display_name }}'.replace(" ", "_"),
|
||||
version={{ version }},
|
||||
info_plist={
|
||||
'CFBundleDisplayName': '{{ display_name }}',
|
||||
|
@ -5,7 +5,7 @@ requirements:
|
||||
- "curaengine/5.10.0-alpha.0@ultimaker/testing"
|
||||
- "cura_binary_data/5.10.0-alpha.0@ultimaker/testing"
|
||||
- "fdm_materials/5.10.0-alpha.0@ultimaker/testing"
|
||||
- "dulcificum/0.2.1@ultimaker/stable"
|
||||
- "dulcificum/0.3.0@ultimaker/stable"
|
||||
- "pysavitar/5.4.0-alpha.0@ultimaker/stable"
|
||||
- "pynest2d/5.4.0-alpha.0@ultimaker/stable"
|
||||
requirements_internal:
|
||||
|
@ -1,9 +1,12 @@
|
||||
# Copyright (c) 2018 Ultimaker B.V.
|
||||
# Copyright (c) 2025 UltiMaker
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from PyQt6.QtCore import pyqtProperty, QObject, pyqtSignal
|
||||
from typing import List
|
||||
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.Settings.DefinitionContainer import DefinitionContainer
|
||||
|
||||
MYPY = False
|
||||
if MYPY:
|
||||
from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel
|
||||
@ -68,6 +71,15 @@ class PrinterConfigurationModel(QObject):
|
||||
return True
|
||||
return False
|
||||
|
||||
@pyqtProperty("QStringList", constant=True)
|
||||
def validCoresForPrinterType(self) -> List[str]:
|
||||
printers = ContainerRegistry.getInstance().findContainersMetadata(
|
||||
ignore_case=True, type="machine", name=self._printer_type, container_type=DefinitionContainer)
|
||||
id = printers[0]["id"] if len(printers) > 0 and "id" in printers[0] else ""
|
||||
definitions = ContainerRegistry.getInstance().findContainersMetadata(
|
||||
ignore_case=True, type="variant", definition=id+"*")
|
||||
return [x["name"] for x in definitions]
|
||||
|
||||
def __str__(self):
|
||||
message_chunks = []
|
||||
message_chunks.append("Printer type: " + self._printer_type)
|
||||
|
@ -1678,7 +1678,7 @@ class MachineManager(QObject):
|
||||
intent_category = self.activeIntentCategory,
|
||||
intent_name = IntentCategoryModel.translation(self.activeIntentCategory, "name", self.activeIntentCategory.title()),
|
||||
custom_profile = self.activeQualityOrQualityChangesName if global_stack.qualityChanges is not empty_quality_changes_container else None,
|
||||
layer_height = self.activeQualityLayerHeight if self.isActiveQualitySupported else None,
|
||||
layer_height = float("{:.2f}".format(self.activeQualityLayerHeight)) if self.isActiveQualitySupported else None,
|
||||
is_experimental = self.isActiveQualityExperimental and self.isActiveQualitySupported
|
||||
)
|
||||
|
||||
|
@ -154,7 +154,7 @@ if __name__ == "__main__":
|
||||
parser.add_argument("--app_name", required = True, type = str, help = "Filename of the .app that will be contained within the dmg/pkg")
|
||||
args = parser.parse_args()
|
||||
|
||||
cura_version = args.cura_conan_version.split("/")[-1]
|
||||
cura_version = args.cura_conan_version.replace("+","-") # + is not allowed for bundle identifier
|
||||
|
||||
app_name = f"{args.app_name}.app"
|
||||
|
||||
|
@ -214,7 +214,7 @@ Item
|
||||
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
|
||||
labelText: catalog.i18nc("@label", "Y min")
|
||||
labelText: catalog.i18nc("@label", "Y min ( '-' towards back)")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
@ -254,7 +254,7 @@ Item
|
||||
settingKey: "machine_head_with_fans_polygon"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
|
||||
labelText: catalog.i18nc("@label", "Y max")
|
||||
labelText: catalog.i18nc("@label", "Y max ( '+' towards front)")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
|
@ -46,6 +46,13 @@ class MakerbotWriter(MeshWriter):
|
||||
suffixes=["makerbot"]
|
||||
)
|
||||
)
|
||||
MimeTypeDatabase.addMimeType(
|
||||
MimeType(
|
||||
name="application/x-makerbot-replicator_plus",
|
||||
comment="Makerbot Toolpath Package",
|
||||
suffixes=["makerbot"]
|
||||
)
|
||||
)
|
||||
|
||||
_PNG_FORMAT = [
|
||||
{"prefix": "isometric_thumbnail", "width": 120, "height": 120},
|
||||
@ -114,6 +121,8 @@ class MakerbotWriter(MeshWriter):
|
||||
filename, filedata = "print.gcode", gcode_text_io.getvalue()
|
||||
case "application/x-makerbot":
|
||||
filename, filedata = "print.jsontoolpath", du.gcode_2_miracle_jtp(gcode_text_io.getvalue())
|
||||
case "application/x-makerbot-replicator_plus":
|
||||
filename, filedata = "print.jsontoolpath", du.gcode_2_miracle_jtp(gcode_text_io.getvalue(), nb_extruders=1)
|
||||
case _:
|
||||
raise Exception("Unsupported Mime type")
|
||||
|
||||
|
@ -25,6 +25,12 @@ def getMetaData():
|
||||
"description": catalog.i18nc("@item:inlistbox", "Makerbot Sketch Printfile"),
|
||||
"mime_type": "application/x-makerbot-sketch",
|
||||
"mode": MakerbotWriter.MakerbotWriter.OutputMode.BinaryMode,
|
||||
},
|
||||
{
|
||||
"extension": file_extension,
|
||||
"description": catalog.i18nc("@item:inlistbox", "Makerbot Replicator+ Printfile"),
|
||||
"mime_type": "application/x-makerbot-replicator_plus",
|
||||
"mode": MakerbotWriter.MakerbotWriter.OutputMode.BinaryMode,
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -97,6 +97,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
||||
|
||||
CuraApplication.getInstance().getOnExitCallbackManager().addCallback(self._checkActivePrintingUponAppExit)
|
||||
|
||||
CuraApplication.getInstance().getPreferences().addPreference("usb_printing/enabled", False)
|
||||
|
||||
# This is a callback function that checks if there is any printing in progress via USB when the application tries
|
||||
# to exit. If so, it will show a confirmation before
|
||||
def _checkActivePrintingUponAppExit(self) -> None:
|
||||
@ -144,6 +146,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
||||
|
||||
CuraApplication.getInstance().getController().setActiveStage("MonitorStage")
|
||||
|
||||
CuraApplication.getInstance().getPreferences().setValue("usb_printing/enabled", True)
|
||||
|
||||
#Find the g-code to print.
|
||||
gcode_textio = StringIO()
|
||||
gcode_writer = cast(MeshWriter, PluginRegistry.getInstance().getPluginObject("GCodeWriter"))
|
||||
|
@ -384,6 +384,7 @@
|
||||
"RepRap (RepRap)": "RepRap",
|
||||
"UltiGCode": "Ultimaker 2",
|
||||
"Griffin": "Griffin",
|
||||
"Cheetah": "Griffin+Cheetah",
|
||||
"Makerbot": "Makerbot",
|
||||
"BFB": "Bits from Bytes",
|
||||
"MACH3": "Mach3",
|
||||
@ -461,7 +462,7 @@
|
||||
"machine_head_with_fans_polygon":
|
||||
{
|
||||
"label": "Machine Head & Fan Polygon",
|
||||
"description": "The shape of the print head. These are coordinates relative to the position of the print head, which is usually the position of its first extruder. The dimensions left and in front of the print head must be negative coordinates.",
|
||||
"description": "The dimensions of the print head used to determine 'Safe Model Distance' when printing 'One at a Time'. These numbers relate to the centerline of the first extruder nozzle. Left of the nozzle is 'X Min' and must be negative. Rear of the nozzle is 'Y Min' and must be negative. X Max (right) and Y Max (front) are positive numbers. Gantry height is the dimension from the build plate to the X gantry beam.",
|
||||
"type": "polygon",
|
||||
"default_value": [
|
||||
[-20, 10],
|
||||
@ -3231,6 +3232,19 @@
|
||||
"minimum_value": 0.01,
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"material_pressure_advance_factor":
|
||||
{
|
||||
"enabled": false,
|
||||
"label": "Pressure advance factor",
|
||||
"description": "Tuning factor for pressure advance, which is meant to synchronize extrusion with motion",
|
||||
"default_value": 0.05,
|
||||
"maximum_value_warning": 1.0,
|
||||
"minimum_value": 0,
|
||||
"type": "float",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true,
|
||||
"settable_per_meshgroup": false
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -7525,6 +7539,88 @@
|
||||
"enabled": "retraction_enable and extruders_enabled_count > 1",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"interlocking_enable":
|
||||
{
|
||||
"label": "Generate Interlocking Structure",
|
||||
"description": "At the locations where models touch, generate an interlocking beam structure. This improves the adhesion between models, especially models printed in different materials.",
|
||||
"type": "bool",
|
||||
"enabled": "extruders_enabled_count > 1",
|
||||
"default_value": false,
|
||||
"resolve": "(extruders_enabled_count > 1) and any(extruderValues('interlocking_enable'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_beam_width":
|
||||
{
|
||||
"label": "Interlocking Beam Width",
|
||||
"description": "The width of the interlocking structure beams.",
|
||||
"type": "float",
|
||||
"unit": "mm",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 0.8,
|
||||
"value": "2 * wall_line_width_0",
|
||||
"minimum_value": "min_odd_wall_line_width",
|
||||
"maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)",
|
||||
"maximum_value_warning": "max(extruderValues('wall_line_width_0')) * 6",
|
||||
"settable_per_mesh": true,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"interlocking_orientation":
|
||||
{
|
||||
"label": "Interlocking Structure Orientation",
|
||||
"description": "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects.",
|
||||
"unit": "\u00b0",
|
||||
"type": "float",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 22.5,
|
||||
"minimum_value": "0",
|
||||
"maximum_value": "360",
|
||||
"resolve": "min(extruderValues('interlocking_orientation'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_beam_layer_count":
|
||||
{
|
||||
"label": "Interlocking Beam Layer Count",
|
||||
"description": "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects.",
|
||||
"type": "int",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 2,
|
||||
"minimum_value": "1",
|
||||
"maximum_value_warning": "50",
|
||||
"resolve": "max(extruderValues('interlocking_beam_layer_count'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_depth":
|
||||
{
|
||||
"label": "Interlocking Depth",
|
||||
"description": "The distance from the boundary between models to generate interlocking structure, measured in cells. Too few cells will result in poor adhesion.",
|
||||
"type": "int",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 2,
|
||||
"minimum_value": "1",
|
||||
"maximum_value": "10",
|
||||
"maximum_value_warning": "5",
|
||||
"resolve": "max(extruderValues('interlocking_depth'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_boundary_avoidance":
|
||||
{
|
||||
"label": "Interlocking Boundary Avoidance",
|
||||
"description": "The distance from the outside of a model where interlocking structures will not be generated, measured in cells.",
|
||||
"type": "int",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 2,
|
||||
"minimum_value": "0",
|
||||
"minimum_value_warning": "resolveOrValue('interlocking_depth')",
|
||||
"maximum_value": "10",
|
||||
"maximum_value_warning": "5",
|
||||
"resolve": "max(extruderValues('interlocking_boundary_avoidance'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -7947,88 +8043,6 @@
|
||||
"settable_per_mesh": true,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_enable":
|
||||
{
|
||||
"label": "Generate Interlocking Structure",
|
||||
"description": "At the locations where models touch, generate an interlocking beam structure. This improves the adhesion between models, especially models printed in different materials.",
|
||||
"type": "bool",
|
||||
"enabled": "extruders_enabled_count > 1",
|
||||
"default_value": false,
|
||||
"resolve": "(extruders_enabled_count > 1) and any(extruderValues('interlocking_enable'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_beam_width":
|
||||
{
|
||||
"label": "Interlocking Beam Width",
|
||||
"description": "The width of the interlocking structure beams.",
|
||||
"type": "float",
|
||||
"unit": "mm",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 0.8,
|
||||
"value": "2 * wall_line_width_0",
|
||||
"minimum_value": "min_odd_wall_line_width",
|
||||
"maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)",
|
||||
"maximum_value_warning": "max(extruderValues('wall_line_width_0')) * 6",
|
||||
"settable_per_mesh": true,
|
||||
"settable_per_extruder": true
|
||||
},
|
||||
"interlocking_orientation":
|
||||
{
|
||||
"label": "Interlocking Structure Orientation",
|
||||
"description": "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects.",
|
||||
"unit": "\u00b0",
|
||||
"type": "float",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 22.5,
|
||||
"minimum_value": "0",
|
||||
"maximum_value": "360",
|
||||
"resolve": "min(extruderValues('interlocking_orientation'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_beam_layer_count":
|
||||
{
|
||||
"label": "Interlocking Beam Layer Count",
|
||||
"description": "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects.",
|
||||
"type": "int",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 2,
|
||||
"minimum_value": "1",
|
||||
"maximum_value_warning": "50",
|
||||
"resolve": "max(extruderValues('interlocking_beam_layer_count'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_depth":
|
||||
{
|
||||
"label": "Interlocking Depth",
|
||||
"description": "The distance from the boundary between models to generate interlocking structure, measured in cells. Too few cells will result in poor adhesion.",
|
||||
"type": "int",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 2,
|
||||
"minimum_value": "1",
|
||||
"maximum_value": "10",
|
||||
"maximum_value_warning": "5",
|
||||
"resolve": "max(extruderValues('interlocking_depth'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"interlocking_boundary_avoidance":
|
||||
{
|
||||
"label": "Interlocking Boundary Avoidance",
|
||||
"description": "The distance from the outside of a model where interlocking structures will not be generated, measured in cells.",
|
||||
"type": "int",
|
||||
"enabled": "extruders_enabled_count > 1 and resolveOrValue('interlocking_enable')",
|
||||
"default_value": 2,
|
||||
"minimum_value": "0",
|
||||
"minimum_value_warning": "resolveOrValue('interlocking_depth')",
|
||||
"maximum_value": "10",
|
||||
"maximum_value_warning": "5",
|
||||
"resolve": "max(extruderValues('interlocking_boundary_avoidance'))",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false
|
||||
},
|
||||
"support_skip_some_zags":
|
||||
{
|
||||
"label": "Break Up Support In Chunks",
|
||||
|
@ -10,6 +10,6 @@
|
||||
"overrides":
|
||||
{
|
||||
"retraction_amount": { "default_value": 5 },
|
||||
"retraction_speed": { "value": "machine_max_feedrate_e" }
|
||||
"retraction_speed": { "value": "resolveOrValue('machine_max_feedrate_e')" }
|
||||
}
|
||||
}
|
@ -52,15 +52,13 @@
|
||||
"ultimaker_rapidrinse",
|
||||
"ultimaker_sr30",
|
||||
"ultimaker_petg",
|
||||
"ultimaker_metallic_pla",
|
||||
"basf_",
|
||||
"jabil_",
|
||||
"polymaker_",
|
||||
"ultimaker_rapidrinse",
|
||||
"ultimaker_sr30",
|
||||
"ultimaker_petg",
|
||||
"ultimaker_pva",
|
||||
"ultimaker_metallic_pla"
|
||||
"ultimaker_pva"
|
||||
],
|
||||
"has_machine_quality": true,
|
||||
"has_materials": true,
|
||||
|
@ -53,8 +53,7 @@
|
||||
"ultimaker_pva",
|
||||
"ultimaker_rapidrinse",
|
||||
"ultimaker_sr30",
|
||||
"ultimaker_petg",
|
||||
"ultimaker_metallic_pla"
|
||||
"ultimaker_petg"
|
||||
],
|
||||
"has_machine_quality": true,
|
||||
"has_materials": true,
|
||||
|
@ -0,0 +1,42 @@
|
||||
[general]
|
||||
definition = ultimaker_sketch_sprint
|
||||
name = Visual
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = visual
|
||||
is_experimental = True
|
||||
material = ultimaker_pla_175
|
||||
quality_type = draft
|
||||
setting_version = 24
|
||||
type = intent
|
||||
variant = 0.4mm
|
||||
|
||||
[values]
|
||||
acceleration_roofing = 1500
|
||||
acceleration_wall_0_roofing = 1500
|
||||
acceleration_wall_x_roofing = 1500
|
||||
cool_min_temperature = 220.0
|
||||
hole_xy_offset = 0.2
|
||||
hole_xy_offset_max_diameter = 3
|
||||
inset_direction = inside_out
|
||||
line_width = 0.4
|
||||
material_final_print_temperature = =material_print_temperature
|
||||
material_initial_print_temperature = =material_print_temperature
|
||||
material_print_temperature = 220
|
||||
min_bead_width = 0.34
|
||||
min_wall_line_width = 0.34
|
||||
roofing_line_width = 0.35
|
||||
roofing_monotonic = False
|
||||
roofing_pattern = lines
|
||||
skin_monotonic = False
|
||||
skin_outline_count = 0
|
||||
skin_overlap = 25
|
||||
small_feature_max_length = 25
|
||||
small_feature_speed_factor = 40
|
||||
small_hole_max_size = 4.5
|
||||
small_skin_width = 4
|
||||
speed_roofing = 100
|
||||
wall_line_width_x = 0.4
|
||||
z_seam_type = back
|
||||
|
@ -0,0 +1,42 @@
|
||||
[general]
|
||||
definition = ultimaker_sketch_sprint
|
||||
name = Visual
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = visual
|
||||
is_experimental = True
|
||||
material = ultimaker_tough_pla_175
|
||||
quality_type = draft
|
||||
setting_version = 24
|
||||
type = intent
|
||||
variant = 0.4mm
|
||||
|
||||
[values]
|
||||
acceleration_roofing = 1500
|
||||
acceleration_wall_0_roofing = 1500
|
||||
acceleration_wall_x_roofing = 1500
|
||||
cool_min_temperature = 220.0
|
||||
hole_xy_offset = 0.2
|
||||
hole_xy_offset_max_diameter = 3
|
||||
inset_direction = inside_out
|
||||
line_width = 0.4
|
||||
material_final_print_temperature = =material_print_temperature
|
||||
material_initial_print_temperature = =material_print_temperature
|
||||
material_print_temperature = 220
|
||||
min_bead_width = 0.34
|
||||
min_wall_line_width = 0.34
|
||||
roofing_line_width = 0.35
|
||||
roofing_monotonic = False
|
||||
roofing_pattern = lines
|
||||
skin_monotonic = False
|
||||
skin_outline_count = 0
|
||||
skin_overlap = 25
|
||||
small_feature_max_length = 25
|
||||
small_feature_speed_factor = 40
|
||||
small_hole_max_size = 4.5
|
||||
small_skin_width = 4
|
||||
speed_roofing = 100
|
||||
wall_line_width_x = 0.4
|
||||
z_seam_type = back
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018 Ultimaker B.V.
|
||||
// Copyright (c) 2025 UltiMaker
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.7
|
||||
@ -12,7 +12,7 @@ Button
|
||||
id: configurationItem
|
||||
|
||||
property var configuration: null
|
||||
hoverEnabled: isValidMaterial
|
||||
hoverEnabled: isValidMaterial && isValidCore
|
||||
|
||||
property bool isValidMaterial:
|
||||
{
|
||||
@ -25,7 +25,6 @@ Button
|
||||
for (var index in extruderConfigurations)
|
||||
{
|
||||
var name = extruderConfigurations[index].material ? extruderConfigurations[index].material.name : ""
|
||||
|
||||
if (name == "" || name == "Unknown")
|
||||
{
|
||||
return false
|
||||
@ -34,6 +33,25 @@ Button
|
||||
return true
|
||||
}
|
||||
|
||||
property bool isValidCore:
|
||||
{
|
||||
if (configuration === null)
|
||||
{
|
||||
return false
|
||||
}
|
||||
var extruderConfigurations = configuration.extruderConfigurations
|
||||
var coresList = configuration.validCoresForPrinterType
|
||||
for (var index in extruderConfigurations)
|
||||
{
|
||||
var name = extruderConfigurations[index].hotendID ? extruderConfigurations[index].hotendID : ""
|
||||
if (name != "" && ! coresList.includes(name))
|
||||
{
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
color: parent.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button")
|
||||
@ -60,7 +78,7 @@ Button
|
||||
right: parent.right
|
||||
rightMargin: UM.Theme.getSize("wide_margin").width
|
||||
}
|
||||
height: childrenRect.height
|
||||
height: unknownMaterial.visible ? unknownMaterial.height : (repeater.count > 0 ? repeater.itemAt(0).height : 0)
|
||||
spacing: UM.Theme.getSize("default_margin").width
|
||||
|
||||
Repeater
|
||||
@ -72,21 +90,20 @@ Button
|
||||
{
|
||||
width: Math.round(parent.width / (configuration !== null ? configuration.extruderConfigurations.length : 1))
|
||||
printCoreConfiguration: modelData
|
||||
visible: configurationItem.isValidMaterial
|
||||
visible: configurationItem.isValidMaterial && configurationItem.isValidCore
|
||||
}
|
||||
}
|
||||
|
||||
// Unknown material
|
||||
// Unknown material or core ('variant')
|
||||
Item
|
||||
{
|
||||
id: unknownMaterial
|
||||
height: unknownMaterialMessage.height + UM.Theme.getSize("thin_margin").width / 2
|
||||
height: unknownMaterialMessage.height
|
||||
width: parent.width
|
||||
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: UM.Theme.getSize("thin_margin").width / 2
|
||||
|
||||
visible: !configurationItem.isValidMaterial
|
||||
visible: ! (configurationItem.isValidMaterial && configurationItem.isValidCore)
|
||||
|
||||
UM.ColorImage
|
||||
{
|
||||
@ -102,13 +119,9 @@ Button
|
||||
UM.Label
|
||||
{
|
||||
id: unknownMaterialMessage
|
||||
text:
|
||||
{
|
||||
if (configuration === null)
|
||||
{
|
||||
return ""
|
||||
}
|
||||
|
||||
function whenUnknownMaterial()
|
||||
{
|
||||
var extruderConfigurations = configuration.extruderConfigurations
|
||||
var unknownMaterials = []
|
||||
for (var index in extruderConfigurations)
|
||||
@ -135,9 +148,47 @@ Button
|
||||
|
||||
unknownMaterials = "<b>" + unknownMaterials + "</b>"
|
||||
var draftResult = catalog.i18nc("@label", "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile.");
|
||||
var result = draftResult.arg(unknownMaterials).arg("<a href=' '>" + catalog.i18nc("@label","Marketplace") + "</a> ")
|
||||
return draftResult.arg(unknownMaterials).arg("<a href=' '>" + catalog.i18nc("@label","Marketplace") + "</a> ")
|
||||
}
|
||||
|
||||
return result
|
||||
function whenMismatchedCore()
|
||||
{
|
||||
var extruderConfigurations = configuration.extruderConfigurations
|
||||
var coresList = configuration.validCoresForPrinterType
|
||||
var mismatchedCores = []
|
||||
for (var index in extruderConfigurations)
|
||||
{
|
||||
var name = extruderConfigurations[index].hotendID ? extruderConfigurations[index].hotendID : ""
|
||||
if (name != "" && ! coresList.includes(name))
|
||||
{
|
||||
mismatchedCores.push(name)
|
||||
}
|
||||
}
|
||||
|
||||
mismatchedCores = "<b>" + mismatchedCores + "</b>"
|
||||
var draftResult = catalog.i18nc("@label", "This configuration is not available because there is a mismatch or other problem with core-type %1. Please visit %2 to check which cores this printer-type supports w.r.t. new slices.");
|
||||
return draftResult.arg(mismatchedCores).arg("<a href=' '>" + catalog.i18nc("@label","WEBSITE") + "</a> ")
|
||||
}
|
||||
|
||||
text:
|
||||
{
|
||||
if (configuration === null)
|
||||
{
|
||||
return ""
|
||||
}
|
||||
|
||||
var extruderConfigurations = configuration.extruderConfigurations
|
||||
var perExtruder = []
|
||||
for (var index in extruderConfigurations)
|
||||
{
|
||||
var matName = extruderConfigurations[index].material ? extruderConfigurations[index].material.name : ""
|
||||
var coreName = extruderConfigurations[index].hotendID ? extruderConfigurations[index].hotendID : ""
|
||||
perExtruder.push(` [${coreName}/${matName}]`)
|
||||
}
|
||||
|
||||
var configsStr = "<i>" + perExtruder + "</i>"
|
||||
var warnStr = isValidMaterial ? whenMismatchedCore() : whenUnknownMaterial()
|
||||
return configsStr + "<br/>" + warnStr
|
||||
}
|
||||
width: extruderRow.width
|
||||
|
||||
@ -225,7 +276,7 @@ Button
|
||||
|
||||
onClicked:
|
||||
{
|
||||
if(isValidMaterial)
|
||||
if (isValidMaterial && isValidCore)
|
||||
{
|
||||
toggleContent()
|
||||
Cura.MachineManager.applyRemoteConfiguration(configuration)
|
||||
|
@ -669,12 +669,12 @@ UM.PreferencesPage
|
||||
{
|
||||
width: childrenRect.width
|
||||
height: childrenRect.height
|
||||
text: catalog.i18nc("@info:tooltip", "Should the Y axis of the translate toolhandle be flipped?")
|
||||
text: catalog.i18nc("@info:tooltip", "Should the Y axis of the translate toolhandle be flipped? This will only affect model's Y coordinate, all other settings such as machine Printhead settings are unaffected and still behave as before.")
|
||||
|
||||
UM.CheckBox
|
||||
{
|
||||
id: flipToolhandleYCheckbox
|
||||
text: catalog.i18nc("@option:check", "Flip toolhandle Y axis")
|
||||
text: catalog.i18nc("@option:check", "Flip model's toolhandle Y axis (restart required)")
|
||||
checked: boolCheck(UM.Preferences.getValue("tool/flip_y_axis_tool_handle"))
|
||||
onCheckedChanged: UM.Preferences.setValue("tool/flip_y_axis_tool_handle", checked)
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import "."
|
||||
Item
|
||||
{
|
||||
id: base
|
||||
height: enabled ? UM.Theme.getSize("section").height + UM.Theme.getSize("narrow_margin").height : 0
|
||||
height: enabled ? Math.max(UM.Theme.getSize("section").height, label.height) + UM.Theme.getSize("narrow_margin").height : 0
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
|
@ -0,0 +1,15 @@
|
||||
[general]
|
||||
definition = ultimaker_sketch
|
||||
name = Fast
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = ultimaker_metallic_pla_175
|
||||
quality_type = draft
|
||||
setting_version = 24
|
||||
type = quality
|
||||
variant = 0.4mm
|
||||
weight = -2
|
||||
|
||||
[values]
|
||||
|
@ -0,0 +1,15 @@
|
||||
[general]
|
||||
definition = ultimaker_sketch_large
|
||||
name = Fast
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = ultimaker_metallic_pla_175
|
||||
quality_type = draft
|
||||
setting_version = 24
|
||||
type = quality
|
||||
variant = 0.4mm
|
||||
weight = -2
|
||||
|
||||
[values]
|
||||
|
@ -0,0 +1,28 @@
|
||||
[general]
|
||||
definition = ultimaker_sketch_sprint
|
||||
name = Fast
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = ultimaker_metallic_pla_175
|
||||
quality_type = draft
|
||||
setting_version = 24
|
||||
type = quality
|
||||
variant = 0.4mm
|
||||
weight = -2
|
||||
|
||||
[values]
|
||||
cool_min_temperature = 230
|
||||
infill_angles = [45,45,45,45,45,135,135,135,135,135]
|
||||
material_final_print_temperature = 230
|
||||
material_initial_print_temperature = 230
|
||||
speed_print = 125
|
||||
speed_roofing = 100
|
||||
speed_support_bottom = 100
|
||||
speed_support_interface = 125
|
||||
speed_topbottom = 100
|
||||
speed_wall = 75
|
||||
speed_wall_x = 100
|
||||
support_material_flow = 92
|
||||
wall_overhang_speed_factor = 23
|
||||
|
@ -133,6 +133,7 @@ prime_tower_mode
|
||||
prime_tower_position_x
|
||||
prime_tower_position_y
|
||||
prime_tower_brim_enable
|
||||
interlocking_enable
|
||||
|
||||
[meshfix]
|
||||
|
||||
@ -144,7 +145,6 @@ magic_spiralize
|
||||
smooth_spiralized_contours
|
||||
|
||||
[experimental]
|
||||
interlocking_enable
|
||||
conical_overhang_enabled
|
||||
support_conical_enabled
|
||||
adaptive_layer_height_enabled
|
||||
|
@ -56,6 +56,7 @@ adhesion_extruder_nr
|
||||
prime_tower_enable
|
||||
prime_tower_position_x
|
||||
prime_tower_position_y
|
||||
interlocking_enable
|
||||
|
||||
[meshfix]
|
||||
|
||||
|
@ -379,6 +379,12 @@ prime_tower_min_shell_thickness
|
||||
ooze_shield_enabled
|
||||
ooze_shield_angle
|
||||
ooze_shield_dist
|
||||
interlocking_enable
|
||||
interlocking_beam_width
|
||||
interlocking_orientation
|
||||
interlocking_beam_layer_count
|
||||
interlocking_dept
|
||||
interlocking_boundary_avoidance
|
||||
|
||||
[meshfix]
|
||||
meshfix_union_all
|
||||
@ -429,12 +435,6 @@ roofing_monotonic
|
||||
roofing_angles
|
||||
infill_enable_travel_optimization
|
||||
material_flow_temp_graph
|
||||
interlocking_enable
|
||||
interlocking_beam_width
|
||||
interlocking_orientation
|
||||
interlocking_beam_layer_count
|
||||
interlocking_dept
|
||||
interlocking_boundary_avoidance
|
||||
support_skip_some_zags
|
||||
support_skip_zag_per_mm
|
||||
support_zag_skip_count
|
||||
|
@ -567,7 +567,7 @@
|
||||
"section_icon_column": [2.5, 2.5],
|
||||
|
||||
"setting": [25.0, 1.8],
|
||||
"setting_control": [11.0, 2.0],
|
||||
"setting_control": [9.0, 2.0],
|
||||
"setting_control_radius": [0.15, 0.15],
|
||||
"setting_control_depth_margin": [1.4, 0.0],
|
||||
"setting_unit_margin": [0.5, 0.5],
|
||||
|
Loading…
x
Reference in New Issue
Block a user