Merge branch 'main' into CURA-12352_different-minimum-layer-time-for-layers-that-contain-overhangs

This commit is contained in:
HellAholic 2025-02-03 10:05:10 +01:00 committed by GitHub
commit 4be40f770c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 361 additions and 125 deletions

View File

@ -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 }}',

View File

@ -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:

View File

@ -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)

View File

@ -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
)

View File

@ -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"

View File

@ -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

View File

@ -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")

View File

@ -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,
}
]
},

View File

@ -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"))

View File

@ -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",

View File

@ -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')" }
}
}

View File

@ -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,

View File

@ -53,8 +53,7 @@
"ultimaker_pva",
"ultimaker_rapidrinse",
"ultimaker_sr30",
"ultimaker_petg",
"ultimaker_metallic_pla"
"ultimaker_petg"
],
"has_machine_quality": true,
"has_materials": true,

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)
}

View File

@ -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

View File

@ -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]

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -56,6 +56,7 @@ adhesion_extruder_nr
prime_tower_enable
prime_tower_position_x
prime_tower_position_y
interlocking_enable
[meshfix]

View File

@ -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

View File

@ -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],