mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Bugfix: thin bridge anchors were ignored. #304
This commit is contained in:
		
							parent
							
								
									948b43fe0d
								
							
						
					
					
						commit
						1f36406a62
					
				
					 1 changed files with 5 additions and 2 deletions
				
			
		|  | @ -419,8 +419,10 @@ sub process_external_surfaces { | ||||||
|          |          | ||||||
|         # detect bridge direction before merging grown surfaces otherwise adjacent bridges |         # detect bridge direction before merging grown surfaces otherwise adjacent bridges | ||||||
|         # would get merged into a single one while they need different directions |         # would get merged into a single one while they need different directions | ||||||
|  |         # also, supply the original expolygon instead of the grown one, because in case | ||||||
|  |         # of very thin (but still working) anchors, the grown expolygon would go beyond them | ||||||
|         my $angle = $self->id > 0 |         my $angle = $self->id > 0 | ||||||
|             ? $self->_detect_bridge_direction($grown) |             ? $self->_detect_bridge_direction($surface->expolygon) | ||||||
|             : undef; |             : undef; | ||||||
|          |          | ||||||
|         push @bottom, $surface->clone(expolygon => $grown, bridge_angle => $angle); |         push @bottom, $surface->clone(expolygon => $grown, bridge_angle => $angle); | ||||||
|  | @ -470,6 +472,7 @@ sub _detect_bridge_direction { | ||||||
|     my $self = shift; |     my $self = shift; | ||||||
|     my ($expolygon) = @_; |     my ($expolygon) = @_; | ||||||
|      |      | ||||||
|  |     my ($grown) = $expolygon->offset_ex(+$self->perimeter_flow->scaled_width); | ||||||
|     my @lower = @{$self->layer->object->layers->[ $self->id - 1 ]->slices};       # expolygons |     my @lower = @{$self->layer->object->layers->[ $self->id - 1 ]->slices};       # expolygons | ||||||
|      |      | ||||||
|     # detect what edges lie on lower slices |     # detect what edges lie on lower slices | ||||||
|  | @ -477,7 +480,7 @@ sub _detect_bridge_direction { | ||||||
|     foreach my $lower (@lower) { |     foreach my $lower (@lower) { | ||||||
|         # turn bridge contour and holes into polylines and then clip them |         # turn bridge contour and holes into polylines and then clip them | ||||||
|         # with each lower slice's contour |         # with each lower slice's contour | ||||||
|         my @clipped = map $_->split_at_first_point->clip_with_polygon($lower->contour), @$expolygon; |         my @clipped = map $_->split_at_first_point->clip_with_polygon($lower->contour), @$grown; | ||||||
|         if (@clipped == 2) { |         if (@clipped == 2) { | ||||||
|             # If the split_at_first_point() call above happens to split the polygon inside the clipping area |             # If the split_at_first_point() call above happens to split the polygon inside the clipping area | ||||||
|             # we would get two consecutive polylines instead of a single one, so we use this ugly hack to  |             # we would get two consecutive polylines instead of a single one, so we use this ugly hack to  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci