From e50e96bb26eab4f9d56c98706c03166635cf4fff Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Mon, 16 Jan 2023 10:47:27 +0100 Subject: [PATCH] Follow-up to 5991850db1f2d09d1b7713f42300e2bfe4a42128 WIP Extending the expressivity of ExtrusionRole Separated ExtrusionRole / GCodeExtrusionRole into ExtrusionRole.cpp,hpp --- src/libslic3r/CMakeLists.txt | 2 + src/libslic3r/ExtrusionEntity.cpp | 81 ------------ src/libslic3r/ExtrusionEntity.hpp | 136 +------------------- src/libslic3r/ExtrusionRole.cpp | 89 +++++++++++++ src/libslic3r/ExtrusionRole.hpp | 147 ++++++++++++++++++++++ src/libslic3r/Flow.hpp | 2 +- src/libslic3r/GCode/GCodeProcessor.hpp | 2 +- src/libslic3r/GCode/PressureEqualizer.hpp | 2 +- src/libslic3r/PerimeterGenerator.hpp | 1 + 9 files changed, 243 insertions(+), 219 deletions(-) create mode 100644 src/libslic3r/ExtrusionRole.cpp create mode 100644 src/libslic3r/ExtrusionRole.hpp diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 06e32e2a2..6217a11df 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -56,6 +56,8 @@ set(SLIC3R_SOURCES ExtrusionEntity.hpp ExtrusionEntityCollection.cpp ExtrusionEntityCollection.hpp + ExtrusionRole.cpp + ExtrusionRole.hpp ExtrusionSimulator.cpp ExtrusionSimulator.hpp FileParserError.hpp diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index e180fcfcd..2b7bebc37 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -8,8 +8,6 @@ #include #include -#define L(s) (s) - namespace Slic3r { void ExtrusionPath::intersect_expolygons(const ExPolygons &collection, ExtrusionEntityCollection* retval) const @@ -322,83 +320,4 @@ double ExtrusionLoop::min_mm3_per_mm() const return min_mm3_per_mm; } -// Convert a rich bitmask based ExtrusionRole to a less expressive ordinal GCodeExtrusionRole. -// GCodeExtrusionRole is to be serialized into G-code and deserialized by G-code viewer, -GCodeExtrusionRole extrusion_role_to_gcode_extrusion_role(ExtrusionRole role) -{ - if (role == ExtrusionRole::None) return erNone; - if (role == ExtrusionRole::Perimeter) return erPerimeter; - if (role == ExtrusionRole::ExternalPerimeter) return erExternalPerimeter; - if (role == ExtrusionRole::OverhangPerimeter) return erOverhangPerimeter; - if (role == ExtrusionRole::InternalInfill) return erInternalInfill; - if (role == ExtrusionRole::SolidInfill) return erSolidInfill; - if (role == ExtrusionRole::TopSolidInfill) return erTopSolidInfill; - if (role == ExtrusionRole::Ironing) return erIroning; - if (role == ExtrusionRole::BridgeInfill) return erBridgeInfill; - if (role == ExtrusionRole::GapFill) return erGapFill; - if (role == ExtrusionRole::Skirt) return erSkirt; - if (role == ExtrusionRole::SupportMaterial) return erSupportMaterial; - if (role == ExtrusionRole::SupportMaterialInterface) return erSupportMaterialInterface; - if (role == ExtrusionRole::WipeTower) return erWipeTower; - assert(false); - return erNone; -} - -std::string gcode_extrusion_role_to_string(GCodeExtrusionRole role) -{ - switch (role) { - case erNone : return L("Unknown"); - case erPerimeter : return L("Perimeter"); - case erExternalPerimeter : return L("External perimeter"); - case erOverhangPerimeter : return L("Overhang perimeter"); - case erInternalInfill : return L("Internal infill"); - case erSolidInfill : return L("Solid infill"); - case erTopSolidInfill : return L("Top solid infill"); - case erIroning : return L("Ironing"); - case erBridgeInfill : return L("Bridge infill"); - case erGapFill : return L("Gap fill"); - case erSkirt : return L("Skirt/Brim"); - case erSupportMaterial : return L("Support material"); - case erSupportMaterialInterface : return L("Support material interface"); - case erWipeTower : return L("Wipe tower"); - case erCustom : return L("Custom"); - default : assert(false); - } - return {}; -} - -GCodeExtrusionRole string_to_gcode_extrusion_role(const std::string_view role) -{ - if (role == L("Perimeter")) - return erPerimeter; - else if (role == L("External perimeter")) - return erExternalPerimeter; - else if (role == L("Overhang perimeter")) - return erOverhangPerimeter; - else if (role == L("Internal infill")) - return erInternalInfill; - else if (role == L("Solid infill")) - return erSolidInfill; - else if (role == L("Top solid infill")) - return erTopSolidInfill; - else if (role == L("Ironing")) - return erIroning; - else if (role == L("Bridge infill")) - return erBridgeInfill; - else if (role == L("Gap fill")) - return erGapFill; - else if (role == L("Skirt") || role == L("Skirt/Brim")) // "Skirt" is for backward compatibility with 2.3.1 and earlier - return erSkirt; - else if (role == L("Support material")) - return erSupportMaterial; - else if (role == L("Support material interface")) - return erSupportMaterialInterface; - else if (role == L("Wipe tower")) - return erWipeTower; - else if (role == L("Custom")) - return erCustom; - else - return erNone; -} - } diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index 5022f216b..35c715191 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -2,9 +2,9 @@ #define slic3r_ExtrusionEntity_hpp_ #include "libslic3r.h" +#include "ExtrusionRole.hpp" #include "Polygon.hpp" #include "Polyline.hpp" -#include "enum_bitmask.hpp" #include #include @@ -17,133 +17,6 @@ using ExPolygons = std::vector; class ExtrusionEntityCollection; class Extruder; -enum class ExtrusionRoleModifier : uint16_t { -// 1) Extrusion types - // Perimeter (external, inner, ...) - Perimeter, - // Infill (top / bottom / solid inner / sparse inner / bridging inner ...) - Infill, - // Variable width extrusion - Thin, - // Support material extrusion - Support, - Skirt, - Wipe, -// 2) Extrusion modifiers - External, - Solid, - Ironing, - Bridge, -// 3) Special types - // Indicator that the extrusion role was mixed from multiple differing extrusion roles, - // for example from Support and SupportInterface. - Mixed, - // Stopper, there should be maximum 16 modifiers defined for uint16_t bit mask. - Count -}; -// There should be maximum 16 modifiers defined for uint16_t bit mask. -static_assert(int(ExtrusionRoleModifier::Count) <= 16, "ExtrusionRoleModifier: there must be maximum 16 modifiers defined to fit a 16 bit bitmask"); - -using ExtrusionRoleModifiers = enum_bitmask; -ENABLE_ENUM_BITMASK_OPERATORS(ExtrusionRoleModifier); - -struct ExtrusionRole : public ExtrusionRoleModifiers -{ - constexpr ExtrusionRole(const ExtrusionRoleModifier bit) : ExtrusionRoleModifiers(bit) {} - constexpr ExtrusionRole(const ExtrusionRoleModifiers bits) : ExtrusionRoleModifiers(bits) {} - - static constexpr const ExtrusionRoleModifiers None{}; - // Internal perimeter, not bridging. - static constexpr const ExtrusionRoleModifiers Perimeter{ ExtrusionRoleModifier::Perimeter }; - // External perimeter, not bridging. - static constexpr const ExtrusionRoleModifiers ExternalPerimeter{ ExtrusionRoleModifier::Perimeter | ExtrusionRoleModifier::External }; - // Perimeter, bridging. To be or'ed with ExtrusionRoleModifier::External for external bridging perimeter. - static constexpr const ExtrusionRoleModifiers OverhangPerimeter{ ExtrusionRoleModifier::Perimeter | ExtrusionRoleModifier::Bridge }; - // Sparse internal infill. - static constexpr const ExtrusionRoleModifiers InternalInfill{ ExtrusionRoleModifier::Infill }; - // Solid internal infill. - static constexpr const ExtrusionRoleModifiers SolidInfill{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Solid }; - // Top solid infill (visible). - //FIXME why there is no bottom solid infill type? - static constexpr const ExtrusionRoleModifiers TopSolidInfill{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Solid | ExtrusionRoleModifier::External }; - // Ironing infill at the top surfaces. - static constexpr const ExtrusionRoleModifiers Ironing{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Ironing | ExtrusionRoleModifier::External }; - // Visible bridging infill at the bottom of an object. - static constexpr const ExtrusionRoleModifiers BridgeInfill{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Solid | ExtrusionRoleModifier::Bridge | ExtrusionRoleModifier::External }; -// static constexpr const ExtrusionRoleModifiers InternalBridgeInfill{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Solid | ExtrusionRoleModifier::Bridge }; - // Gap fill extrusion, currently used for any variable width extrusion: Thin walls outside of the outer extrusion, - // gap fill in between perimeters, gap fill between the inner perimeter and infill. - //FIXME revise GapFill and ThinWall types, split Gap Fill to Gap Fill and ThinWall. - static constexpr const ExtrusionRoleModifiers GapFill{ ExtrusionRoleModifier::Thin }; // | ExtrusionRoleModifier::External }; -// static constexpr const ExtrusionRoleModifiers ThinWall{ ExtrusionRoleModifier::Thin }; - static constexpr const ExtrusionRoleModifiers Skirt{ ExtrusionRoleModifier::Skirt }; - // Support base material, printed with non-soluble plastic. - static constexpr const ExtrusionRoleModifiers SupportMaterial{ ExtrusionRoleModifier::Support }; - // Support interface material, printed with soluble plastic. - static constexpr const ExtrusionRoleModifiers SupportMaterialInterface{ ExtrusionRoleModifier::Support | ExtrusionRoleModifier::External }; - // Wipe tower material. - static constexpr const ExtrusionRoleModifiers WipeTower{ ExtrusionRoleModifier::Wipe }; - // Extrusion role for a collection with multiple extrusion roles. - static constexpr const ExtrusionRoleModifiers Mixed{ ExtrusionRoleModifier::Mixed }; -}; - -// Special flags describing loop -enum ExtrusionLoopRole { - elrDefault, - elrContourInternalPerimeter, - elrSkirt, -}; - -inline bool is_perimeter(ExtrusionRole role) -{ - return role == ExtrusionRole::Perimeter - || role == ExtrusionRole::ExternalPerimeter - || role == ExtrusionRole::OverhangPerimeter; -} - -inline bool is_infill(ExtrusionRole role) -{ - return role == ExtrusionRole::BridgeInfill - || role == ExtrusionRole::InternalInfill - || role == ExtrusionRole::SolidInfill - || role == ExtrusionRole::TopSolidInfill - || role == ExtrusionRole::Ironing; -} - -inline bool is_solid_infill(ExtrusionRole role) -{ - return role == ExtrusionRole::BridgeInfill - || role == ExtrusionRole::SolidInfill - || role == ExtrusionRole::TopSolidInfill - || role == ExtrusionRole::Ironing; -} - -inline bool is_bridge(ExtrusionRole role) { - return role == ExtrusionRole::BridgeInfill - || role == ExtrusionRole::OverhangPerimeter; -} - -enum GCodeExtrusionRole : uint8_t { - erNone, - erPerimeter, - erExternalPerimeter, - erOverhangPerimeter, - erInternalInfill, - erSolidInfill, - erTopSolidInfill, - erIroning, - erBridgeInfill, - erGapFill, - erSkirt, - erSupportMaterial, - erSupportMaterialInterface, - erWipeTower, - // Custom (user defined) G-code block, for example start / end G-code. - erCustom, - // Stopper to count number of enums. - erCount -}; - class ExtrusionEntity { public: @@ -179,13 +52,6 @@ public: virtual double total_volume() const = 0; }; -// Convert a rich bitmask based ExtrusionRole to a less expressive ordinal GCodeExtrusionRole. -// GCodeExtrusionRole is to be serialized into G-code and deserialized by G-code viewer, -GCodeExtrusionRole extrusion_role_to_gcode_extrusion_role(ExtrusionRole role); - -std::string gcode_extrusion_role_to_string(GCodeExtrusionRole role); -GCodeExtrusionRole string_to_gcode_extrusion_role(const std::string_view role); - typedef std::vector ExtrusionEntitiesPtr; class ExtrusionPath : public ExtrusionEntity diff --git a/src/libslic3r/ExtrusionRole.cpp b/src/libslic3r/ExtrusionRole.cpp new file mode 100644 index 000000000..f6f2eb2f5 --- /dev/null +++ b/src/libslic3r/ExtrusionRole.cpp @@ -0,0 +1,89 @@ +#include "ExtrusionRole.hpp" + +#include +#include + +#define L(s) (s) + +namespace Slic3r { + +// Convert a rich bitmask based ExtrusionRole to a less expressive ordinal GCodeExtrusionRole. +// GCodeExtrusionRole is to be serialized into G-code and deserialized by G-code viewer, +GCodeExtrusionRole extrusion_role_to_gcode_extrusion_role(ExtrusionRole role) +{ + if (role == ExtrusionRole::None) return erNone; + if (role == ExtrusionRole::Perimeter) return erPerimeter; + if (role == ExtrusionRole::ExternalPerimeter) return erExternalPerimeter; + if (role == ExtrusionRole::OverhangPerimeter) return erOverhangPerimeter; + if (role == ExtrusionRole::InternalInfill) return erInternalInfill; + if (role == ExtrusionRole::SolidInfill) return erSolidInfill; + if (role == ExtrusionRole::TopSolidInfill) return erTopSolidInfill; + if (role == ExtrusionRole::Ironing) return erIroning; + if (role == ExtrusionRole::BridgeInfill) return erBridgeInfill; + if (role == ExtrusionRole::GapFill) return erGapFill; + if (role == ExtrusionRole::Skirt) return erSkirt; + if (role == ExtrusionRole::SupportMaterial) return erSupportMaterial; + if (role == ExtrusionRole::SupportMaterialInterface) return erSupportMaterialInterface; + if (role == ExtrusionRole::WipeTower) return erWipeTower; + assert(false); + return erNone; +} + +std::string gcode_extrusion_role_to_string(GCodeExtrusionRole role) +{ + switch (role) { + case erNone : return L("Unknown"); + case erPerimeter : return L("Perimeter"); + case erExternalPerimeter : return L("External perimeter"); + case erOverhangPerimeter : return L("Overhang perimeter"); + case erInternalInfill : return L("Internal infill"); + case erSolidInfill : return L("Solid infill"); + case erTopSolidInfill : return L("Top solid infill"); + case erIroning : return L("Ironing"); + case erBridgeInfill : return L("Bridge infill"); + case erGapFill : return L("Gap fill"); + case erSkirt : return L("Skirt/Brim"); + case erSupportMaterial : return L("Support material"); + case erSupportMaterialInterface : return L("Support material interface"); + case erWipeTower : return L("Wipe tower"); + case erCustom : return L("Custom"); + default : assert(false); + } + return {}; +} + +GCodeExtrusionRole string_to_gcode_extrusion_role(const std::string_view role) +{ + if (role == L("Perimeter")) + return erPerimeter; + else if (role == L("External perimeter")) + return erExternalPerimeter; + else if (role == L("Overhang perimeter")) + return erOverhangPerimeter; + else if (role == L("Internal infill")) + return erInternalInfill; + else if (role == L("Solid infill")) + return erSolidInfill; + else if (role == L("Top solid infill")) + return erTopSolidInfill; + else if (role == L("Ironing")) + return erIroning; + else if (role == L("Bridge infill")) + return erBridgeInfill; + else if (role == L("Gap fill")) + return erGapFill; + else if (role == L("Skirt") || role == L("Skirt/Brim")) // "Skirt" is for backward compatibility with 2.3.1 and earlier + return erSkirt; + else if (role == L("Support material")) + return erSupportMaterial; + else if (role == L("Support material interface")) + return erSupportMaterialInterface; + else if (role == L("Wipe tower")) + return erWipeTower; + else if (role == L("Custom")) + return erCustom; + else + return erNone; +} + +} diff --git a/src/libslic3r/ExtrusionRole.hpp b/src/libslic3r/ExtrusionRole.hpp new file mode 100644 index 000000000..eb61f4b79 --- /dev/null +++ b/src/libslic3r/ExtrusionRole.hpp @@ -0,0 +1,147 @@ +#ifndef slic3r_ExtrusionRole_hpp_ +#define slic3r_ExtrusionRole_hpp_ + +#include "enum_bitmask.hpp" + +#include +#include + +namespace Slic3r { + +enum class ExtrusionRoleModifier : uint16_t { +// 1) Extrusion types + // Perimeter (external, inner, ...) + Perimeter, + // Infill (top / bottom / solid inner / sparse inner / bridging inner ...) + Infill, + // Variable width extrusion + Thin, + // Support material extrusion + Support, + Skirt, + Wipe, +// 2) Extrusion modifiers + External, + Solid, + Ironing, + Bridge, +// 3) Special types + // Indicator that the extrusion role was mixed from multiple differing extrusion roles, + // for example from Support and SupportInterface. + Mixed, + // Stopper, there should be maximum 16 modifiers defined for uint16_t bit mask. + Count +}; +// There should be maximum 16 modifiers defined for uint16_t bit mask. +static_assert(int(ExtrusionRoleModifier::Count) <= 16, "ExtrusionRoleModifier: there must be maximum 16 modifiers defined to fit a 16 bit bitmask"); + +using ExtrusionRoleModifiers = enum_bitmask; +ENABLE_ENUM_BITMASK_OPERATORS(ExtrusionRoleModifier); + +struct ExtrusionRole : public ExtrusionRoleModifiers +{ + constexpr ExtrusionRole(const ExtrusionRoleModifier bit) : ExtrusionRoleModifiers(bit) {} + constexpr ExtrusionRole(const ExtrusionRoleModifiers bits) : ExtrusionRoleModifiers(bits) {} + + static constexpr const ExtrusionRoleModifiers None{}; + // Internal perimeter, not bridging. + static constexpr const ExtrusionRoleModifiers Perimeter{ ExtrusionRoleModifier::Perimeter }; + // External perimeter, not bridging. + static constexpr const ExtrusionRoleModifiers ExternalPerimeter{ ExtrusionRoleModifier::Perimeter | ExtrusionRoleModifier::External }; + // Perimeter, bridging. To be or'ed with ExtrusionRoleModifier::External for external bridging perimeter. + static constexpr const ExtrusionRoleModifiers OverhangPerimeter{ ExtrusionRoleModifier::Perimeter | ExtrusionRoleModifier::Bridge }; + // Sparse internal infill. + static constexpr const ExtrusionRoleModifiers InternalInfill{ ExtrusionRoleModifier::Infill }; + // Solid internal infill. + static constexpr const ExtrusionRoleModifiers SolidInfill{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Solid }; + // Top solid infill (visible). + //FIXME why there is no bottom solid infill type? + static constexpr const ExtrusionRoleModifiers TopSolidInfill{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Solid | ExtrusionRoleModifier::External }; + // Ironing infill at the top surfaces. + static constexpr const ExtrusionRoleModifiers Ironing{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Ironing | ExtrusionRoleModifier::External }; + // Visible bridging infill at the bottom of an object. + static constexpr const ExtrusionRoleModifiers BridgeInfill{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Solid | ExtrusionRoleModifier::Bridge | ExtrusionRoleModifier::External }; +// static constexpr const ExtrusionRoleModifiers InternalBridgeInfill{ ExtrusionRoleModifier::Infill | ExtrusionRoleModifier::Solid | ExtrusionRoleModifier::Bridge }; + // Gap fill extrusion, currently used for any variable width extrusion: Thin walls outside of the outer extrusion, + // gap fill in between perimeters, gap fill between the inner perimeter and infill. + //FIXME revise GapFill and ThinWall types, split Gap Fill to Gap Fill and ThinWall. + static constexpr const ExtrusionRoleModifiers GapFill{ ExtrusionRoleModifier::Thin }; // | ExtrusionRoleModifier::External }; +// static constexpr const ExtrusionRoleModifiers ThinWall{ ExtrusionRoleModifier::Thin }; + static constexpr const ExtrusionRoleModifiers Skirt{ ExtrusionRoleModifier::Skirt }; + // Support base material, printed with non-soluble plastic. + static constexpr const ExtrusionRoleModifiers SupportMaterial{ ExtrusionRoleModifier::Support }; + // Support interface material, printed with soluble plastic. + static constexpr const ExtrusionRoleModifiers SupportMaterialInterface{ ExtrusionRoleModifier::Support | ExtrusionRoleModifier::External }; + // Wipe tower material. + static constexpr const ExtrusionRoleModifiers WipeTower{ ExtrusionRoleModifier::Wipe }; + // Extrusion role for a collection with multiple extrusion roles. + static constexpr const ExtrusionRoleModifiers Mixed{ ExtrusionRoleModifier::Mixed }; +}; + +// Special flags describing loop +enum ExtrusionLoopRole { + elrDefault, + elrContourInternalPerimeter, + elrSkirt, +}; + +inline bool is_perimeter(ExtrusionRole role) +{ + return role == ExtrusionRole::Perimeter + || role == ExtrusionRole::ExternalPerimeter + || role == ExtrusionRole::OverhangPerimeter; +} + +inline bool is_infill(ExtrusionRole role) +{ + return role == ExtrusionRole::BridgeInfill + || role == ExtrusionRole::InternalInfill + || role == ExtrusionRole::SolidInfill + || role == ExtrusionRole::TopSolidInfill + || role == ExtrusionRole::Ironing; +} + +inline bool is_solid_infill(ExtrusionRole role) +{ + return role == ExtrusionRole::BridgeInfill + || role == ExtrusionRole::SolidInfill + || role == ExtrusionRole::TopSolidInfill + || role == ExtrusionRole::Ironing; +} + +inline bool is_bridge(ExtrusionRole role) { + return role == ExtrusionRole::BridgeInfill + || role == ExtrusionRole::OverhangPerimeter; +} + +enum GCodeExtrusionRole : uint8_t { + erNone, + erPerimeter, + erExternalPerimeter, + erOverhangPerimeter, + erInternalInfill, + erSolidInfill, + erTopSolidInfill, + erIroning, + erBridgeInfill, + erGapFill, + erSkirt, + erSupportMaterial, + erSupportMaterialInterface, + erWipeTower, + // Custom (user defined) G-code block, for example start / end G-code. + erCustom, + // Stopper to count number of enums. + erCount +}; + +// Convert a rich bitmask based ExtrusionRole to a less expressive ordinal GCodeExtrusionRole. +// GCodeExtrusionRole is to be serialized into G-code and deserialized by G-code viewer, +GCodeExtrusionRole extrusion_role_to_gcode_extrusion_role(ExtrusionRole role); + +std::string gcode_extrusion_role_to_string(GCodeExtrusionRole role); +GCodeExtrusionRole string_to_gcode_extrusion_role(const std::string_view role); + +} + +#endif // slic3r_ExtrusionRole_hpp_ diff --git a/src/libslic3r/Flow.hpp b/src/libslic3r/Flow.hpp index 04ced3e13..6d999d1c5 100644 --- a/src/libslic3r/Flow.hpp +++ b/src/libslic3r/Flow.hpp @@ -4,7 +4,7 @@ #include "libslic3r.h" #include "Config.hpp" #include "Exception.hpp" -#include "ExtrusionEntity.hpp" +#include "ExtrusionRole.hpp" namespace Slic3r { diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index a3841343b..59c652466 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -3,7 +3,7 @@ #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Point.hpp" -#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/ExtrusionRole.hpp" #include "libslic3r/PrintConfig.hpp" #include "libslic3r/CustomGCode.hpp" diff --git a/src/libslic3r/GCode/PressureEqualizer.hpp b/src/libslic3r/GCode/PressureEqualizer.hpp index 246a20568..350030e05 100644 --- a/src/libslic3r/GCode/PressureEqualizer.hpp +++ b/src/libslic3r/GCode/PressureEqualizer.hpp @@ -3,7 +3,7 @@ #include "../libslic3r.h" #include "../PrintConfig.hpp" -#include "../ExtrusionEntity.hpp" +#include "../ExtrusionRole.hpp" #include diff --git a/src/libslic3r/PerimeterGenerator.hpp b/src/libslic3r/PerimeterGenerator.hpp index 33d735a3e..4908e4f77 100644 --- a/src/libslic3r/PerimeterGenerator.hpp +++ b/src/libslic3r/PerimeterGenerator.hpp @@ -3,6 +3,7 @@ #include "libslic3r.h" #include +#include "ExtrusionEntityCollection.hpp" #include "Flow.hpp" #include "Polygon.hpp" #include "PrintConfig.hpp"