Spaces:
Sleeping
Sleeping
Add safety buffer to Y and woodpile rasters
Browse files- tests/test_tiff_to_gcode.py +8 -6
- tiff_to_gcode.py +24 -0
tests/test_tiff_to_gcode.py
CHANGED
|
@@ -483,6 +483,7 @@ def test_woodpile_raster_switches_print_axis_between_layers(tmp_path) -> None:
|
|
| 483 |
pressure=25,
|
| 484 |
valve=7,
|
| 485 |
port=3,
|
|
|
|
| 486 |
raster_pattern=RASTER_PATTERN_WOODPILE,
|
| 487 |
)
|
| 488 |
|
|
@@ -509,10 +510,10 @@ def test_woodpile_raster_switches_print_axis_between_layers(tmp_path) -> None:
|
|
| 509 |
y += float(token[1:])
|
| 510 |
x_positions.append(x)
|
| 511 |
y_positions.append(y)
|
| 512 |
-
assert min(x_positions)
|
| 513 |
-
assert max(x_positions)
|
| 514 |
-
assert min(y_positions)
|
| 515 |
-
assert max(y_positions)
|
| 516 |
|
| 517 |
|
| 518 |
def test_y_direction_raster_prints_each_layer_along_y_axis(tmp_path) -> None:
|
|
@@ -533,6 +534,7 @@ def test_y_direction_raster_prints_each_layer_along_y_axis(tmp_path) -> None:
|
|
| 533 |
pressure=25,
|
| 534 |
valve=7,
|
| 535 |
port=3,
|
|
|
|
| 536 |
raster_pattern=RASTER_PATTERN_Y_DIRECTION,
|
| 537 |
)
|
| 538 |
|
|
@@ -562,8 +564,8 @@ def test_y_direction_raster_prints_each_layer_along_y_axis(tmp_path) -> None:
|
|
| 562 |
y_positions.append(y)
|
| 563 |
assert min(x_positions) >= 0.0
|
| 564 |
assert max(x_positions) <= 3.0
|
| 565 |
-
assert min(y_positions)
|
| 566 |
-
assert max(y_positions)
|
| 567 |
|
| 568 |
|
| 569 |
def test_contour_tracing_skips_inactive_nozzle_outline(tmp_path) -> None:
|
|
|
|
| 483 |
pressure=25,
|
| 484 |
valve=7,
|
| 485 |
port=3,
|
| 486 |
+
fil_width=1.0,
|
| 487 |
raster_pattern=RASTER_PATTERN_WOODPILE,
|
| 488 |
)
|
| 489 |
|
|
|
|
| 510 |
y += float(token[1:])
|
| 511 |
x_positions.append(x)
|
| 512 |
y_positions.append(y)
|
| 513 |
+
assert min(x_positions) == -1.0
|
| 514 |
+
assert max(x_positions) == 4.0
|
| 515 |
+
assert min(y_positions) == -1.0
|
| 516 |
+
assert max(y_positions) == 3.0
|
| 517 |
|
| 518 |
|
| 519 |
def test_y_direction_raster_prints_each_layer_along_y_axis(tmp_path) -> None:
|
|
|
|
| 534 |
pressure=25,
|
| 535 |
valve=7,
|
| 536 |
port=3,
|
| 537 |
+
fil_width=1.0,
|
| 538 |
raster_pattern=RASTER_PATTERN_Y_DIRECTION,
|
| 539 |
)
|
| 540 |
|
|
|
|
| 564 |
y_positions.append(y)
|
| 565 |
assert min(x_positions) >= 0.0
|
| 566 |
assert max(x_positions) <= 3.0
|
| 567 |
+
assert min(y_positions) == -1.0
|
| 568 |
+
assert max(y_positions) == 3.0
|
| 569 |
|
| 570 |
|
| 571 |
def test_contour_tracing_skips_inactive_nozzle_outline(tmp_path) -> None:
|
tiff_to_gcode.py
CHANGED
|
@@ -742,6 +742,16 @@ def _woodpile_layer_segments(
|
|
| 742 |
prev_row = row_values[0]
|
| 743 |
prev_color = int(color_img[prev_row, col])
|
| 744 |
x = (int(col) + 0.5) * pixel_size
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 745 |
for row in row_values[1:]:
|
| 746 |
this_color = int(color_img[row, col])
|
| 747 |
if this_color == prev_color:
|
|
@@ -763,6 +773,10 @@ def _woodpile_layer_segments(
|
|
| 763 |
start_y = (run_start + 1) * pixel_size
|
| 764 |
end_y = prev_row * pixel_size
|
| 765 |
segments.append((x, start_y, x, end_y, prev_color))
|
|
|
|
|
|
|
|
|
|
|
|
|
| 766 |
return segments
|
| 767 |
|
| 768 |
first_nonblank = np.where(mask.any(axis=1), mask.argmax(axis=1), -1)
|
|
@@ -781,6 +795,12 @@ def _woodpile_layer_segments(
|
|
| 781 |
prev_col = col_values[0]
|
| 782 |
prev_color = int(color_img[row, prev_col])
|
| 783 |
y = (int(row) + 0.5) * pixel_size
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 784 |
for col in col_values[1:]:
|
| 785 |
this_color = int(color_img[row, col])
|
| 786 |
if this_color == prev_color:
|
|
@@ -802,6 +822,10 @@ def _woodpile_layer_segments(
|
|
| 802 |
start_x = (run_start + 1) * pixel_size
|
| 803 |
end_x = prev_col * pixel_size
|
| 804 |
segments.append((start_x, y, end_x, y, prev_color))
|
|
|
|
|
|
|
|
|
|
|
|
|
| 805 |
return segments
|
| 806 |
|
| 807 |
|
|
|
|
| 742 |
prev_row = row_values[0]
|
| 743 |
prev_color = int(color_img[prev_row, col])
|
| 744 |
x = (int(col) + 0.5) * pixel_size
|
| 745 |
+
if forward:
|
| 746 |
+
sweep_start_y = f_idx * pixel_size
|
| 747 |
+
segments.append(
|
| 748 |
+
(x, sweep_start_y - pixel_size, x, sweep_start_y, 0)
|
| 749 |
+
)
|
| 750 |
+
else:
|
| 751 |
+
sweep_start_y = (l_idx + 1) * pixel_size
|
| 752 |
+
segments.append(
|
| 753 |
+
(x, sweep_start_y + pixel_size, x, sweep_start_y, 0)
|
| 754 |
+
)
|
| 755 |
for row in row_values[1:]:
|
| 756 |
this_color = int(color_img[row, col])
|
| 757 |
if this_color == prev_color:
|
|
|
|
| 773 |
start_y = (run_start + 1) * pixel_size
|
| 774 |
end_y = prev_row * pixel_size
|
| 775 |
segments.append((x, start_y, x, end_y, prev_color))
|
| 776 |
+
if forward:
|
| 777 |
+
segments.append((x, end_y, x, end_y + pixel_size, 0))
|
| 778 |
+
else:
|
| 779 |
+
segments.append((x, end_y, x, end_y - pixel_size, 0))
|
| 780 |
return segments
|
| 781 |
|
| 782 |
first_nonblank = np.where(mask.any(axis=1), mask.argmax(axis=1), -1)
|
|
|
|
| 795 |
prev_col = col_values[0]
|
| 796 |
prev_color = int(color_img[row, prev_col])
|
| 797 |
y = (int(row) + 0.5) * pixel_size
|
| 798 |
+
if forward:
|
| 799 |
+
sweep_start_x = f_idx * pixel_size
|
| 800 |
+
segments.append((sweep_start_x - pixel_size, y, sweep_start_x, y, 0))
|
| 801 |
+
else:
|
| 802 |
+
sweep_start_x = (l_idx + 1) * pixel_size
|
| 803 |
+
segments.append((sweep_start_x + pixel_size, y, sweep_start_x, y, 0))
|
| 804 |
for col in col_values[1:]:
|
| 805 |
this_color = int(color_img[row, col])
|
| 806 |
if this_color == prev_color:
|
|
|
|
| 822 |
start_x = (run_start + 1) * pixel_size
|
| 823 |
end_x = prev_col * pixel_size
|
| 824 |
segments.append((start_x, y, end_x, y, prev_color))
|
| 825 |
+
if forward:
|
| 826 |
+
segments.append((end_x, y, end_x + pixel_size, y, 0))
|
| 827 |
+
else:
|
| 828 |
+
segments.append((end_x, y, end_x - pixel_size, y, 0))
|
| 829 |
return segments
|
| 830 |
|
| 831 |
|