mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-13 05:09:00 +08: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
@ -108,13 +108,12 @@ class PauseAtHeight(Script):
|
|||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 3.3333
|
"default_value": 3.3333
|
||||||
},
|
},
|
||||||
"redo_layers":
|
"redo_layer":
|
||||||
{
|
{
|
||||||
"label": "Redo Layers",
|
"label": "Redo Layer",
|
||||||
"description": "Redo a number of previous layers after a pause to increases adhesion.",
|
"description": "Redo the last layer before the pause, to get the filament flowing again after having oozed a bit during the pause.",
|
||||||
"unit": "layers",
|
"type": "bool",
|
||||||
"type": "int",
|
"default_value": false
|
||||||
"default_value": 0
|
|
||||||
},
|
},
|
||||||
"standby_temperature":
|
"standby_temperature":
|
||||||
{
|
{
|
||||||
@ -160,7 +159,7 @@ class PauseAtHeight(Script):
|
|||||||
park_x = self.getSettingValueByKey("head_park_x")
|
park_x = self.getSettingValueByKey("head_park_x")
|
||||||
park_y = self.getSettingValueByKey("head_park_y")
|
park_y = self.getSettingValueByKey("head_park_y")
|
||||||
layers_started = False
|
layers_started = False
|
||||||
redo_layers = self.getSettingValueByKey("redo_layers")
|
redo_layer = self.getSettingValueByKey("redo_layer")
|
||||||
standby_temperature = self.getSettingValueByKey("standby_temperature")
|
standby_temperature = self.getSettingValueByKey("standby_temperature")
|
||||||
firmware_retract = Application.getInstance().getGlobalContainerStack().getProperty("machine_firmware_retract", "value")
|
firmware_retract = Application.getInstance().getGlobalContainerStack().getProperty("machine_firmware_retract", "value")
|
||||||
control_temperatures = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_temp_enabled", "value")
|
control_temperatures = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_temp_enabled", "value")
|
||||||
@ -264,24 +263,23 @@ class PauseAtHeight(Script):
|
|||||||
if current_e >= 0:
|
if current_e >= 0:
|
||||||
break
|
break
|
||||||
|
|
||||||
# include a number of previous layers
|
# Maybe redo the last layer.
|
||||||
for i in range(1, redo_layers + 1):
|
if redo_layer:
|
||||||
prev_layer = data[index - i]
|
prev_layer = data[index - 1]
|
||||||
layer = prev_layer + layer
|
layer = prev_layer + layer
|
||||||
|
|
||||||
# Get extruder's absolute position at the
|
# 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
|
# see https://github.com/nallath/PostProcessingPlugin/issues/55
|
||||||
if i == redo_layers:
|
# Get X and Y from the next layer (better position for
|
||||||
# Get X and Y from the next layer (better position for
|
# the nozzle)
|
||||||
# the nozzle)
|
x, y = self.getNextXY(layer)
|
||||||
x, y = self.getNextXY(layer)
|
prev_lines = prev_layer.split("\n")
|
||||||
prev_lines = prev_layer.split("\n")
|
for lin in prev_lines:
|
||||||
for lin in prev_lines:
|
new_e = self.getValue(lin, "E", current_e)
|
||||||
new_e = self.getValue(lin, "E", current_e)
|
if new_e != current_e:
|
||||||
if new_e != current_e:
|
current_e = new_e
|
||||||
current_e = new_e
|
break
|
||||||
break
|
|
||||||
|
|
||||||
prepend_gcode = ";TYPE:CUSTOM\n"
|
prepend_gcode = ";TYPE:CUSTOM\n"
|
||||||
prepend_gcode += ";added code by post processing\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"
|
prepend_gcode += self.putValue(M = 82) + " ; switch back to absolute E values\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
|
||||||
|
|
||||||
|
@ -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.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@ -367,11 +367,18 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
|||||||
self._sendCommand("M84")
|
self._sendCommand("M84")
|
||||||
|
|
||||||
def _sendNextGcodeLine(self):
|
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._printers[0].updateActivePrintJob(None)
|
||||||
self._is_printing = False
|
self._is_printing = False
|
||||||
return
|
return
|
||||||
line = self._gcode[self._gcode_position]
|
|
||||||
|
|
||||||
if ";" in line:
|
if ";" in line:
|
||||||
line = line[:line.find(";")]
|
line = line[:line.find(";")]
|
||||||
@ -401,7 +408,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
|||||||
if print_job is None:
|
if print_job is None:
|
||||||
controller = GenericOutputController(self)
|
controller = GenericOutputController(self)
|
||||||
controller.setCanUpdateFirmware(True)
|
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")
|
print_job.updateState("printing")
|
||||||
self._printers[0].updateActivePrintJob(print_job)
|
self._printers[0].updateActivePrintJob(print_job)
|
||||||
|
|
||||||
|
@ -78,6 +78,27 @@ class VersionUpgrade462to47(VersionUpgrade):
|
|||||||
parser["metadata"] = {}
|
parser["metadata"] = {}
|
||||||
parser["metadata"]["setting_version"] = "15"
|
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()
|
result = io.StringIO()
|
||||||
parser.write(result)
|
parser.write(result)
|
||||||
return [filename], [result.getvalue()]
|
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;
|
uniform lowp float u_renderError;
|
||||||
|
|
||||||
float round(float f)
|
|
||||||
{
|
|
||||||
return sign(f) * floor(abs(f) + 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
mediump vec4 finalColor = vec4(0.0);
|
mediump vec4 finalColor = vec4(0.0);
|
||||||
@ -68,7 +63,7 @@ fragment =
|
|||||||
|
|
||||||
finalColor = (-normal.y > u_overhangAngle) ? u_overhangColor : finalColor;
|
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;
|
finalColor.a = (u_renderError > 0.5) && dot(grid, grid) < 0.245 ? 0.667 : 1.0;
|
||||||
|
|
||||||
gl_FragColor = finalColor;
|
gl_FragColor = finalColor;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user