Merge branch 'master' into fix_tests_cura_engine_backend

This commit is contained in:
Ian Paschal 2018-07-09 12:38:54 +02:00 committed by GitHub
commit 1c1b45541f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 152 additions and 181 deletions

View file

@ -169,8 +169,6 @@ class ThreeMFReader(MeshReader):
archive = zipfile.ZipFile(file_name, "r") archive = zipfile.ZipFile(file_name, "r")
self._base_name = os.path.basename(file_name) self._base_name = os.path.basename(file_name)
parser = Savitar.ThreeMFParser() parser = Savitar.ThreeMFParser()
with open("/tmp/test.xml", "wb") as f:
f.write(archive.open("3D/3dmodel.model").read())
scene_3mf = parser.parse(archive.open("3D/3dmodel.model").read()) scene_3mf = parser.parse(archive.open("3D/3dmodel.model").read())
self._unit = scene_3mf.getUnit() self._unit = scene_3mf.getUnit()
for node in scene_3mf.getSceneNodes(): for node in scene_3mf.getSceneNodes():

View file

@ -41,39 +41,32 @@ class StartJobResult(IntEnum):
## Formatter class that handles token expansion in start/end gcode ## Formatter class that handles token expansion in start/end gcode
class GcodeStartEndFormatter(Formatter): class GcodeStartEndFormatter(Formatter):
def get_value(self, key: str, *args: str, **kwargs) -> str: #type: ignore # [CodeStyle: get_value is an overridden function from the Formatter class] def get_value(self, key: str, *args: str, default_extruder_nr: str = "-1", **kwargs) -> str: #type: ignore # [CodeStyle: get_value is an overridden function from the Formatter class]
# The kwargs dictionary contains a dictionary for each stack (with a string of the extruder_nr as their key), # The kwargs dictionary contains a dictionary for each stack (with a string of the extruder_nr as their key),
# and a default_extruder_nr to use when no extruder_nr is specified # and a default_extruder_nr to use when no extruder_nr is specified
if isinstance(key, str): extruder_nr = int(default_extruder_nr)
key_fragments = [fragment.strip() for fragment in key.split(",")]
if len(key_fragments) == 2:
try: try:
extruder_nr = int(kwargs["default_extruder_nr"]) extruder_nr = int(key_fragments[1])
except ValueError: except ValueError:
extruder_nr = -1
key_fragments = [fragment.strip() for fragment in key.split(",")]
if len(key_fragments) == 2:
try: try:
extruder_nr = int(key_fragments[1]) extruder_nr = int(kwargs["-1"][key_fragments[1]]) # get extruder_nr values from the global stack #TODO: How can you ever provide the '-1' kwarg?
except ValueError: except (KeyError, ValueError):
try: # either the key does not exist, or the value is not an int
extruder_nr = int(kwargs["-1"][key_fragments[1]]) # get extruder_nr values from the global stack Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end g-code, using global stack", key_fragments[1], key_fragments[0])
except (KeyError, ValueError): elif len(key_fragments) != 1:
# either the key does not exist, or the value is not an int
Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end g-code, using global stack", key_fragments[1], key_fragments[0])
elif len(key_fragments) != 1:
Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key)
return "{" + str(key) + "}"
key = key_fragments[0]
try:
return kwargs[str(extruder_nr)][key]
except KeyError:
Logger.log("w", "Unable to replace '%s' placeholder in start/end g-code", key)
return "{" + key + "}"
else:
Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key) Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key)
return "{" + str(key) + "}" return "{" + key + "}"
key = key_fragments[0]
try:
return kwargs[str(extruder_nr)][key]
except KeyError:
Logger.log("w", "Unable to replace '%s' placeholder in start/end g-code", key)
return "{" + key + "}"
## Job class that builds up the message of scene data to send to CuraEngine. ## Job class that builds up the message of scene data to send to CuraEngine.
@ -237,8 +230,8 @@ class StartSliceJob(Job):
if has_model_with_disabled_extruders: if has_model_with_disabled_extruders:
self.setResult(StartJobResult.ObjectsWithDisabledExtruder) self.setResult(StartJobResult.ObjectsWithDisabledExtruder)
associated_disabled_extruders_message = [str(c) for c in sorted([int(p) + 1 for p in associated_disabled_extruders])] associated_disabled_extruders = {str(c) for c in sorted([int(p) + 1 for p in associated_disabled_extruders])}
self.setMessage(", ".join(associated_disabled_extruders_message)) self.setMessage(", ".join(associated_disabled_extruders))
return return
# There are cases when there is nothing to slice. This can happen due to one at a time slicing not being # There are cases when there is nothing to slice. This can happen due to one at a time slicing not being

View file

@ -105,9 +105,12 @@ class Script:
if m is None: if m is None:
return default return default
try: try:
return float(m.group(0)) return int(m.group(0))
except: except ValueError: #Not an integer.
return default try:
return float(m.group(0))
except ValueError: #Not a number at all.
return default
## Convenience function to produce a line of g-code. ## Convenience function to produce a line of g-code.
# #

View file

@ -1,5 +1,9 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from ..Script import Script from ..Script import Script
# from cura.Settings.ExtruderManager import ExtruderManager
from UM.Application import Application #To get the current printer's settings.
class PauseAtHeight(Script): class PauseAtHeight(Script):
def __init__(self): def __init__(self):
@ -136,6 +140,10 @@ class PauseAtHeight(Script):
layers_started = False layers_started = False
redo_layers = self.getSettingValueByKey("redo_layers") redo_layers = self.getSettingValueByKey("redo_layers")
standby_temperature = self.getSettingValueByKey("standby_temperature") standby_temperature = self.getSettingValueByKey("standby_temperature")
firmware_retract = Application.getInstance().getGlobalContainerStack().getProperty("machine_firmware_retract", "value")
control_temperatures = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_temp_enabled", "value")
is_griffin = False
# T = ExtruderManager.getInstance().getActiveExtruderStack().getProperty("material_print_temperature", "value") # T = ExtruderManager.getInstance().getActiveExtruderStack().getProperty("material_print_temperature", "value")
@ -153,6 +161,8 @@ class PauseAtHeight(Script):
# Scroll each line of instruction for each layer in the G-code # Scroll each line of instruction for each layer in the G-code
for line in lines: for line in lines:
if ";FLAVOR:Griffin" in line:
is_griffin = True
# Fist positive layer reached # Fist positive layer reached
if ";LAYER:0" in line: if ";LAYER:0" in line:
layers_started = True layers_started = True
@ -162,12 +172,12 @@ class PauseAtHeight(Script):
#Track the latest printing temperature in order to resume at the correct temperature. #Track the latest printing temperature in order to resume at the correct temperature.
if line.startswith("T"): if line.startswith("T"):
current_t = int(self.getValue(line, "T")) current_t = self.getValue(line, "T")
m = self.getValue(line, "M") m = self.getValue(line, "M")
if m is not None and (int(m) == 104 or int(m) == 109) and self.getValue(line, "S") is not None: if m is not None and (m == 104 or m == 109) and self.getValue(line, "S") is not None:
extruder = current_t extruder = current_t
if self.getValue(line, "T") is not None: if self.getValue(line, "T") is not None:
extruder = int(self.getValue(line, "T")) extruder = self.getValue(line, "T")
target_temperature[extruder] = self.getValue(line, "S") target_temperature[extruder] = self.getValue(line, "S")
if not layers_started: if not layers_started:
@ -252,52 +262,66 @@ class PauseAtHeight(Script):
else: else:
prepend_gcode += ";current layer: {layer}\n".format(layer = current_layer) prepend_gcode += ";current layer: {layer}\n".format(layer = current_layer)
# Retraction if not is_griffin:
prepend_gcode += self.putValue(M = 83) + "\n" # Retraction
if retraction_amount != 0: prepend_gcode += self.putValue(M = 83) + "\n"
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n" if retraction_amount != 0:
if firmware_retract: #Can't set the distance directly to what the user wants. We have to choose ourselves.
retraction_count = 1 if control_temperatures else 3 #Retract more if we don't control the temperature.
for i in range(retraction_count):
prepend_gcode += self.putValue(G = 10) + "\n"
else:
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
# Move the head away # Move the head away
prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n" prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
# This line should be ok # This line should be ok
prepend_gcode += self.putValue(G = 1, X = park_x, Y = park_y, F = 9000) + "\n" prepend_gcode += self.putValue(G = 1, X = park_x, Y = park_y, F = 9000) + "\n"
if current_z < 15: if current_z < 15:
prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + "\n" prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + "\n"
# Set extruder standby temperature if control_temperatures:
prepend_gcode += self.putValue(M = 104, S = standby_temperature) + "; standby temperature\n" # Set extruder standby temperature
prepend_gcode += self.putValue(M = 104, S = standby_temperature) + "; standby temperature\n"
# Wait till the user continues printing # Wait till the user continues printing
prepend_gcode += self.putValue(M = 0) + ";Do the actual pause\n" prepend_gcode += self.putValue(M = 0) + ";Do the actual pause\n"
# Set extruder resume temperature if not is_griffin:
prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n" if control_temperatures:
# Set extruder resume temperature
prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n"
# Push the filament back, # Push the filament back,
if retraction_amount != 0: if retraction_amount != 0:
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n" prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
# Optionally extrude material # Optionally extrude material
if extrude_amount != 0: if extrude_amount != 0:
prepend_gcode += self.putValue(G = 1, E = extrude_amount, F = extrude_speed * 60) + "\n" prepend_gcode += self.putValue(G = 1, E = extrude_amount, F = extrude_speed * 60) + "\n"
# and retract again, the properly primes the nozzle # and retract again, the properly primes the nozzle
# when changing filament. # when changing filament.
if retraction_amount != 0: if retraction_amount != 0:
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n" prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
# Move the head back # Move the head back
prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n" prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n" prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n"
if retraction_amount != 0: if retraction_amount != 0:
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n" if firmware_retract: #Can't set the distance directly to what the user wants. We have to choose ourselves.
prepend_gcode += self.putValue(G = 1, F = 9000) + "\n" retraction_count = 1 if control_temperatures else 3 #Retract more if we don't control the temperature.
prepend_gcode += self.putValue(M = 82) + "\n" for i in range(retraction_count):
prepend_gcode += self.putValue(G = 11) + "\n"
else:
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
prepend_gcode += self.putValue(G = 1, F = 9000) + "\n"
prepend_gcode += self.putValue(M = 82) + "\n"
# reset extrude value to pre pause value # reset extrude value to pre pause value
prepend_gcode += self.putValue(G = 92, E = current_e) + "\n" prepend_gcode += self.putValue(G = 92, E = current_e) + "\n"
layer = prepend_gcode + layer layer = prepend_gcode + layer

View file

@ -423,7 +423,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
elapsed_time = int(time() - self._print_start_time) elapsed_time = int(time() - self._print_start_time)
print_job = self._printers[0].activePrintJob print_job = self._printers[0].activePrintJob
if print_job is None: if print_job is None:
print_job = PrintJobOutputModel(output_controller = GenericOutputController(self), name= Application.getInstance().getPrintInformation().jobName) print_job = PrintJobOutputModel(output_controller = GenericOutputController(self), name= CuraApplication.getInstance().getPrintInformation().jobName)
print_job.updateState("printing") print_job.updateState("printing")
self._printers[0].updateActivePrintJob(print_job) self._printers[0].updateActivePrintJob(print_job)

View file

@ -6,6 +6,7 @@ import io
from UM.VersionUpgrade import VersionUpgrade from UM.VersionUpgrade import VersionUpgrade
deleted_settings = {"prime_tower_wall_thickness", "dual_pre_wipe", "prime_tower_purge_volume"}
## Upgrades configurations from the state they were in at version 3.4 to the ## Upgrades configurations from the state they were in at version 3.4 to the
# state they should be in at version 4.0. # state they should be in at version 4.0.
@ -68,6 +69,11 @@ class VersionUpgrade34to40(VersionUpgrade):
parser["metadata"]["setting_version"] = "5" parser["metadata"]["setting_version"] = "5"
self._resetConcentric3DInfillPattern(parser) self._resetConcentric3DInfillPattern(parser)
if "values" in parser:
for deleted_setting in deleted_settings:
if deleted_setting not in parser["values"]:
continue
del parser["values"][deleted_setting]
result = io.StringIO() result = io.StringIO()
parser.write(result) parser.write(result)

View file

@ -54,7 +54,6 @@
"prime_tower_position_y": { "default_value": 178 }, "prime_tower_position_y": { "default_value": 178 },
"prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_wipe_enabled": { "default_value": false },
"prime_tower_min_volume": { "default_value": 50 }, "prime_tower_min_volume": { "default_value": 50 },
"dual_pre_wipe": { "default_value": false },
"prime_blob_enable": { "enabled": true }, "prime_blob_enable": { "enabled": true },

View file

@ -54,7 +54,6 @@
"prime_tower_position_y": { "default_value": 178 }, "prime_tower_position_y": { "default_value": 178 },
"prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_wipe_enabled": { "default_value": false },
"prime_tower_min_volume": { "default_value": 50 }, "prime_tower_min_volume": { "default_value": 50 },
"dual_pre_wipe": { "default_value": false },
"prime_blob_enable": { "enabled": true }, "prime_blob_enable": { "enabled": true },

View file

@ -53,7 +53,6 @@
"prime_tower_position_y": { "default_value": 178 }, "prime_tower_position_y": { "default_value": 178 },
"prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_wipe_enabled": { "default_value": false },
"prime_tower_min_volume": { "default_value": 50 }, "prime_tower_min_volume": { "default_value": 50 },
"dual_pre_wipe": { "default_value": false },
"prime_blob_enable": { "enabled": true }, "prime_blob_enable": { "enabled": true },

View file

@ -44,7 +44,7 @@
"material_print_temp_wait": { "default_value": false }, "material_print_temp_wait": { "default_value": false },
"material_bed_temp_wait": { "default_value": false }, "material_bed_temp_wait": { "default_value": false },
"prime_tower_enable": { "default_value": false }, "prime_tower_enable": { "default_value": false },
"prime_tower_wall_thickness": { "resolve": 0.7 }, "prime_tower_min_volume": { "value": "0.7" },
"prime_tower_size": { "value": 24.0 }, "prime_tower_size": { "value": 24.0 },
"prime_tower_position_x": { "value": 125 }, "prime_tower_position_x": { "value": 125 },
"prime_tower_position_y": { "value": 70 }, "prime_tower_position_y": { "value": 70 },

View file

@ -4247,6 +4247,27 @@
} }
} }
}, },
"support_fan_enable":
{
"label": "Fan Speed Override",
"description": "When enabled, the print cooling fan speed is altered for the skin regions immediately above the support.",
"type": "bool",
"default_value": false,
"enabled": "support_enable",
"settable_per_mesh": false
},
"support_supported_skin_fan_speed":
{
"label": "Supported Skin Fan Speed",
"description": "Percentage fan speed to use when printing the skin regions immediately above the support. Using a high fan speed can make the support easier to remove.",
"unit": "%",
"minimum_value": "0",
"maximum_value": "100",
"default_value": 100,
"type": "float",
"enabled": "support_enable and support_fan_enable",
"settable_per_mesh": false
},
"support_use_towers": "support_use_towers":
{ {
"label": "Use Towers", "label": "Use Towers",
@ -4992,32 +5013,12 @@
"description": "The minimum volume for each layer of the prime tower in order to purge enough material.", "description": "The minimum volume for each layer of the prime tower in order to purge enough material.",
"unit": "mm³", "unit": "mm³",
"type": "float", "type": "float",
"default_value": 10, "default_value": 5,
"value": "8.48 if prime_tower_circular else 10",
"minimum_value": "0", "minimum_value": "0",
"maximum_value_warning": "round((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height'), 2) if prime_tower_circular else resolveOrValue('prime_tower_size') ** 2 * resolveOrValue('layer_height')", "maximum_value_warning": "((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') if prime_tower_circular else resolveOrValue('prime_tower_size') ** 2 * resolveOrValue('layer_height')) - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume",
"enabled": "resolveOrValue('prime_tower_enable')", "enabled": "resolveOrValue('prime_tower_enable')",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true
"children":
{
"prime_tower_wall_thickness":
{
"label": "Prime Tower Thickness",
"description": "The thickness of the hollow prime tower. A thickness larger than half the Prime Tower Minimum Volume will result in a dense prime tower.",
"unit": "mm",
"type": "float",
"default_value": 2,
"value": "round(max(2 * prime_tower_line_width, (0.5 * (prime_tower_size - math.sqrt(max(0, prime_tower_size ** 2 - 4 * prime_tower_min_volume / (3.14159 * layer_height))))) if prime_tower_circular else (0.5 * (prime_tower_size - math.sqrt(max(0, prime_tower_size ** 2 - prime_tower_min_volume / layer_height))))), 3)",
"resolve": "max(extruderValues('prime_tower_wall_thickness'))",
"minimum_value": "0.001",
"minimum_value_warning": "2 * min(extruderValues('prime_tower_line_width')) - 0.0001",
"maximum_value_warning": "prime_tower_size / 2",
"enabled": "prime_tower_enable",
"settable_per_mesh": false,
"settable_per_extruder": false
}
}
}, },
"prime_tower_position_x": "prime_tower_position_x":
{ {
@ -5072,29 +5073,6 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"dual_pre_wipe":
{
"label": "Wipe Nozzle After Switch",
"description": "After switching extruder, wipe the oozed material off of the nozzle on the first thing printed. This performs a safe slow wipe move at a place where the oozed material causes least harm to the surface quality of your print.",
"type": "bool",
"enabled": "resolveOrValue('prime_tower_enable')",
"default_value": true,
"settable_per_mesh": false,
"settable_per_extruder": true
},
"prime_tower_purge_volume":
{
"label": "Prime Tower Purge Volume",
"description": "Amount of filament to be purged when wiping on the prime tower. Purging is useful for compensating the filament lost by oozing during inactivity of the nozzle.",
"type": "float",
"enabled": "resolveOrValue('prime_tower_enable') and dual_pre_wipe",
"unit": "mm³",
"default_value": 0,
"minimum_value": "0",
"maximum_value_warning": "2.5",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"ooze_shield_enabled": "ooze_shield_enabled":
{ {
"label": "Enable Ooze Shield", "label": "Enable Ooze Shield",

View file

@ -64,7 +64,7 @@ ooze_shield_enabled = True
prime_tower_enable = False prime_tower_enable = False
prime_tower_position_x = 350 prime_tower_position_x = 350
prime_tower_position_y = 350 prime_tower_position_y = 350
prime_tower_wall_thickness = 2 prime_tower_min_volume = 18
switch_extruder_retraction_amount = 6 switch_extruder_retraction_amount = 6
switch_extruder_retraction_speeds = 60 switch_extruder_retraction_speeds = 60

View file

@ -64,7 +64,7 @@ ooze_shield_enabled = True
prime_tower_enable = False prime_tower_enable = False
prime_tower_position_x = 350 prime_tower_position_x = 350
prime_tower_position_y = 350 prime_tower_position_y = 350
prime_tower_wall_thickness = 2 prime_tower_min_volume = 18
switch_extruder_retraction_amount = 6 switch_extruder_retraction_amount = 6
switch_extruder_retraction_speeds = 60 switch_extruder_retraction_speeds = 60

View file

@ -64,7 +64,7 @@ ooze_shield_enabled = True
prime_tower_enable = False prime_tower_enable = False
prime_tower_position_x = 350 prime_tower_position_x = 350
prime_tower_position_y = 350 prime_tower_position_y = 350
prime_tower_wall_thickness = 2 prime_tower_min_volume = 18
switch_extruder_retraction_amount = 6 switch_extruder_retraction_amount = 6
switch_extruder_retraction_speeds = 60 switch_extruder_retraction_speeds = 60

View file

@ -63,7 +63,7 @@ ooze_shield_enabled = True
prime_tower_enable = False prime_tower_enable = False
prime_tower_position_x = 350 prime_tower_position_x = 350
prime_tower_position_y = 350 prime_tower_position_y = 350
prime_tower_wall_thickness = 2 prime_tower_min_volume = 18
switch_extruder_retraction_amount = 6 switch_extruder_retraction_amount = 6
switch_extruder_retraction_speeds = 60 switch_extruder_retraction_speeds = 60

View file

@ -15,9 +15,8 @@ variant = AA 0.25
cool_fan_speed = 40 cool_fan_speed = 40
infill_overlap = 15 infill_overlap = 15
material_final_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 5
prime_tower_purge_volume = 0.6
prime_tower_size = 12 prime_tower_size = 12
prime_tower_wall_thickness = 0.9 prime_tower_min_volume = 2
retraction_prime_speed = 25 retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
wall_thickness = 0.92 wall_thickness = 0.92

View file

@ -12,9 +12,8 @@ material = generic_cpe
variant = AA 0.25 variant = AA 0.25
[values] [values]
prime_tower_purge_volume = 1
prime_tower_size = 12 prime_tower_size = 12
prime_tower_wall_thickness = 0.9 prime_tower_min_volume = 2
retraction_extrusion_window = 0.5 retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55) speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)

View file

@ -16,7 +16,6 @@ material_print_temperature = =default_material_print_temperature + 10
material_initial_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10 material_final_print_temperature = =material_print_temperature - 10
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_purge_volume = 1
skin_overlap = 20 skin_overlap = 20
speed_print = 60 speed_print = 60
speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_layer_0 = =math.ceil(speed_print * 20 / 60)

View file

@ -17,7 +17,6 @@ material_print_temperature = =default_material_print_temperature + 5
material_initial_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10 material_final_print_temperature = =material_print_temperature - 10
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_purge_volume = 1
speed_print = 60 speed_print = 60
speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_layer_0 = =math.ceil(speed_print * 20 / 60)
speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60)

View file

@ -19,7 +19,6 @@ material_print_temperature = =default_material_print_temperature - 5
material_initial_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10 material_final_print_temperature = =material_print_temperature - 10
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_purge_volume = 1
speed_print = 50 speed_print = 50
speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50)

View file

@ -17,7 +17,6 @@ machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10 material_final_print_temperature = =material_print_temperature - 10
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_purge_volume = 1
speed_print = 55 speed_print = 55
speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_layer_0 = =math.ceil(speed_print * 20 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)

View file

@ -17,7 +17,6 @@ line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 15 material_print_temperature = =default_material_print_temperature + 15
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_enable = True prime_tower_enable = True
prime_tower_purge_volume = 1
speed_print = 40 speed_print = 40
speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_topbottom = =math.ceil(speed_print * 25 / 40)
speed_wall = =math.ceil(speed_print * 30 / 40) speed_wall = =math.ceil(speed_print * 30 / 40)

View file

@ -18,7 +18,6 @@ line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 20 material_print_temperature = =default_material_print_temperature + 20
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_enable = True prime_tower_enable = True
prime_tower_purge_volume = 1
speed_print = 45 speed_print = 45
speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_topbottom = =math.ceil(speed_print * 30 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall = =math.ceil(speed_print * 40 / 45)

View file

@ -18,7 +18,6 @@ line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 17 material_print_temperature = =default_material_print_temperature + 17
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_enable = True prime_tower_enable = True
prime_tower_purge_volume = 1
speed_print = 40 speed_print = 40
speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_topbottom = =math.ceil(speed_print * 25 / 40)
speed_wall = =math.ceil(speed_print * 30 / 40) speed_wall = =math.ceil(speed_print * 30 / 40)

View file

@ -29,7 +29,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 10
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -29,7 +29,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 20
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -29,7 +29,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 15
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -35,7 +35,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 10
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -36,7 +36,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 15
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -35,7 +35,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 20
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -15,9 +15,8 @@ variant = AA 0.25
cool_fan_speed = 40 cool_fan_speed = 40
infill_overlap = 15 infill_overlap = 15
material_final_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 5
prime_tower_purge_volume = 0.6
prime_tower_size = 12 prime_tower_size = 12
prime_tower_wall_thickness = 0.9 prime_tower_min_volume = 2
retraction_prime_speed = 25 retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
wall_thickness = 0.92 wall_thickness = 0.92

View file

@ -13,10 +13,9 @@ variant = AA 0.25
[values] [values]
prime_tower_size = 12 prime_tower_size = 12
prime_tower_wall_thickness = 0.9 prime_tower_min_volume = 2
retraction_extrusion_window = 0.5 retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55) speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
top_bottom_thickness = 0.8 top_bottom_thickness = 0.8
wall_thickness = 0.92 wall_thickness = 0.92
prime_tower_purge_volume = 1

View file

@ -26,4 +26,3 @@ wall_thickness = 1
infill_pattern = zigzag infill_pattern = zigzag
speed_infill = =math.ceil(speed_print * 50 / 60) speed_infill = =math.ceil(speed_print * 50 / 60)
prime_tower_purge_volume = 1

View file

@ -23,5 +23,4 @@ speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40) speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
infill_pattern = zigzag infill_pattern = zigzag
speed_infill = =math.ceil(speed_print * 50 / 60) speed_infill = =math.ceil(speed_print * 50 / 60)
prime_tower_purge_volume = 1

View file

@ -24,5 +24,4 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50)
infill_pattern = zigzag infill_pattern = zigzag
speed_infill = =math.ceil(speed_print * 40 / 50) speed_infill = =math.ceil(speed_print * 40 / 50)
prime_tower_purge_volume = 1

View file

@ -22,5 +22,4 @@ speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55)
infill_pattern = zigzag infill_pattern = zigzag
speed_infill = =math.ceil(speed_print * 45 / 55) speed_infill = =math.ceil(speed_print * 45 / 55)
prime_tower_purge_volume = 1

View file

@ -21,5 +21,4 @@ speed_print = 40
speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_topbottom = =math.ceil(speed_print * 25 / 40)
speed_wall = =math.ceil(speed_print * 30 / 40) speed_wall = =math.ceil(speed_print * 30 / 40)
jerk_travel = 50 jerk_travel = 50
prime_tower_purge_volume = 1

View file

@ -22,5 +22,4 @@ speed_topbottom = =math.ceil(speed_print * 30 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall = =math.ceil(speed_print * 40 / 45)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40) speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
jerk_travel = 50 jerk_travel = 50
prime_tower_purge_volume = 1

View file

@ -22,4 +22,3 @@ speed_topbottom = =math.ceil(speed_print * 25 / 40)
speed_wall = =math.ceil(speed_print * 30 / 40) speed_wall = =math.ceil(speed_print * 30 / 40)
jerk_travel = 50 jerk_travel = 50
prime_tower_purge_volume = 1

View file

@ -29,7 +29,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 10
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -29,7 +29,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 20
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -28,7 +28,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 15
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -33,7 +33,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 10
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -34,7 +34,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 20
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -33,7 +33,7 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_wall_thickness = =prime_tower_line_width * 2 prime_tower_min_volume = 15
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -123,7 +123,6 @@ brim_outside_only
prime_tower_enable prime_tower_enable
prime_tower_position_x prime_tower_position_x
prime_tower_position_y prime_tower_position_y
prime_tower_purge_volume
[meshfix] [meshfix]

View file

@ -291,13 +291,10 @@ prime_tower_enable
prime_tower_circular prime_tower_circular
prime_tower_size prime_tower_size
prime_tower_min_volume prime_tower_min_volume
prime_tower_wall_thickness
prime_tower_position_x prime_tower_position_x
prime_tower_position_y prime_tower_position_y
prime_tower_flow prime_tower_flow
prime_tower_wipe_enabled prime_tower_wipe_enabled
dual_pre_wipe
prime_tower_purge_volume
ooze_shield_enabled ooze_shield_enabled
ooze_shield_angle ooze_shield_angle
ooze_shield_dist ooze_shield_dist

View file

@ -40,8 +40,7 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0 multiple_mesh_overlap = 0
prime_tower_enable = False prime_tower_enable = False
prime_tower_purge_volume = 2 prime_tower_min_volume = 20
prime_tower_wall_thickness = 2.2
prime_tower_wipe_enabled = True prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0 raft_acceleration = =acceleration_layer_0
raft_airgap = 0 raft_airgap = 0

View file

@ -22,8 +22,7 @@ jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4 machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0 machine_nozzle_tip_outer_diameter = 1.0
prime_tower_purge_volume = 2 prime_tower_min_volume = 15
prime_tower_wall_thickness = 1.5
raft_base_speed = 20 raft_base_speed = 20
raft_interface_speed = 20 raft_interface_speed = 20
raft_speed = 25 raft_speed = 25

View file

@ -40,8 +40,7 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0 multiple_mesh_overlap = 0
prime_tower_enable = False prime_tower_enable = False
prime_tower_purge_volume = 2 prime_tower_min_volume = 20
prime_tower_wall_thickness = 2.2
prime_tower_wipe_enabled = True prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0 raft_acceleration = =acceleration_layer_0
raft_airgap = 0 raft_airgap = 0

View file

@ -22,8 +22,7 @@ jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4 machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0 machine_nozzle_tip_outer_diameter = 1.0
prime_tower_purge_volume = 2 prime_tower_min_volume = 15
prime_tower_wall_thickness = 1.5
raft_base_speed = 20 raft_base_speed = 20
raft_interface_speed = 20 raft_interface_speed = 20
raft_speed = 25 raft_speed = 25

View file

@ -40,8 +40,7 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0 multiple_mesh_overlap = 0
prime_tower_enable = False prime_tower_enable = False
prime_tower_purge_volume = 2 prime_tower_min_volume = 20
prime_tower_wall_thickness = 2.2
prime_tower_wipe_enabled = True prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0 raft_acceleration = =acceleration_layer_0
raft_airgap = 0 raft_airgap = 0

View file

@ -22,8 +22,7 @@ jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4 machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0 machine_nozzle_tip_outer_diameter = 1.0
prime_tower_purge_volume = 2 prime_tower_min_volume = 20
prime_tower_wall_thickness = 1.5
raft_base_speed = 20 raft_base_speed = 20
raft_interface_speed = 20 raft_interface_speed = 20
raft_speed = 25 raft_speed = 25