Improve code legibility

This commit is contained in:
fieldOfView 2018-06-28 12:02:45 +02:00
parent b9ae781d21
commit 9ff7fe5d85

View file

@ -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)