blob: eb558f088b5e73b7425dd501605ae18b4f2d2295 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#ifndef slic3r_FillSmooth_hpp_
#define slic3r_FillSmooth_hpp_
#include "../libslic3r.h"
#include "FillBase.hpp"
namespace Slic3r {
class FillSmooth : public Fill
{
public:
FillSmooth() {
nbPass = 2;
anglePass[0] = float(M_PI/4);
anglePass[1] = -float(M_PI/4);
anglePass[2] = 0;
fillPattern[0] = InfillPattern::ipRectilinear;
fillPattern[1] = InfillPattern::ipRectilinear;
fillPattern[2] = InfillPattern::ipRectilinear;
rolePass[0] = erSolidInfill;
rolePass[1] = erTopSolidInfill;
rolePass[2] = erSolidInfill;
percentWidth[0] = 0.9;
percentWidth[1] = 2;
percentWidth[2] = 1.0;
percentFlow[0] = 0.7;
percentFlow[1] = 0.3;
percentFlow[2] = 0.0;
double extrusionMult = 1.0;
percentFlow[0] *= extrusionMult;
percentFlow[1] *= extrusionMult;
percentFlow[2] *= extrusionMult;
}
virtual Fill* clone() const { return new FillSmooth(*this); }
virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms);
virtual void fill_surface_extrusion(const Surface *surface, const FillParams ¶ms,
const Flow &flow, const ExtrusionRole &role, ExtrusionEntitiesPtr &out);
protected:
int nbPass=2;
double percentWidth[3];
double percentFlow[3];
float anglePass[3];
ExtrusionRole rolePass[3];
InfillPattern fillPattern[3];
};
class FillSmoothTriple : public FillSmooth
{
public:
FillSmoothTriple() {
nbPass = 3;
anglePass[0] = float(M_PI / 4);
anglePass[1] = -float(M_PI / 4);
anglePass[2] = float(M_PI / 12); //align with nothing
fillPattern[0] = InfillPattern::ipRectilinear;
fillPattern[1] = InfillPattern::ipConcentric;
fillPattern[2] = InfillPattern::ipRectilinear;
rolePass[0] = erSolidInfill;
rolePass[1] = erSolidInfill;
rolePass[2] = erTopSolidInfill;
percentWidth[0] = 0.8;
percentWidth[1] = 1.5;
percentWidth[2] = 2.8;
percentFlow[0] = 0.7;
percentFlow[1] = 0.2;
percentFlow[2] = 0.1;
double extrusionMult = 1.0;
percentFlow[0] *= extrusionMult;
percentFlow[1] *= extrusionMult;
percentFlow[2] *= extrusionMult;
}
virtual Fill* clone() const { return new FillSmoothTriple(*this); }
};
class FillSmoothHilbert : public FillSmooth
{
public:
FillSmoothHilbert() {
nbPass = 2;
anglePass[0] = 0;
anglePass[1] = -float(M_PI / 4);
anglePass[2] = float(M_PI / 4);
fillPattern[0] = InfillPattern::ipHilbertCurve; //ipHilbertCurve
fillPattern[1] = InfillPattern::ipRectilinear;
fillPattern[2] = InfillPattern::ipRectilinear;
rolePass[0] = erSolidInfill;
rolePass[1] = erSolidInfill;
rolePass[2] = erTopSolidInfill;
percentWidth[0] = 1.0;
percentWidth[1] = 1.0;
percentWidth[2] = 1.0;
percentFlow[0] = 0.8;
percentFlow[1] = 0.1;
percentFlow[2] = 0.1;
double extrusionMult = 1.0;
percentFlow[0] *= extrusionMult;
percentFlow[1] *= extrusionMult;
percentFlow[2] *= extrusionMult;
}
virtual Fill* clone() const { return new FillSmoothHilbert(*this); }
};
} // namespace Slic3r
#endif // slic3r_FillSmooth_hpp_
|