Print multiple copies from a single gcode file

This commit is contained in:
fieldOfView 2018-02-19 18:50:11 +01:00
parent 4b3365d894
commit 25afc0b63f
2 changed files with 52 additions and 7 deletions

View file

@ -128,9 +128,13 @@ class BlackBeltPlugin(Extension):
global_stack = Application.getInstance().getGlobalContainerStack()
enable_secondary_fans = global_stack.getProperty("blackbelt_secondary_fans_enabled", "value")
if not enable_secondary_fans:
repetitions = global_stack.getProperty("blackbelt_repetitions", "value")
if not (enable_secondary_fans or repetitions > 1):
return
repetitions_distance = global_stack.getProperty("blackbelt_repetitions_distance", "value")
repetitions_gcode = global_stack.getProperty("blackbelt_repetitions_gcode", "value")
scene = Application.getInstance().getController().getScene()
gcode_dict = getattr(scene, "gcode_dict", {})
if not gcode_dict: # this also checks for an empty dict
@ -143,11 +147,21 @@ class BlackBeltPlugin(Extension):
gcode_list = gcode_dict[plate_id]
if gcode_list:
if ";BLACKBELTPROCESSED" not in gcode_list[0]:
search_regex = re.compile(r"M106 S(\d*\.?\d*?)")
replace_pattern = r"M106 P1 S\1\nM106 S\1"
if enable_secondary_fans:
search_regex = re.compile(r"M106 S(\d*\.?\d*?)")
replace_pattern = r"M106 P1 S\1\nM106 S\1"
for layer_number, layer in enumerate(gcode_list):
gcode_list[layer_number] = re.sub(search_regex, replace_pattern, layer) #Replace all.
for layer_number, layer in enumerate(gcode_list):
gcode_list[layer_number] = re.sub(search_regex, replace_pattern, layer) #Replace all.
if repetitions > 1 and len(gcode_list) > 2:
# gcode_list[0]: curaengine header
# gcode_list[1]: start gcode
# gcode_list[2] - gcode_list[n-1]: layers
# gcode_list[n]: end gcode
layers = gcode_list[2:-1]
layers.append(repetitions_gcode.replace("{blackbelt_repetitions_distance}", str(repetitions_distance)))
gcode_list[2:-1] = (layers * int(repetitions))[0:-1]
gcode_list[0] += ";BLACKBELTPROCESSED\n"
gcode_dict[plate_id] = gcode_list

View file

@ -115,6 +115,27 @@
"enabled": "blackbelt_belt_wall_enabled",
"settable_per_mesh": true,
"settable_per_extruder": true
},
"blackbelt_repetitions":
{
"label": "Copies",
"description": "The number of times the objects on the build plate are printed. Note that the repetitions will not be visible in Layer View.",
"type": "int",
"minimum_value": "1",
"default_value": 1,
"settable_per_mesh": false,
"settable_per_extruder": false
},
"blackbelt_repetitions_distance":
{
"label": "Distance Between Copies",
"description": "The distance the belt moves between repetitions.",
"type": "float",
"minimum_value": "0",
"default_value": 15,
"enabled": "blackbelt_repetitions > 1",
"settable_per_mesh": false,
"settable_per_extruder": false
}
}
},
@ -150,6 +171,16 @@
"maximum_value_warning": "machine_nozzle_size",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"blackbelt_repetitions_gcode":
{
"label": "Repetitions GCode",
"description": "Gcode commands to be executed between repetitions - separated by \\n.",
"type": "str",
"default_value": "\nG92 E0 ; Set Extruder to zero\nG1 E-6 ; Retract 6mm\nG92 Z0 ; Set Belt to zero\nG1 Z{blackbelt_repetitions_distance} ; Advance belt between repetitions\nG92 Z0 ; Set Belt to zero again\n\n;˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄ - repetition - ˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄\n\nM107 ; Start with the fan off\n\n",
"enabled": "blackbelt_repetitions > 1",
"settable_per_mesh": false,
"settable_per_extruder": false
}
}
}
@ -160,10 +191,10 @@
"default_value": "BLACKBELT 3D Printer"
},
"machine_start_gcode" : {
"default_value": "G90 ; Set to Absolute Positioning\nM82 ; Set extruder to absolute mode\nG21 ; metric values\nM107 ; start with the fan off\nG92 X0 Y{blackbelt_z_offset} Z0 E0 ; Set all axis to 0. Set Y offset to the belt (Y0.1 = big gap, Y0.3 = small gap)\nG1 Y1 ; Move print head up 1mm\nG28 X0 F2000 ; Home X axis\nG1 E15 ; Extruder 15mm material (purge nozzle)\nG1 Z20 E30 F500 ; Move belt and keep extruding\nG1 Z30 E20 ; Stop extruding, move the belt a bit further\nG92 Z0 E-14 ; Zero Belt and Extuder\nG1 F1000 ; Move to the next point with a Speed of 1000mm per minute\nM117 BLACKBELT Printing...\n\n˅˅˅˅˅˅˅˅˅˅˅˅˅˅˅˅ - copy from here / paste codes just under here - ˅˅˅˅˅˅˅˅˅˅˅˅˅˅˅˅\n\nM107 ;start with the fan off"
"default_value": "G90 ; Set to Absolute Positioning\nM82 ; Set extruder to absolute mode\nG21 ; Metric values\nM107 ; Start with the fan off\nG92 X0 Y{blackbelt_z_offset} Z0 E0 ; Set all axis to 0. Set Y offset to the belt (Y0.1 = big gap, Y0.3 = small gap)\nG1 Y1 ; Move print head up 1mm\nG28 X0 F2000 ; Home X axis\nG1 E15 ; Extruder 15mm material (purge nozzle)\nG1 Z20 E30 F500 ; Move belt and keep extruding\nG1 Z30 E20 ; Stop extruding, move the belt a bit further\nG92 Z0 E-14 ; Zero Belt and Extuder\nG1 F1000 ; Move to the next point with a Speed of 1000mm per minute\nM117 BLACKBELT Printing...\n\n;˅˅˅˅˅˅˅˅˅˅˅˅˅˅˅˅ - copy from here / paste codes just under here - ˅˅˅˅˅˅˅˅˅˅˅˅˅˅˅˅\n\nM107 ;start with the fan off"
},
"machine_end_gcode" : {
"default_value": "G92 E0 ;set Extruder to zero\nG1 E-6 ;Retract 6mm\nG92 Z0 ;set Belt to zero\nG1 Z15 ;move Belt 10mm before starting up the next product\nG92 Z0 ;set Belt to zero again\n\n˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄ - copy up to here / paste codes just above here- ˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off\nG92 Z0\nG1 Z10 F1000\nG28 X0 F2000\nG1 Z20 F1000\nG1 X170 F2000\nG1 Y 1 F2000\nM18 ; Disable all stepper motors"
"default_value": "G92 E0 ; Set Extruder to zero\nG1 E-6 ; Retract 6mm\nG92 Z0 ; Set Belt to zero\nG1 Z{blackbelt_repetitions_distance} ; Move Belt 15mm before starting up the next product\nG92 Z0 ; Set Belt to zero again\n\n;˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄ - copy up to here / paste codes just above here - ˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄˄\nM104 S0 ; Extruder heater off\nM140 S0 ; Heated bed heater off\nG92 Z0\nG1 Z10 F1000\nG28 X0 F2000\nG1 Z20 F1000\nG1 X170 F2000\nG1 Y 1 F2000\nM18 ; Disable all stepper motors"
},
"machine_width": {
"default_value": 340