CyGuy8 commited on
Commit
0a99fd0
·
1 Parent(s): 2bb6898

Add safety buffer to Y and woodpile rasters

Browse files
Files changed (2) hide show
  1. tests/test_tiff_to_gcode.py +8 -6
  2. 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) >= 0.0
513
- assert max(x_positions) <= 3.0
514
- assert min(y_positions) >= 0.0
515
- assert max(y_positions) <= 2.0
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) >= 0.0
566
- assert max(y_positions) <= 2.0
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