mirror of
https://github.com/Ultimaker/Cura.git
synced 2026-01-18 05:45:40 -07:00
Improve code legibility
This commit is contained in:
parent
b9ae781d21
commit
9ff7fe5d85
1 changed files with 71 additions and 69 deletions
|
|
@ -264,99 +264,101 @@ class BlackBeltPlugin(Extension):
|
|||
dict_changed = False
|
||||
|
||||
enable_secondary_fans = global_stack.extruders["0"].getProperty("blackbelt_secondary_fans_enabled", "value")
|
||||
repetitions = global_stack.getProperty("blackbelt_repetitions", "value") or 1
|
||||
enable_belt_wall = global_stack.getProperty("blackbelt_belt_wall_enabled", "value")
|
||||
|
||||
if not (enable_secondary_fans or enable_belt_wall or repetitions > 1):
|
||||
return
|
||||
|
||||
if enable_secondary_fans:
|
||||
secondary_fans_speed = global_stack.extruders["0"].getProperty("blackbelt_secondary_fans_speed", "value") / 100
|
||||
|
||||
enable_belt_wall = global_stack.getProperty("blackbelt_belt_wall_enabled", "value")
|
||||
if enable_belt_wall:
|
||||
belt_wall_flow = global_stack.getProperty("blackbelt_belt_wall_flow", "value") / 100
|
||||
belt_wall_speed = global_stack.getProperty("blackbelt_belt_wall_speed", "value") * 60
|
||||
minimum_y = global_stack.extruders["0"].getProperty("wall_line_width_0", "value") / 2
|
||||
|
||||
repetitions = global_stack.getProperty("blackbelt_repetitions", "value") or 1
|
||||
if repetitions > 1:
|
||||
repetitions_distance = global_stack.getProperty("blackbelt_repetitions_distance", "value")
|
||||
repetitions_gcode = global_stack.getProperty("blackbelt_repetitions_gcode", "value")
|
||||
|
||||
if not (enable_secondary_fans or enable_belt_wall or repetitions > 1):
|
||||
return
|
||||
|
||||
for plate_id in gcode_dict:
|
||||
gcode_list = gcode_dict[plate_id]
|
||||
if gcode_list:
|
||||
if ";BLACKBELTPROCESSED" not in gcode_list[0]:
|
||||
# secondary fans should similar things as print cooling fans
|
||||
if enable_secondary_fans:
|
||||
search_regex = re.compile(r"M106 S(\d*\.?\d*)")
|
||||
if not gcode_list:
|
||||
continue
|
||||
|
||||
for layer_number, layer in enumerate(gcode_list):
|
||||
gcode_list[layer_number] = re.sub(search_regex, lambda m: "M106 P1 S%d\nM106 S%s" % (int(min(255, float(m.group(1)) * secondary_fans_speed)), m.group(1)), layer) #Replace all.
|
||||
if ";BLACKBELTPROCESSED" in gcode_list[0]:
|
||||
Logger.log("e", "Already post processed")
|
||||
continue
|
||||
|
||||
# adjust walls that touch the belt
|
||||
if enable_belt_wall:
|
||||
#wall_line_width_0
|
||||
last_y = None
|
||||
last_e = None
|
||||
extruding_move_regex = re.compile(r"(G[0|1] .*) Y(\d*\.?\d*) E(-?\d*\.?\d*)(.*)")
|
||||
extruding_regex = re.compile(r"G[0|1].* E(-?\d*\.?\d*)")
|
||||
speed_regex = re.compile(r" F\d*\.?\d*")
|
||||
extrude_regex = re.compile(r" E-?\d*\.?\d*")
|
||||
# secondary fans should similar things as print cooling fans
|
||||
if enable_secondary_fans:
|
||||
search_regex = re.compile(r"M106 S(\d*\.?\d*)")
|
||||
|
||||
for layer_number, layer in enumerate(gcode_list):
|
||||
if layer_number < 2 or layer_number > len(gcode_list) - 1:
|
||||
# gcode_list[0]: curaengine header
|
||||
# gcode_list[1]: start gcode
|
||||
# gcode_list[2] - gcode_list[n-1]: layers
|
||||
# gcode_list[n]: end gcode
|
||||
continue
|
||||
for layer_number, layer in enumerate(gcode_list):
|
||||
gcode_list[layer_number] = re.sub(search_regex, lambda m: "M106 P1 S%d\nM106 S%s" % (int(min(255, float(m.group(1)) * secondary_fans_speed)), m.group(1)), layer) #Replace all.
|
||||
|
||||
lines = layer.splitlines()
|
||||
for line_number, line in enumerate(lines):
|
||||
match = re.search(extruding_move_regex, line)
|
||||
if match:
|
||||
y = float(match.group(2))
|
||||
e = float(match.group(3))
|
||||
if y <= minimum_y and (last_y is not None and last_y <= minimum_y):
|
||||
if belt_wall_flow != 1.0:
|
||||
new_e = last_e + (e - last_e) * belt_wall_flow
|
||||
line = re.sub(extrude_regex, " E%f" % new_e, line)
|
||||
# adjust walls that touch the belt
|
||||
if enable_belt_wall:
|
||||
#wall_line_width_0
|
||||
last_y = None
|
||||
last_e = None
|
||||
extruding_move_regex = re.compile(r"(G[0|1] .*) Y(\d*\.?\d*) E(-?\d*\.?\d*)(.*)")
|
||||
extruding_regex = re.compile(r"G[0|1].* E(-?\d*\.?\d*)")
|
||||
speed_regex = re.compile(r" F\d*\.?\d*")
|
||||
extrude_regex = re.compile(r" E-?\d*\.?\d*")
|
||||
|
||||
# Remove pre-existing move speed and add our own
|
||||
line = re.sub(speed_regex, r"", line)
|
||||
line += " F%d ; Adjusted belt wall" % belt_wall_speed
|
||||
|
||||
# Reset E value as if nothing happened
|
||||
if belt_wall_flow != 1.0:
|
||||
line += "\nG92 E%f ; Reset E to pre-compensated value" % e
|
||||
lines[line_number] = line
|
||||
last_e = e
|
||||
last_y = y
|
||||
elif belt_wall_flow != 1.0:
|
||||
# Keep track of previous E value
|
||||
match = re.search(extruding_regex, line)
|
||||
if match:
|
||||
print(line, match.group(0), match.group(1))
|
||||
last_e = float(match.group(1))
|
||||
|
||||
edited_layer = "\n".join(lines)
|
||||
gcode_list[layer_number] = edited_layer
|
||||
|
||||
# make repetitions
|
||||
if repetitions > 1 and len(gcode_list) > 2:
|
||||
for layer_number, layer in enumerate(gcode_list):
|
||||
if layer_number < 2 or layer_number > len(gcode_list) - 1:
|
||||
# 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]
|
||||
continue
|
||||
|
||||
gcode_list[0] += ";BLACKBELTPROCESSED\n"
|
||||
gcode_dict[plate_id] = gcode_list
|
||||
dict_changed = True
|
||||
else:
|
||||
Logger.log("e", "Already post processed")
|
||||
lines = layer.splitlines()
|
||||
for line_number, line in enumerate(lines):
|
||||
match = re.search(extruding_move_regex, line)
|
||||
if match:
|
||||
y = float(match.group(2))
|
||||
e = float(match.group(3))
|
||||
if y <= minimum_y and (last_y is not None and last_y <= minimum_y):
|
||||
if belt_wall_flow != 1.0:
|
||||
new_e = last_e + (e - last_e) * belt_wall_flow
|
||||
line = re.sub(extrude_regex, " E%f" % new_e, line)
|
||||
|
||||
# Remove pre-existing move speed and add our own
|
||||
line = re.sub(speed_regex, r"", line)
|
||||
line += " F%d ; Adjusted belt wall" % belt_wall_speed
|
||||
|
||||
# Reset E value as if nothing happened
|
||||
if belt_wall_flow != 1.0:
|
||||
line += "\nG92 E%f ; Reset E to pre-compensated value" % e
|
||||
lines[line_number] = line
|
||||
last_e = e
|
||||
last_y = y
|
||||
elif belt_wall_flow != 1.0:
|
||||
# Keep track of previous E value
|
||||
match = re.search(extruding_regex, line)
|
||||
if match:
|
||||
print(line, match.group(0), match.group(1))
|
||||
last_e = float(match.group(1))
|
||||
|
||||
edited_layer = "\n".join(lines)
|
||||
gcode_list[layer_number] = edited_layer
|
||||
|
||||
# make repetitions
|
||||
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
|
||||
dict_changed = True
|
||||
|
||||
if dict_changed:
|
||||
setattr(scene, "gcode_dict", gcode_dict)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue