mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Bugfix: objects were floating in STL export after rotation and flip. #2512
This commit is contained in:
		
							parent
							
								
									9f4f711017
								
							
						
					
					
						commit
						64c9e3af4b
					
				
					 5 changed files with 13 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -659,6 +659,9 @@ sub rotate {
 | 
			
		|||
            $_->set_rotation(0) for @{ $model_object->instances };
 | 
			
		||||
        }
 | 
			
		||||
        $model_object->rotate(deg2rad($angle), $axis);
 | 
			
		||||
        
 | 
			
		||||
        # realign object to Z = 0
 | 
			
		||||
        $model_object->center_around_origin;
 | 
			
		||||
        $self->make_thumbnail($obj_idx);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -688,6 +691,9 @@ sub flip {
 | 
			
		|||
    
 | 
			
		||||
    $model_object->flip($axis);
 | 
			
		||||
    $model_object->update_bounding_box;
 | 
			
		||||
    
 | 
			
		||||
    # realign object to Z = 0
 | 
			
		||||
    $model_object->center_around_origin;
 | 
			
		||||
    $self->make_thumbnail($obj_idx);
 | 
			
		||||
        
 | 
			
		||||
    # update print and start background processing
 | 
			
		||||
| 
						 | 
				
			
			@ -725,6 +731,7 @@ sub changescale {
 | 
			
		|||
        my $versor = [1,1,1];
 | 
			
		||||
        $versor->[$axis] = $scale/100;
 | 
			
		||||
        $model_object->scale_xyz(Slic3r::Pointf3->new(@$versor));
 | 
			
		||||
        # object was already aligned to Z = 0, so no need to realign it
 | 
			
		||||
        $self->make_thumbnail($obj_idx);
 | 
			
		||||
    } else {
 | 
			
		||||
        # max scale factor should be above 2540 to allow importing files exported in inches
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -351,8 +351,6 @@ sub set_bed_shape {
 | 
			
		|||
sub load_object {
 | 
			
		||||
    my ($self, $object, $all_instances) = @_;
 | 
			
		||||
    
 | 
			
		||||
    my $z_min = $object->raw_bounding_box->z_min;
 | 
			
		||||
    
 | 
			
		||||
    # color mesh(es) by material
 | 
			
		||||
    my @materials = ();
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -381,7 +379,6 @@ sub load_object {
 | 
			
		|||
                instance_idx    => $instance_idx,
 | 
			
		||||
                mesh            => $mesh,
 | 
			
		||||
                color           => $color,
 | 
			
		||||
                origin          => Slic3r::Pointf3->new(0,0,-$z_min),
 | 
			
		||||
            );
 | 
			
		||||
            push @volumes_idx, $#{$self->volumes};
 | 
			
		||||
        
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -272,6 +272,7 @@ sub rotate {
 | 
			
		|||
    } elsif ($axis == Z) {
 | 
			
		||||
        $_->mesh->rotate_z($angle) for @{$self->volumes};
 | 
			
		||||
    }
 | 
			
		||||
    $self->set_origin_translation(Slic3r::Pointf3->new(0,0,0));
 | 
			
		||||
    $self->invalidate_bounding_box;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -285,6 +286,7 @@ sub flip {
 | 
			
		|||
    } elsif ($axis == Z) {
 | 
			
		||||
        $_->mesh->flip_z for @{$self->volumes};
 | 
			
		||||
    }
 | 
			
		||||
    $self->set_origin_translation(Slic3r::Pointf3->new(0,0,0));
 | 
			
		||||
    $self->invalidate_bounding_box;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue