mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Bugfix: pillars support material crashed when no overhangs were detected
This commit is contained in:
		
							parent
							
								
									1c020eda78
								
							
						
					
					
						commit
						93a7d87fc6
					
				
					 2 changed files with 6 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -647,6 +647,9 @@ sub generate_toolpaths {
 | 
			
		|||
sub generate_pillars_shape {
 | 
			
		||||
    my ($self, $contact, $support_z, $shape) = @_;
 | 
			
		||||
    
 | 
			
		||||
    # this prevents supplying an empty point set to BoundingBox constructor
 | 
			
		||||
    return if !%$contact;
 | 
			
		||||
    
 | 
			
		||||
    my $pillar_size     = scale PILLAR_SIZE;
 | 
			
		||||
    my $pillar_spacing  = scale PILLAR_SPACING;
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -658,7 +661,7 @@ sub generate_pillars_shape {
 | 
			
		|||
            [$pillar_size, $pillar_size],
 | 
			
		||||
            [0, $pillar_size],
 | 
			
		||||
        );
 | 
			
		||||
    
 | 
			
		||||
        
 | 
			
		||||
        my @pillars = ();
 | 
			
		||||
        my $bb = Slic3r::Geometry::BoundingBox->new_from_points([ map @$_, map @$_, values %$contact ]);
 | 
			
		||||
        for (my $x = $bb->x_min; $x <= $bb->x_max-$pillar_size; $x += $pillar_spacing) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@ namespace Slic3r {
 | 
			
		|||
template <class PointClass>
 | 
			
		||||
BoundingBoxBase<PointClass>::BoundingBoxBase(const std::vector<PointClass> &points)
 | 
			
		||||
{
 | 
			
		||||
    if (points.empty()) CONFESS("Empty point set supplied to BoundingBoxBase constructor");
 | 
			
		||||
    typename std::vector<PointClass>::const_iterator it = points.begin();
 | 
			
		||||
    this->min.x = this->max.x = it->x;
 | 
			
		||||
    this->min.y = this->max.y = it->y;
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +23,7 @@ template <class PointClass>
 | 
			
		|||
BoundingBox3Base<PointClass>::BoundingBox3Base(const std::vector<PointClass> &points)
 | 
			
		||||
    : BoundingBoxBase<PointClass>(points)
 | 
			
		||||
{
 | 
			
		||||
    if (points.empty()) CONFESS("Empty point set supplied to BoundingBox3Base constructor");
 | 
			
		||||
    typename std::vector<PointClass>::const_iterator it = points.begin();
 | 
			
		||||
    this->min.z = this->max.z = it->z;
 | 
			
		||||
    for (++it; it != points.end(); ++it) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue