mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-23 08:41:11 -06:00
Fills were reimplemented in C++.
While reimplementing the FillPlanePath code, the octagon infill was fixed to extrude the right amount of material.
This commit is contained in:
parent
7da68c91a5
commit
be3e4caf1d
12 changed files with 1162 additions and 0 deletions
50
xs/src/libslic3r/Fill/FillHoneycomb.hpp
Normal file
50
xs/src/libslic3r/Fill/FillHoneycomb.hpp
Normal file
|
@ -0,0 +1,50 @@
|
|||
#ifndef slic3r_FillHoneycomb_hpp_
|
||||
#define slic3r_FillHoneycomb_hpp_
|
||||
|
||||
#include <map>
|
||||
|
||||
#include "../libslic3r.h"
|
||||
|
||||
#include "FillBase.hpp"
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
class FillHoneycomb : public FillWithDirection
|
||||
{
|
||||
public:
|
||||
virtual ~FillHoneycomb() {}
|
||||
virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms);
|
||||
|
||||
protected:
|
||||
// Caching the
|
||||
struct CacheID
|
||||
{
|
||||
CacheID(float adensity, coordf_t aspacing) :
|
||||
density(adensity), spacing(aspacing) {}
|
||||
float density;
|
||||
coordf_t spacing;
|
||||
bool operator<(const CacheID &other) const
|
||||
{ return (density < other.density) || (density == other.density && spacing < other.spacing); }
|
||||
bool operator==(const CacheID &other) const
|
||||
{ return density == other.density && spacing == other.spacing; }
|
||||
};
|
||||
struct CacheData
|
||||
{
|
||||
coord_t distance;
|
||||
coord_t hex_side;
|
||||
coord_t hex_width;
|
||||
coord_t pattern_height;
|
||||
coord_t y_short;
|
||||
coord_t x_offset;
|
||||
coord_t y_offset;
|
||||
Point hex_center;
|
||||
};
|
||||
typedef std::map<CacheID, CacheData> Cache;
|
||||
Cache cache;
|
||||
|
||||
virtual float _layer_angle(size_t idx) const { return 0.5f * float(M_PI) * (idx % 3); }
|
||||
};
|
||||
|
||||
} // namespace Slic3r
|
||||
|
||||
#endif // slic3r_FillHoneycomb_hpp_
|
Loading…
Add table
Add a link
Reference in a new issue