mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-08-05 21:13:58 -06:00
Merge branch 'master' into CURA-7427_Add_option_to_sign_in_with_different_account_while_waiting_for_printers
This commit is contained in:
commit
f6ebac6e34
10 changed files with 196 additions and 33 deletions
|
@ -108,13 +108,12 @@ class PauseAtHeight(Script):
|
|||
"type": "float",
|
||||
"default_value": 3.3333
|
||||
},
|
||||
"redo_layers":
|
||||
"redo_layer":
|
||||
{
|
||||
"label": "Redo Layers",
|
||||
"description": "Redo a number of previous layers after a pause to increases adhesion.",
|
||||
"unit": "layers",
|
||||
"type": "int",
|
||||
"default_value": 0
|
||||
"label": "Redo Layer",
|
||||
"description": "Redo the last layer before the pause, to get the filament flowing again after having oozed a bit during the pause.",
|
||||
"type": "bool",
|
||||
"default_value": false
|
||||
},
|
||||
"standby_temperature":
|
||||
{
|
||||
|
@ -160,7 +159,7 @@ class PauseAtHeight(Script):
|
|||
park_x = self.getSettingValueByKey("head_park_x")
|
||||
park_y = self.getSettingValueByKey("head_park_y")
|
||||
layers_started = False
|
||||
redo_layers = self.getSettingValueByKey("redo_layers")
|
||||
redo_layer = self.getSettingValueByKey("redo_layer")
|
||||
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")
|
||||
|
@ -264,24 +263,23 @@ class PauseAtHeight(Script):
|
|||
if current_e >= 0:
|
||||
break
|
||||
|
||||
# include a number of previous layers
|
||||
for i in range(1, redo_layers + 1):
|
||||
prev_layer = data[index - i]
|
||||
# Maybe redo the last layer.
|
||||
if redo_layer:
|
||||
prev_layer = data[index - 1]
|
||||
layer = prev_layer + layer
|
||||
|
||||
# Get extruder's absolute position at the
|
||||
# beginning of the first layer redone
|
||||
# beginning of the redone layer.
|
||||
# see https://github.com/nallath/PostProcessingPlugin/issues/55
|
||||
if i == redo_layers:
|
||||
# Get X and Y from the next layer (better position for
|
||||
# the nozzle)
|
||||
x, y = self.getNextXY(layer)
|
||||
prev_lines = prev_layer.split("\n")
|
||||
for lin in prev_lines:
|
||||
new_e = self.getValue(lin, "E", current_e)
|
||||
if new_e != current_e:
|
||||
current_e = new_e
|
||||
break
|
||||
# Get X and Y from the next layer (better position for
|
||||
# the nozzle)
|
||||
x, y = self.getNextXY(layer)
|
||||
prev_lines = prev_layer.split("\n")
|
||||
for lin in prev_lines:
|
||||
new_e = self.getValue(lin, "E", current_e)
|
||||
if new_e != current_e:
|
||||
current_e = new_e
|
||||
break
|
||||
|
||||
prepend_gcode = ";TYPE:CUSTOM\n"
|
||||
prepend_gcode += ";added code by post processing\n"
|
||||
|
@ -364,8 +362,8 @@ class PauseAtHeight(Script):
|
|||
|
||||
prepend_gcode += self.putValue(M = 82) + " ; switch back to absolute E values\n"
|
||||
|
||||
# reset extrude value to pre pause value
|
||||
prepend_gcode += self.putValue(G = 92, E = current_e) + "\n"
|
||||
# reset extrude value to pre pause value
|
||||
prepend_gcode += self.putValue(G = 92, E = current_e) + "\n"
|
||||
|
||||
layer = prepend_gcode + layer
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2019 Ultimaker B.V.
|
||||
# Copyright (c) 2020 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import os
|
||||
|
@ -367,11 +367,18 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
|||
self._sendCommand("M84")
|
||||
|
||||
def _sendNextGcodeLine(self):
|
||||
if self._gcode_position >= len(self._gcode):
|
||||
"""
|
||||
Send the next line of g-code, at the current `_gcode_position`, via a
|
||||
serial port to the printer.
|
||||
|
||||
If the print is done, this sets `_is_printing` to `False` as well.
|
||||
"""
|
||||
try:
|
||||
line = self._gcode[self._gcode_position]
|
||||
except IndexError: # End of print, or print got cancelled.
|
||||
self._printers[0].updateActivePrintJob(None)
|
||||
self._is_printing = False
|
||||
return
|
||||
line = self._gcode[self._gcode_position]
|
||||
|
||||
if ";" in line:
|
||||
line = line[:line.find(";")]
|
||||
|
@ -401,7 +408,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
|||
if print_job is None:
|
||||
controller = GenericOutputController(self)
|
||||
controller.setCanUpdateFirmware(True)
|
||||
print_job = PrintJobOutputModel(output_controller=controller, name=CuraApplication.getInstance().getPrintInformation().jobName)
|
||||
print_job = PrintJobOutputModel(output_controller = controller, name = CuraApplication.getInstance().getPrintInformation().jobName)
|
||||
print_job.updateState("printing")
|
||||
self._printers[0].updateActivePrintJob(print_job)
|
||||
|
||||
|
|
|
@ -78,6 +78,27 @@ class VersionUpgrade462to47(VersionUpgrade):
|
|||
parser["metadata"] = {}
|
||||
parser["metadata"]["setting_version"] = "15"
|
||||
|
||||
# Update Pause at Height script parameters if present.
|
||||
if "post_processing_scripts" in parser["metadata"]:
|
||||
new_scripts_entries = []
|
||||
for script_str in parser["metadata"]["post_processing_scripts"].split("\n"):
|
||||
if not script_str:
|
||||
continue
|
||||
script_str = script_str.replace(r"\\\n", "\n").replace(r"\\\\", "\\\\") # Unescape escape sequences.
|
||||
script_parser = configparser.ConfigParser(interpolation=None)
|
||||
script_parser.optionxform = str # type: ignore # Don't transform the setting keys as they are case-sensitive.
|
||||
script_parser.read_string(script_str)
|
||||
if "PauseAtHeight" in script_parser:
|
||||
if "redo_layers" in script_parser["PauseAtHeight"]:
|
||||
script_parser["PauseAtHeight"]["redo_layer"] = str(int(script_parser["PauseAtHeight"]["redo_layers"]) > 0)
|
||||
del script_parser["PauseAtHeight"]["redo_layers"] # Has been renamed to without the S.
|
||||
script_io = io.StringIO()
|
||||
script_parser.write(script_io)
|
||||
script_str = script_io.getvalue()
|
||||
script_str = script_str.replace("\\\\", r"\\\\").replace("\n", r"\\\n") # Escape newlines because configparser sees those as section delimiters.
|
||||
new_scripts_entries.append(script_str)
|
||||
parser["metadata"]["post_processing_scripts"] = "\n".join(new_scripts_entries)
|
||||
|
||||
result = io.StringIO()
|
||||
parser.write(result)
|
||||
return [filename], [result.getvalue()]
|
||||
|
|
35
resources/definitions/leapfrog_creatr_hs.def.json
Normal file
35
resources/definitions/leapfrog_creatr_hs.def.json
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Leapfrog Creatr HS",
|
||||
"inherits": "fdmprinter",
|
||||
"metadata": {
|
||||
"visible": true,
|
||||
"author": "Psychometer",
|
||||
"manufacturer": "Leapfrog B.V.",
|
||||
"file_formats": "text/x-gcode",
|
||||
"supports_usb_connection": true,
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "leapfrog_creatr_hs_extruder_right",
|
||||
"1": "leapfrog_creatr_hs_extruder_left"
|
||||
}
|
||||
},
|
||||
"overrides": {
|
||||
"machine_name": {"default_value": "Leapfrog Creatr HS" },
|
||||
"machine_width": {"default_value": 270},
|
||||
"machine_depth": {"default_value": 280},
|
||||
"machine_height": {"default_value": 180},
|
||||
"machine_shape": { "default_value": "Rectangular"},
|
||||
"machine_center_is_zero": {"default_value": false},
|
||||
"machine_heated_bed": {"default_value": true},
|
||||
"build_volume_temperature": {"enabled": false},
|
||||
"machine_gcode_flavor": {"default_value": "Marlin"},
|
||||
|
||||
"machine_head_with_fans_polygon": {"default_value": [[-40, -50 ], [-40, 100], [40, -50 ], [40, 100]]},
|
||||
"gantry_height": {"value": "2"},
|
||||
"machine_extruder_count": {"default_value": 2},
|
||||
|
||||
"machine_start_gcode": {"default_value": "M107 ; start with the fan off\nG28 X0 Y0 ; home XY axes\nG28 Z0 ; home Z\nG92 X0 Y0 Z0 E0 ; reset software positions\nG1 Z15.0 F180\nT0\nG92 E0 ; zero the extruded length\nG1 E3 F200\nG92 E0 ; zero the extruded length again\nG1 F225"},
|
||||
"machine_end_gcode": {"default_value": "M104 S0 T0 ; turn off right extruder\nM104 S0 T1 ; turn off left extruder\nM140 S0 T0 ; turn off bed\nG1 Z200 F1200 ; drop bed\nG28 X0 ; home X axis\nM84 ; disable motors"}
|
||||
}
|
||||
}
|
35
resources/definitions/leapfrog_creatr_hs_xl.def.json
Normal file
35
resources/definitions/leapfrog_creatr_hs_xl.def.json
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Leapfrog Creatr HS XL",
|
||||
"inherits": "fdmprinter",
|
||||
"metadata": {
|
||||
"visible": true,
|
||||
"author": "Psychometer",
|
||||
"manufacturer": "Leapfrog B.V.",
|
||||
"file_formats": "text/x-gcode",
|
||||
"supports_usb_connection": true,
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "leapfrog_creatr_hs_xl_extruder_right",
|
||||
"1": "leapfrog_creatr_hs_xl_extruder_left"
|
||||
}
|
||||
},
|
||||
"overrides": {
|
||||
"machine_name": {"default_value": "Leapfrog Creatr HS XL" },
|
||||
"machine_width": {"default_value": 270},
|
||||
"machine_depth": {"default_value": 280},
|
||||
"machine_height": {"default_value": 590},
|
||||
"machine_shape": { "default_value": "Rectangular"},
|
||||
"machine_center_is_zero": {"default_value": false},
|
||||
"machine_heated_bed": {"default_value": true},
|
||||
"build_volume_temperature": {"enabled": false},
|
||||
"machine_gcode_flavor": {"default_value": "Marlin"},
|
||||
|
||||
"machine_head_with_fans_polygon": {"default_value": [[-40, -50 ], [-40, 100], [40, -50 ], [40, 100]]},
|
||||
"gantry_height": {"value": "2"},
|
||||
"machine_extruder_count": {"default_value": 2},
|
||||
|
||||
"machine_start_gcode": {"default_value": "M107 ; start with the fan off\nG28 X0 Y0 ; home XY axes\nG28 Z0 ; home Z\nG92 X0 Y0 Z0 E0 ; reset software positions\nG1 Z15.0 F180\nT0\nG92 E0 ; zero the extruded length\nG1 E3 F200\nG92 E0 ; zero the extruded length again\nG1 F225"},
|
||||
"machine_end_gcode": {"default_value": "G92 E0 ; Zero extruder\nG1 E-6.00 F1500 ; Retract filament\nM104 S0 T0 ; turn off right extruder\nM104 S0 T1 ; turn off left extruder\nM140 S0 T0 ; turn off bed\nG1 Z590 F1200 ; drop bed\nG28 X0 ; home X axis\nG1 Y270 F12000 ; Move Y axis to the backside\nM84 ; disable motors"}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Left extruder",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "leapfrog_creatr_hs",
|
||||
"position": "1"
|
||||
},
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 1
|
||||
},
|
||||
"machine_nozzle_size": { "default_value": 0.35 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_nozzle_offset_x": { "default_value": 20 },
|
||||
"machine_nozzle_offset_y": { "default_value": 25 }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Right extruder",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "leapfrog_creatr_hs",
|
||||
"position": "0"
|
||||
},
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 0
|
||||
},
|
||||
"machine_nozzle_size": { "default_value": 0.35 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_nozzle_offset_x": { "default_value": 35 },
|
||||
"machine_nozzle_offset_y": { "default_value": 25 }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Left extruder",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "leapfrog_creatr_hs_xl",
|
||||
"position": "1"
|
||||
},
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 1
|
||||
},
|
||||
"machine_nozzle_size": { "default_value": 0.35 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_nozzle_offset_x": { "default_value": 20 },
|
||||
"machine_nozzle_offset_y": { "default_value": 25 }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Right extruder",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "leapfrog_creatr_hs_xl",
|
||||
"position": "0"
|
||||
},
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 0
|
||||
},
|
||||
"machine_nozzle_size": { "default_value": 0.35 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_nozzle_offset_x": { "default_value": 35 },
|
||||
"machine_nozzle_offset_y": { "default_value": 25 }
|
||||
}
|
||||
}
|
|
@ -40,11 +40,6 @@ fragment =
|
|||
|
||||
uniform lowp float u_renderError;
|
||||
|
||||
float round(float f)
|
||||
{
|
||||
return sign(f) * floor(abs(f) + 0.5);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
mediump vec4 finalColor = vec4(0.0);
|
||||
|
@ -68,7 +63,7 @@ fragment =
|
|||
|
||||
finalColor = (-normal.y > u_overhangAngle) ? u_overhangColor : finalColor;
|
||||
|
||||
vec3 grid = vec3(f_vertex.x - floor(f_vertex.x - 0.5), f_vertex.y - floor(f_vertex.y - 0.5), f_vertex.z - floor(f_vertex.z - 0.5));
|
||||
highp vec3 grid = vec3(f_vertex.x - floor(f_vertex.x - 0.5), f_vertex.y - floor(f_vertex.y - 0.5), f_vertex.z - floor(f_vertex.z - 0.5));
|
||||
finalColor.a = (u_renderError > 0.5) && dot(grid, grid) < 0.245 ? 0.667 : 1.0;
|
||||
|
||||
gl_FragColor = finalColor;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue