mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -06:00 
			
		
		
		
	Update t/dynamic.t
This commit is contained in:
		
							parent
							
								
									b0f24a2666
								
							
						
					
					
						commit
						f9e20db156
					
				
					 2 changed files with 28 additions and 15 deletions
				
			
		|  | @ -234,7 +234,7 @@ sub make_perimeters { | |||
|                     map $_->noncollapsing_offset_ex(-0.5*$flow->scaled_width), | ||||
|                     @gaps; | ||||
|                  | ||||
|                 if (0) { | ||||
|                 if (0) {  # remember to re-enable t/dynamic.t | ||||
|                     # fill gaps using dynamic extrusion width, by treating them like thin polygons, | ||||
|                     # thus generating the skeleton and using it to fill them | ||||
|                     my %path_args = ( | ||||
|  |  | |||
							
								
								
									
										41
									
								
								t/dynamic.t
									
										
									
									
									
								
							
							
						
						
									
										41
									
								
								t/dynamic.t
									
										
									
									
									
								
							|  | @ -2,6 +2,7 @@ use Test::More; | |||
| use strict; | ||||
| use warnings; | ||||
| 
 | ||||
| plan skip_all => 'variable-width paths are currently disabled'; | ||||
| plan tests => 20; | ||||
| 
 | ||||
| BEGIN { | ||||
|  | @ -26,19 +27,30 @@ sub scale_points (@) { map [scale $_->[X], scale $_->[Y]], @_ } | |||
| } | ||||
| 
 | ||||
| { | ||||
|     local $Slic3r::Config = Slic3r::Config->new( | ||||
|         perimeters      => 3, | ||||
|     ); | ||||
|     my $w = 0.7; | ||||
|     local $Slic3r::perimeter_flow = Slic3r::Flow->new( | ||||
|     my $perimeter_flow = Slic3r::Flow->new( | ||||
|         nozzle_diameter => 0.5, | ||||
|         layer_height    => 0.4, | ||||
|         width           => $w, | ||||
|     ); | ||||
|     local $Slic3r::Config = Slic3r::Config->new( | ||||
|         perimeters      => 3, | ||||
|     ); | ||||
|      | ||||
|     my $print = Slic3r::Print->new; | ||||
|     my $region = Slic3r::Print::Region->new( | ||||
|         print => $print, | ||||
|         flows => { perimeter => $perimeter_flow }, | ||||
|     ); | ||||
|     push @{$print->regions}, $region; | ||||
|     my $object = Slic3r::Print::Object->new( | ||||
|         print => $print, | ||||
|         size  => [1,1], | ||||
|     ); | ||||
|     my $make_layer = sub { | ||||
|         my ($width) = @_; | ||||
|         my $layer = Slic3r::Layer->new( | ||||
|             object => $object, | ||||
|             id => 1, | ||||
|             slices => [ | ||||
|                 Slic3r::Surface->new( | ||||
|  | @ -48,27 +60,28 @@ sub scale_points (@) { map [scale $_->[X], scale $_->[Y]], @_ } | |||
|             ], | ||||
|             thin_walls => [], | ||||
|         ); | ||||
|         my $layerm = $layer->region(0); | ||||
|         $layer->make_perimeters; | ||||
|         return $layer; | ||||
|         return $layerm; | ||||
|     }; | ||||
|      | ||||
|     my %widths = ( | ||||
|         1   * $w => { perimeters => 1, gaps => 0 }, | ||||
|         1.3 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->clone(width => 0.2 * $w)->spacing }, | ||||
|         1.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->clone(width => 0.5 * $w)->spacing }, | ||||
|         2   * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->spacing }, | ||||
|         2.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->clone(width => 1.5 * $w)->spacing }, | ||||
|         1.3 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->clone(width => 0.2 * $w)->spacing }, | ||||
|         1.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->clone(width => 0.5 * $w)->spacing }, | ||||
|         2   * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->spacing }, | ||||
|         2.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->clone(width => 1.5 * $w)->spacing }, | ||||
|         3   * $w => { perimeters => 2, gaps => 0 }, | ||||
|         4   * $w => { perimeters => 2, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->spacing }, | ||||
|         4   * $w => { perimeters => 2, gaps => 1, gap_flow_spacing => $perimeter_flow->spacing }, | ||||
|     ); | ||||
|      | ||||
|     foreach my $width (sort keys %widths) { | ||||
|         my $layer = $make_layer->($width); | ||||
|         is scalar @{$layer->perimeters}, $widths{$width}{perimeters}, 'right number of perimeters'; | ||||
|         is scalar @{$layer->thin_fills} ? 1 : 0, $widths{$width}{gaps}, | ||||
|         my $layerm = $make_layer->($width); | ||||
|         is scalar @{$layerm->perimeters}, $widths{$width}{perimeters}, 'right number of perimeters'; | ||||
|         is scalar @{$layerm->thin_fills} ? 1 : 0, $widths{$width}{gaps}, | ||||
|             ($widths{$width}{gaps} ? 'gaps were filled' : 'no gaps detected');  # TODO: we should check the exact number of gaps, but we need a better medial axis algorithm | ||||
|          | ||||
|         my @gaps = map $_->unpack, @{$layer->thin_fills}; | ||||
|         my @gaps = map $_->unpack, @{$layerm->thin_fills}; | ||||
|         if (@gaps) { | ||||
|             ok +(!first { abs($_->flow_spacing - $widths{$width}{gap_flow_spacing}) > epsilon } @gaps), | ||||
|                 'flow spacing was dynamically adjusted'; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci