1. first formal version of macos 2. add the bambu networking plugin install logic 3. auto compute the wipe volume when filament change 4. add the logic of wiping into support 5. refine the GUI layout and icons, improve the gui apperance in lots of small places 6. serveral improve to support 7. support AMS auto-mapping 8. disable lots of unstable features: such as params table, media file download, HMS 9. fix serveral kinds of bugs 10. update the document of building 11. ...
90 lines
3.3 KiB
C++
90 lines
3.3 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 *upper_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;
|
|
|
|
//BBS
|
|
Flow smaller_ext_perimeter_flow;
|
|
std::map<int, Polygons> m_lower_polygons_series;
|
|
std::map<int, Polygons> m_external_lower_polygons_series;
|
|
std::map<int, Polygons> m_smaller_external_lower_polygons_series;
|
|
ExPolygons fill_no_overlap;
|
|
|
|
PerimeterGenerator(
|
|
// Input:
|
|
const SurfaceCollection* slices,
|
|
double layer_height,
|
|
Flow flow,
|
|
const PrintRegionConfig* config,
|
|
const PrintObjectConfig* object_config,
|
|
const PrintConfig* print_config,
|
|
const bool spiral_mode,
|
|
// 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), upper_slices(nullptr), 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),
|
|
m_spiral_vase(spiral_mode),
|
|
m_scaled_resolution(scaled<double>(print_config->resolution.value > EPSILON ? print_config->resolution.value : EPSILON)),
|
|
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), m_ext_mm3_per_mm_smaller_width(-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; }
|
|
//BBS
|
|
double smaller_width_ext_mm3_per_mm() const { return m_ext_mm3_per_mm_smaller_width; }
|
|
|
|
private:
|
|
std::map<int, Polygons> generate_lower_polygons_series(float width);
|
|
|
|
private:
|
|
bool m_spiral_vase;
|
|
double m_scaled_resolution;
|
|
double m_ext_mm3_per_mm;
|
|
double m_mm3_per_mm;
|
|
double m_mm3_per_mm_overhang;
|
|
//BBS
|
|
double m_ext_mm3_per_mm_smaller_width;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|