Classes | |
| class | AutoArranger |
| class | CircleBed |
| A geometry abstraction for a circular print bed. Similarly to BoundingBox. More... | |
| struct | InfiniteBed |
| Representing an unbounded bed. More... | |
| struct | ArrangePolygon |
| Input/Output structure for the arrange() function. The poly field will not be modified during arrangement. Instead, the translation and rotation fields will mark the needed transformation for the polygon to be in the arranged position. These can also be set to an initial offset and rotation. More... | |
| struct | ArrangeParams |
Typedefs | |
| using | Item = _Item<ExPolygon> |
| using | Box = _Box<Point> |
| using | Circle = _Circle<Point> |
| using | MultiPolygon = ExPolygons |
| using | SpatElement = std::pair<Box, unsigned> |
| using | SpatIndex = bgi::rtree< SpatElement, bgi::rstar<16, 4> > |
| using | ItemGroup = std::vector<std::reference_wrapper<Item>> |
| using | ArrangePolygons = std::vector<ArrangePolygon> |
Functions | |
| static bool | z_ranges_overlap (double first_min, double first_max, double second_min, double second_max) |
| template<typename T> | |
| static bool | bed_exclusion_applies_impl (const T &item, const T &fixed_item) |
| bool | has_bed_exclusion_regions (const ArrangePolygons &polygons) |
| bool | bed_exclusion_applies (const ArrangePolygon &item, const ArrangePolygon &fixed_item) |
| void | update_arrange_params (ArrangeParams ¶ms, const DynamicPrintConfig *print_cfg, const ArrangePolygons &selected) |
| void | update_selected_items_inflation (ArrangePolygons &selected, const DynamicPrintConfig *print_cfg, ArrangeParams ¶ms) |
| void | update_unselected_items_inflation (ArrangePolygons &unselected, const DynamicPrintConfig *print_cfg, const ArrangeParams ¶ms) |
| void | update_selected_items_axis_align (ArrangePolygons &selected, const DynamicPrintConfig *print_cfg, const ArrangeParams ¶ms) |
| Points | get_shrink_bedpts (const DynamicPrintConfig *print_cfg, const ArrangeParams ¶ms) |
| template<class PConf> | |
| void | fill_config (PConf &pcfg, const ArrangeParams ¶ms) |
| static double | fixed_overfit (const std::tuple< double, Box > &result, const Box &binbb) |
| static double | fixed_overfit_topright_sliding (const std::tuple< double, Box > &result, const Box &binbb, const std::vector< Box > &excluded_boxes) |
| template<class Bin> | |
| void | remove_large_items (std::vector< Item > &items, Bin &&bin) |
| template<class S> | |
| Radians | min_area_boundingbox_rotation (const S &sh) |
| template<class S> | |
| Radians | fit_into_box_rotation (const S &sh, const _Box< TPoint< S > > &box) |
| template<class BinT> | |
| void | _arrange (std::vector< Item > &shapes, std::vector< Item > &excludes, const BinT &bin, const ArrangeParams ¶ms, std::function< void(unsigned, std::string)> progressfn, std::function< bool()> stopfn) |
| Box | to_nestbin (const BoundingBox &bb) |
| Circle | to_nestbin (const CircleBed &c) |
| ExPolygon | to_nestbin (const Polygon &p) |
| Box | to_nestbin (const InfiniteBed &bed) |
| coord_t | width (const BoundingBox &box) |
| coord_t | height (const BoundingBox &box) |
| double | area (const BoundingBox &box) |
| double | poly_area (const Points &pts) |
| double | distance_to (const Point &p1, const Point &p2) |
| static CircleBed | to_circle (const Point ¢er, const Points &points) |
| static void | process_arrangeable (const ArrangePolygon &arrpoly, std::vector< Item > &outp) |
| template<class Fn> | |
| auto | call_with_bed (const Points &bed, Fn &&fn) |
| template<> | |
| void | arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const Points &bed, const ArrangeParams ¶ms) |
| template<class BedT> | |
| void | arrange (ArrangePolygons &arrangables, const ArrangePolygons &excludes, const BedT &bed, const ArrangeParams ¶ms) |
| template void | arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const BoundingBox &bed, const ArrangeParams ¶ms) |
| template void | arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const CircleBed &bed, const ArrangeParams ¶ms) |
| template void | arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const Polygon &bed, const ArrangeParams ¶ms) |
| template void | arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const InfiniteBed &bed, const ArrangeParams ¶ms) |
| template<class TBed> | |
| void | arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const TBed &bed, const ArrangeParams ¶ms={}) |
| Arranges the input polygons. | |
| template<> | |
| void | arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const Points &bed, const ArrangeParams ¶ms) |
| void | arrange (ArrangePolygons &items, const Points &bed, const ArrangeParams ¶ms={}) |
| void | arrange (ArrangePolygons &items, const BoundingBox &bed, const ArrangeParams ¶ms={}) |
| void | arrange (ArrangePolygons &items, const CircleBed &bed, const ArrangeParams ¶ms={}) |
| void | arrange (ArrangePolygons &items, const Polygon &bed, const ArrangeParams ¶ms={}) |
| void | arrange (ArrangePolygons &items, const InfiniteBed &bed, const ArrangeParams ¶ms={}) |
Variables | |
| const double | BIG_ITEM_TRESHOLD = 0.02 |
| static const constexpr int | UNARRANGED = -1 |
| A logical bed representing an object not being arranged. Either the arrange has not yet successfully run on this ArrangePolygon or it could not fit the object due to overly large size or invalid geometry. | |
| using Slic3r::arrangement::ArrangePolygons = std::vector<ArrangePolygon> |
| using Slic3r::arrangement::Box = _Box<Point> |
| using Slic3r::arrangement::Circle = _Circle<Point> |
| using Slic3r::arrangement::Item = _Item<ExPolygon> |
| using Slic3r::arrangement::ItemGroup = std::vector<std::reference_wrapper<Item>> |
| using Slic3r::arrangement::SpatElement = std::pair<Box, unsigned> |
| using Slic3r::arrangement::SpatIndex = bgi::rtree< SpatElement, bgi::rstar<16, 4> > |
| void Slic3r::arrangement::_arrange | ( | std::vector< Item > & | shapes, |
| std::vector< Item > & | excludes, | ||
| const BinT & | bin, | ||
| const ArrangeParams & | params, | ||
| std::function< void(unsigned, std::string)> | progressfn, | ||
| std::function< bool()> | stopfn ) |
References _arrange(), Slic3r::arrangement::ArrangeParams::allow_rotations, fit_into_box_rotation(), min_area_boundingbox_rotation(), Slic3r::arrangement::ArrangeParams::min_obj_distance, Slic3r::arrangement::AutoArranger< TBin >::preload(), and remove_large_items().
Referenced by _arrange(), and arrange().
|
inline |
| void Slic3r::arrangement::arrange | ( | ArrangePolygons & | arrangables, |
| const ArrangePolygons & | excludes, | ||
| const BedT & | bed, | ||
| const ArrangeParams & | params ) |
References _arrange(), EPSILON, process_arrangeable(), Slic3r::arrangement::ArrangeParams::progressind, Slic3r::scaled(), Slic3r::arrangement::ArrangeParams::stopcondition, and to_nestbin().
| template void Slic3r::arrangement::arrange | ( | ArrangePolygons & | items, |
| const ArrangePolygons & | excludes, | ||
| const BoundingBox & | bed, | ||
| const ArrangeParams & | params ) |
| template void Slic3r::arrangement::arrange | ( | ArrangePolygons & | items, |
| const ArrangePolygons & | excludes, | ||
| const CircleBed & | bed, | ||
| const ArrangeParams & | params ) |
| template void Slic3r::arrangement::arrange | ( | ArrangePolygons & | items, |
| const ArrangePolygons & | excludes, | ||
| const InfiniteBed & | bed, | ||
| const ArrangeParams & | params ) |
| void Slic3r::arrangement::arrange | ( | ArrangePolygons & | items, |
| const ArrangePolygons & | excludes, | ||
| const Points & | bed, | ||
| const ArrangeParams & | params ) |
References Slic3r::Geometry::arrange(), and call_with_bed().
Referenced by Slic3r::GUI::Plater::_calib_pa_pattern(), Slic3r::arrange_objects(), Slic3r::duplicate(), Slic3r::GUI::Plater::find_new_position(), Slic3r::ImexArranger::finish(), Slic3r::GUI::ArrangeJob::process(), Slic3r::GUI::FillBedJob::process(), and Slic3r::CLI::run().
| void Slic3r::arrangement::arrange | ( | ArrangePolygons & | items, |
| const ArrangePolygons & | excludes, | ||
| const Points & | bed, | ||
| const ArrangeParams & | params ) |
References Slic3r::Geometry::arrange(), and call_with_bed().
Referenced by Slic3r::GUI::Plater::_calib_pa_pattern(), Slic3r::arrange_objects(), Slic3r::duplicate(), Slic3r::GUI::Plater::find_new_position(), Slic3r::ImexArranger::finish(), Slic3r::GUI::ArrangeJob::process(), Slic3r::GUI::FillBedJob::process(), and Slic3r::CLI::run().
| template void Slic3r::arrangement::arrange | ( | ArrangePolygons & | items, |
| const ArrangePolygons & | excludes, | ||
| const Polygon & | bed, | ||
| const ArrangeParams & | params ) |
| void Slic3r::arrangement::arrange | ( | ArrangePolygons & | items, |
| const ArrangePolygons & | excludes, | ||
| const TBed & | bed, | ||
| const ArrangeParams & | params = {} ) |
Arranges the input polygons.
WARNING: Currently, only convex polygons are supported by the libnest2d library which is used to do the arrangement. This might change in the future this is why the interface contains a general polygon capable to have holes.
| items | Input vector of ArrangePolygons. The transformation, rotation and bin_idx fields will be changed after the call finished and can be used to apply the result on the input polygon. |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| bool Slic3r::arrangement::bed_exclusion_applies | ( | const ArrangePolygon & | item, |
| const ArrangePolygon & | fixed_item ) |
References bed_exclusion_applies_impl().
|
static |
References z_ranges_overlap().
Referenced by bed_exclusion_applies(), and fill_config().
| auto Slic3r::arrangement::call_with_bed | ( | const Points & | bed, |
| Fn && | fn ) |
References Slic3r::area(), call_with_bed(), poly_area(), Slic3r::arrangement::CircleBed::radius(), and to_circle().
Referenced by arrange(), and call_with_bed().
References distance_to().
Referenced by distance_to(), and to_circle().
| void Slic3r::arrangement::fill_config | ( | PConf & | pcfg, |
| const ArrangeParams & | params ) |
References Slic3r::arrangement::ArrangeParams::accuracy, Slic3r::arrangement::ArrangeParams::allow_rotations, bed_exclusion_applies_impl(), Slic3r::arrangement::ArrangeParams::belt_axis, Slic3r::arrangement::ArrangeParams::belt_reversed, Slic3r::arrangement::ArrangeParams::do_final_align, EPSILON, Slic3r::arrangement::ArrangeParams::excluded_regions, fill_config(), Slic3r::arrangement::ArrangeParams::is_belt, Slic3r::arrangement::ArrangeParams::is_seq_print, Slic3r::arrangement::ArrangeParams::nonprefered_regions, Slic3r::arrangement::ArrangeParams::parallel, PI, process_arrangeable(), and Slic3r::scaled().
Referenced by Slic3r::arrangement::AutoArranger< TBin >::AutoArranger(), and fill_config().
| Radians Slic3r::arrangement::fit_into_box_rotation | ( | const S & | sh, |
| const _Box< TPoint< S > > & | box ) |
References fit_into_box_rotation().
Referenced by _arrange(), and fit_into_box_rotation().
|
static |
References Slic3r::diff(), and fixed_overfit().
Referenced by Slic3r::arrangement::AutoArranger< TBin >::AutoArranger(), and fixed_overfit().
|
static |
References Slic3r::diff(), and fixed_overfit_topright_sliding().
Referenced by fixed_overfit_topright_sliding().
| Points Slic3r::arrangement::get_shrink_bedpts | ( | const DynamicPrintConfig * | print_cfg, |
| const ArrangeParams & | params ) |
References Slic3r::arrangement::ArrangeParams::bed_shrink_x, Slic3r::arrangement::ArrangeParams::bed_shrink_y, Slic3r::MultiPoint::bounding_box(), Slic3r::BoundingBoxBase< PointType, APointsType >::center(), Slic3r::center(), Slic3r::Geometry::dist(), Slic3r::get_bed_shape(), get_shrink_bedpts(), Slic3r::scaled(), and SGN.
Referenced by Slic3r::GUI::Plater::_calib_pa_pattern(), and get_shrink_bedpts().
| bool Slic3r::arrangement::has_bed_exclusion_regions | ( | const ArrangePolygons & | polygons | ) |
|
inline |
References height(), Slic3r::BoundingBoxBase< PointType, APointsType >::max, and Slic3r::BoundingBoxBase< PointType, APointsType >::min.
Referenced by area(), and height().
| Radians Slic3r::arrangement::min_area_boundingbox_rotation | ( | const S & | sh | ) |
References min_area_boundingbox_rotation().
Referenced by _arrange(), and min_area_boundingbox_rotation().
|
inline |
References Slic3r::Polygon::area(), and poly_area().
Referenced by call_with_bed(), and poly_area().
|
static |
References Slic3r::arrangement::ArrangePolygon::bed_exclusion_extruder_id, Slic3r::arrangement::ArrangePolygon::bed_exclusion_extruder_ids, Slic3r::arrangement::ArrangePolygon::bed_idx, Slic3r::ExPolygon::contour, Slic3r::arrangement::ArrangePolygon::extrude_ids, Slic3r::arrangement::ArrangePolygon::filament_temp_type, Slic3r::arrangement::ArrangePolygon::first_bed_temp, Slic3r::arrangement::ArrangePolygon::has_z_range, Slic3r::arrangement::ArrangePolygon::height, Slic3r::arrangement::ArrangePolygon::inflation, Slic3r::arrangement::ArrangePolygon::is_bed_exclusion, Slic3r::Polygon::is_counter_clockwise(), Slic3r::arrangement::ArrangePolygon::is_virt_object, Slic3r::arrangement::ArrangePolygon::is_wipe_tower, Slic3r::arrangement::ArrangePolygon::itemid, Slic3r::arrangement::ArrangePolygon::name, Slic3r::arrangement::ArrangePolygon::poly, Slic3r::arrangement::ArrangePolygon::print_temp, Slic3r::arrangement::ArrangePolygon::priority, process_arrangeable(), Slic3r::MultiPoint::reverse(), Slic3r::arrangement::ArrangePolygon::rotation, Slic3r::MultiPoint::size(), Slic3r::arrangement::ArrangePolygon::translation, Slic3r::arrangement::ArrangePolygon::vitrify_temp, Slic3r::arrangement::ArrangePolygon::z_max, and Slic3r::arrangement::ArrangePolygon::z_min.
Referenced by arrange(), fill_config(), and process_arrangeable().
| void Slic3r::arrangement::remove_large_items | ( | std::vector< Item > & | items, |
| Bin && | bin ) |
References remove_large_items().
Referenced by _arrange(), and remove_large_items().
References Slic3r::center(), distance_to(), SCALED_EPSILON, and to_circle().
Referenced by call_with_bed(), and to_circle().
|
inline |
References Slic3r::BoundingBoxBase< PointType, APointsType >::max, Slic3r::BoundingBoxBase< PointType, APointsType >::min, to_nestbin(), Slic3r::X, and Slic3r::Y.
Referenced by arrange(), to_nestbin(), to_nestbin(), to_nestbin(), and to_nestbin().
References Slic3r::arrangement::CircleBed::center(), Slic3r::Circle, Slic3r::arrangement::CircleBed::radius(), and to_nestbin().
|
inline |
References Slic3r::arrangement::InfiniteBed::center, and to_nestbin().
| void Slic3r::arrangement::update_arrange_params | ( | ArrangeParams & | params, |
| const DynamicPrintConfig * | print_cfg, | ||
| const ArrangePolygons & | selected ) |
References Slic3r::arrangement::ArrangeParams::bed_shrink_x, Slic3r::arrangement::ArrangeParams::bed_shrink_y, Slic3r::arrangement::ArrangeParams::brim_skirt_distance, Slic3r::arrangement::ArrangeParams::clearance_radius, Slic3r::get_real_skirt_dist(), and Slic3r::arrangement::ArrangeParams::is_seq_print.
Referenced by Slic3r::CLI::run().
| void Slic3r::arrangement::update_selected_items_axis_align | ( | ArrangePolygons & | selected, |
| const DynamicPrintConfig * | print_cfg, | ||
| const ArrangeParams & | params ) |
References Slic3r::arrangement::ArrangeParams::align_to_y_axis, Slic3r::angle(), EPSILON, PI, and update_selected_items_axis_align().
Referenced by Slic3r::CLI::run(), and update_selected_items_axis_align().
| void Slic3r::arrangement::update_selected_items_inflation | ( | ArrangePolygons & | selected, |
| const DynamicPrintConfig * | print_cfg, | ||
| ArrangeParams & | params ) |
References Slic3r::MultiPoint::bounding_box(), Slic3r::arrangement::ArrangeParams::clearance_radius, Slic3r::get_bed_shape(), Slic3r::arrangement::ArrangeParams::is_seq_print, MAX_OUTER_NOZZLE_DIAMETER, Slic3r::arrangement::ArrangeParams::min_obj_distance, Slic3r::arrangement::ArrangeParams::object_skirt_offset, and Slic3r::scaled().
Referenced by Slic3r::CLI::run().
| void Slic3r::arrangement::update_unselected_items_inflation | ( | ArrangePolygons & | unselected, |
| const DynamicPrintConfig * | print_cfg, | ||
| const ArrangeParams & | params ) |
References Slic3r::arrangement::ArrangeParams::bed_shrink_x, Slic3r::arrangement::ArrangeParams::bed_shrink_y, Slic3r::arrangement::ArrangeParams::clearance_radius, Slic3r::arrangement::ArrangeParams::is_seq_print, Slic3r::scaled(), and update_unselected_items_inflation().
Referenced by Slic3r::CLI::run(), and update_unselected_items_inflation().
|
inline |
References Slic3r::BoundingBoxBase< PointType, APointsType >::max, Slic3r::BoundingBoxBase< PointType, APointsType >::min, and width().
Referenced by area(), and width().
|
static |
References EPSILON.
Referenced by bed_exclusion_applies_impl().
| const double Slic3r::arrangement::BIG_ITEM_TRESHOLD = 0.02 |
|
staticconstexpr |
A logical bed representing an object not being arranged. Either the arrange has not yet successfully run on this ArrangePolygon or it could not fit the object due to overly large size or invalid geometry.
Referenced by Slic3r::ImexArranger::finish(), Slic3r::arrangement::ArrangePolygon::is_arranged(), Slic3r::GUI::PartPlateList::postprocess_arrange_polygon(), and Slic3r::GUI::FillBedJob::process().