mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Layer newly remembers bounding boxes of slices, the bounding boxes are used by G-code generator & newly the support generator. Slices are stored as ExPolygons, not ExPolygonCollection.
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef slic3r_PerimeterGenerator_hpp_
 | 
						|
#define slic3r_PerimeterGenerator_hpp_
 | 
						|
 | 
						|
#include "libslic3r.h"
 | 
						|
#include <vector>
 | 
						|
#include "Flow.hpp"
 | 
						|
#include "Polygon.hpp"
 | 
						|
#include "PrintConfig.hpp"
 | 
						|
#include "SurfaceCollection.hpp"
 | 
						|
 | 
						|
namespace Slic3r {
 | 
						|
 | 
						|
class PerimeterGenerator {
 | 
						|
public:
 | 
						|
    // Inputs:
 | 
						|
    const SurfaceCollection     *slices;
 | 
						|
    const ExPolygons            *lower_slices;
 | 
						|
    double                       layer_height;
 | 
						|
    int                          layer_id;
 | 
						|
    Flow                         perimeter_flow;
 | 
						|
    Flow                         ext_perimeter_flow;
 | 
						|
    Flow                         overhang_flow;
 | 
						|
    Flow                         solid_infill_flow;
 | 
						|
    const PrintRegionConfig     *config;
 | 
						|
    const PrintObjectConfig     *object_config;
 | 
						|
    const PrintConfig           *print_config;
 | 
						|
    // Outputs:
 | 
						|
    ExtrusionEntityCollection   *loops;
 | 
						|
    ExtrusionEntityCollection   *gap_fill;
 | 
						|
    SurfaceCollection           *fill_surfaces;
 | 
						|
    
 | 
						|
    PerimeterGenerator(
 | 
						|
        // Input:
 | 
						|
        const SurfaceCollection*    slices, 
 | 
						|
        double                      layer_height,
 | 
						|
        Flow                        flow,
 | 
						|
        const PrintRegionConfig*    config,
 | 
						|
        const PrintObjectConfig*    object_config,
 | 
						|
        const PrintConfig*          print_config,
 | 
						|
        // Output:
 | 
						|
        // Loops with the external thin walls
 | 
						|
        ExtrusionEntityCollection*  loops,
 | 
						|
        // Gaps without the thin walls
 | 
						|
        ExtrusionEntityCollection*  gap_fill,
 | 
						|
        // Infills without the gap fills
 | 
						|
        SurfaceCollection*          fill_surfaces)
 | 
						|
        : slices(slices), lower_slices(nullptr), layer_height(layer_height),
 | 
						|
            layer_id(-1), perimeter_flow(flow), ext_perimeter_flow(flow),
 | 
						|
            overhang_flow(flow), solid_infill_flow(flow),
 | 
						|
            config(config), object_config(object_config), print_config(print_config),
 | 
						|
            loops(loops), gap_fill(gap_fill), fill_surfaces(fill_surfaces),
 | 
						|
            m_ext_mm3_per_mm(-1), m_mm3_per_mm(-1), m_mm3_per_mm_overhang(-1)
 | 
						|
        {}
 | 
						|
 | 
						|
    void        process();
 | 
						|
 | 
						|
    double      ext_mm3_per_mm()        const { return m_ext_mm3_per_mm; }
 | 
						|
    double      mm3_per_mm()            const { return m_mm3_per_mm; }
 | 
						|
    double      mm3_per_mm_overhang()   const { return m_mm3_per_mm_overhang; }
 | 
						|
    Polygons    lower_slices_polygons() const { return m_lower_slices_polygons; }
 | 
						|
 | 
						|
private:
 | 
						|
    double      m_ext_mm3_per_mm;
 | 
						|
    double      m_mm3_per_mm;
 | 
						|
    double      m_mm3_per_mm_overhang;
 | 
						|
    Polygons    m_lower_slices_polygons;
 | 
						|
};
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
#endif
 |