mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	Bugfix: detect thin fill loops so that they can be started at the nearest point without unnecessary loops. #1990
This commit is contained in:
		
							parent
							
								
									abdf6531f1
								
							
						
					
					
						commit
						2bce8bb745
					
				
					 1 changed files with 6 additions and 2 deletions
				
			
		|  | @ -180,8 +180,7 @@ sub make_perimeters { | ||||||
|                 # and use zigzag). |                 # and use zigzag). | ||||||
|                 my $w = $gap_size->[2]; |                 my $w = $gap_size->[2]; | ||||||
|                 my @filled = map { |                 my @filled = map { | ||||||
|                     @{($_->isa('Slic3r::ExtrusionLoop') ? $_->split_at_first_point : $_) |                     @{($_->isa('Slic3r::ExtrusionLoop') ? $_->polygon->split_at_first_point : $_->polyline) | ||||||
|                         ->polyline |  | ||||||
|                         ->grow(scale $w/2)}; |                         ->grow(scale $w/2)}; | ||||||
|                 } @gap_fill; |                 } @gap_fill; | ||||||
|                 @last = @{diff(\@last, \@filled)}; |                 @last = @{diff(\@last, \@filled)}; | ||||||
|  | @ -438,6 +437,11 @@ sub _fill_gaps { | ||||||
|             my $loop = Slic3r::ExtrusionLoop->new; |             my $loop = Slic3r::ExtrusionLoop->new; | ||||||
|             $loop->append(Slic3r::ExtrusionPath->new(polyline => $polylines[$i]->split_at_first_point, %path_args)); |             $loop->append(Slic3r::ExtrusionPath->new(polyline => $polylines[$i]->split_at_first_point, %path_args)); | ||||||
|             $polylines[$i] = $loop; |             $polylines[$i] = $loop; | ||||||
|  |         } elsif ($polylines[$i]->is_valid && $polylines[$i]->first_point->coincides_with($polylines[$i]->last_point)) { | ||||||
|  |             # since medial_axis() now returns only Polyline objects, detect loops here | ||||||
|  |             my $loop = Slic3r::ExtrusionLoop->new; | ||||||
|  |             $loop->append(Slic3r::ExtrusionPath->new(polyline => $polylines[$i], %path_args)); | ||||||
|  |             $polylines[$i] = $loop; | ||||||
|         } else { |         } else { | ||||||
|             $polylines[$i] = Slic3r::ExtrusionPath->new(polyline => $polylines[$i], %path_args); |             $polylines[$i] = Slic3r::ExtrusionPath->new(polyline => $polylines[$i], %path_args); | ||||||
|         } |         } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci