OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Arrange.cpp File Reference
#include "Arrange.hpp"
#include "ExPolygon.hpp"
#include "Point.hpp"
#include "Print.hpp"
#include "BoundingBox.hpp"
#include "PrintConfig.hpp"
#include "libslic3r.h"
#include <Eigen/Core>
#include <boost/geometry/index/parameters.hpp>
#include <functional>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <cstddef>
#include <boost/geometry/algorithms/convert.hpp>
#include <array>
#include <boost/geometry/index/predicates.hpp>
#include <iterator>
#include <exception>
#include <libnest2d/backends/libslic3r/geometries.hpp>
#include "libnest2d/common.hpp"
#include "libnest2d/geometry_traits_nfp.hpp"
#include "libnest2d/nester.hpp"
#include "libnest2d/geometry_traits.hpp"
#include <libnest2d/optimizers/nlopt/subplex.hpp>
#include <libnest2d/placers/nfpplacer.hpp>
#include <libnest2d/selections/firstfit.hpp>
#include <libnest2d/utils/rotcalipers.hpp>
#include <numeric>
#include <boost/geometry/index/rtree.hpp>
#include <utility>
#include <vector>
#include <tuple>
#include <set>
#include <string>
#include <boost/log/trivial.hpp>
#include <boost/multiprecision/integer.hpp>
#include <boost/rational.hpp>
#include "MultiMaterialSegmentation.hpp"
Include dependency graph for Arrange.cpp:

Go to the source code of this file.

Classes

struct  libnest2d::_NumTag< LargeInt >
struct  libnest2d::_NumTag< boost::rational< T > >
struct  libnest2d::nfp::NfpImpl< S, NfpLevel::CONVEX_ONLY >
class  Slic3r::arrangement::AutoArranger< TBin >

Namespaces

namespace  libnest2d
namespace  libnest2d::nfp
namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::arrangement

Macros

#define VITRIFY_TEMP_DIFF_THRSH   15
#define SGN(x)

Typedefs

using libnest2d::LargeInt = boost::multiprecision::int128_t
using Slic3r::arrangement::Item = _Item<ExPolygon>
using Slic3r::arrangement::Box = _Box<Point>
using Slic3r::arrangement::Circle = _Circle<Point>
using Slic3r::arrangement::MultiPolygon = ExPolygons
using Slic3r::arrangement::SpatElement = std::pair<Box, unsigned>
using Slic3r::arrangement::SpatIndex = bgi::rtree< SpatElement, bgi::rstar<16, 4> >
using Slic3r::arrangement::ItemGroup = std::vector<std::reference_wrapper<Item>>

Functions

template<class Tout = double, class = FloatingOnly<Tout>, int... EigenArgs>
constexpr Eigen::Matrix< Tout, 2, EigenArgs... > Slic3r::unscaled (const Slic3r::Point &v) noexcept
static bool Slic3r::arrangement::z_ranges_overlap (double first_min, double first_max, double second_min, double second_max)
template<typename T>
static bool Slic3r::arrangement::bed_exclusion_applies_impl (const T &item, const T &fixed_item)
bool Slic3r::arrangement::has_bed_exclusion_regions (const ArrangePolygons &polygons)
bool Slic3r::arrangement::bed_exclusion_applies (const ArrangePolygon &item, const ArrangePolygon &fixed_item)
void Slic3r::arrangement::update_arrange_params (ArrangeParams &params, const DynamicPrintConfig *print_cfg, const ArrangePolygons &selected)
void Slic3r::arrangement::update_selected_items_inflation (ArrangePolygons &selected, const DynamicPrintConfig *print_cfg, ArrangeParams &params)
void Slic3r::arrangement::update_unselected_items_inflation (ArrangePolygons &unselected, const DynamicPrintConfig *print_cfg, const ArrangeParams &params)
void Slic3r::arrangement::update_selected_items_axis_align (ArrangePolygons &selected, const DynamicPrintConfig *print_cfg, const ArrangeParams &params)
Points Slic3r::arrangement::get_shrink_bedpts (const DynamicPrintConfig *print_cfg, const ArrangeParams &params)
template<class PConf>
void Slic3r::arrangement::fill_config (PConf &pcfg, const ArrangeParams &params)
static double Slic3r::arrangement::fixed_overfit (const std::tuple< double, Box > &result, const Box &binbb)
static double Slic3r::arrangement::fixed_overfit_topright_sliding (const std::tuple< double, Box > &result, const Box &binbb, const std::vector< Box > &excluded_boxes)
template<class Bin>
void Slic3r::arrangement::remove_large_items (std::vector< Item > &items, Bin &&bin)
template<class S>
Radians Slic3r::arrangement::min_area_boundingbox_rotation (const S &sh)
template<class S>
Radians Slic3r::arrangement::fit_into_box_rotation (const S &sh, const _Box< TPoint< S > > &box)
template<class BinT>
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)
Box Slic3r::arrangement::to_nestbin (const BoundingBox &bb)
Circle Slic3r::arrangement::to_nestbin (const CircleBed &c)
ExPolygon Slic3r::arrangement::to_nestbin (const Polygon &p)
Box Slic3r::arrangement::to_nestbin (const InfiniteBed &bed)
coord_t Slic3r::arrangement::width (const BoundingBox &box)
coord_t Slic3r::arrangement::height (const BoundingBox &box)
double Slic3r::arrangement::area (const BoundingBox &box)
double Slic3r::arrangement::poly_area (const Points &pts)
double Slic3r::arrangement::distance_to (const Point &p1, const Point &p2)
static CircleBed Slic3r::arrangement::to_circle (const Point &center, const Points &points)
static void Slic3r::arrangement::process_arrangeable (const ArrangePolygon &arrpoly, std::vector< Item > &outp)
template<class Fn>
auto Slic3r::arrangement::call_with_bed (const Points &bed, Fn &&fn)
template<>
void Slic3r::arrangement::arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const Points &bed, const ArrangeParams &params)
template<class BedT>
void Slic3r::arrangement::arrange (ArrangePolygons &arrangables, const ArrangePolygons &excludes, const BedT &bed, const ArrangeParams &params)
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 Polygon &bed, const ArrangeParams &params)
template void Slic3r::arrangement::arrange (ArrangePolygons &items, const ArrangePolygons &excludes, const InfiniteBed &bed, const ArrangeParams &params)

Variables

const double Slic3r::arrangement::BIG_ITEM_TRESHOLD = 0.02

Class Documentation

◆ libnest2d::_NumTag< LargeInt >

struct libnest2d::_NumTag< LargeInt >
Class Members
typedef ScalarTag Type ScalarTag

◆ libnest2d::_NumTag< boost::rational< T > >

struct libnest2d::_NumTag< boost::rational< T > >
template<class T>
struct libnest2d::_NumTag< boost::rational< T > >
Class Members
typedef RationalTag Type RationalTag

Macro Definition Documentation

◆ SGN

#define SGN ( x)
Value:
((x) >= 0 ? 1 : -1)

Referenced by Slic3r::arrangement::get_shrink_bedpts().

◆ VITRIFY_TEMP_DIFF_THRSH

#define VITRIFY_TEMP_DIFF_THRSH   15