mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-15 10:47:50 -06:00
Tune gap fill and thin walls to less extreme values
This commit is contained in:
parent
36d5272f05
commit
9576973b57
1 changed files with 7 additions and 4 deletions
|
@ -92,7 +92,7 @@ PerimeterGenerator::process()
|
||||||
|
|
||||||
// the following offset2 ensures almost nothing in @thin_walls is narrower than $min_width
|
// the following offset2 ensures almost nothing in @thin_walls is narrower than $min_width
|
||||||
// (actually, something larger than that still may exist due to mitering or other causes)
|
// (actually, something larger than that still may exist due to mitering or other causes)
|
||||||
coord_t min_width = scale_(this->ext_perimeter_flow.nozzle_diameter / 3);
|
coord_t min_width = scale_(this->ext_perimeter_flow.nozzle_diameter / 2);
|
||||||
ExPolygons expp = offset2_ex(diffpp, -min_width/2, +min_width/2);
|
ExPolygons expp = offset2_ex(diffpp, -min_width/2, +min_width/2);
|
||||||
|
|
||||||
// the maximum thickness of our thin wall area is equal to the minimum thickness of a single loop
|
// the maximum thickness of our thin wall area is equal to the minimum thickness of a single loop
|
||||||
|
@ -246,7 +246,7 @@ PerimeterGenerator::process()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// collapse
|
// collapse
|
||||||
double min = 0.1*pwidth * (1 - INSET_OVERLAP_TOLERANCE);
|
double min = 0.2*pwidth * (1 - INSET_OVERLAP_TOLERANCE);
|
||||||
double max = 2*pspacing;
|
double max = 2*pspacing;
|
||||||
ExPolygons gaps_ex = diff_ex(
|
ExPolygons gaps_ex = diff_ex(
|
||||||
offset2(gaps, -min/2, +min/2),
|
offset2(gaps, -min/2, +min/2),
|
||||||
|
@ -256,7 +256,7 @@ PerimeterGenerator::process()
|
||||||
|
|
||||||
ThickPolylines polylines;
|
ThickPolylines polylines;
|
||||||
for (ExPolygons::const_iterator ex = gaps_ex.begin(); ex != gaps_ex.end(); ++ex)
|
for (ExPolygons::const_iterator ex = gaps_ex.begin(); ex != gaps_ex.end(); ++ex)
|
||||||
ex->medial_axis(max, min/2, &polylines);
|
ex->medial_axis(max, min, &polylines);
|
||||||
|
|
||||||
if (!polylines.empty()) {
|
if (!polylines.empty()) {
|
||||||
ExtrusionEntityCollection gap_fill = this->_variable_width(polylines,
|
ExtrusionEntityCollection gap_fill = this->_variable_width(polylines,
|
||||||
|
@ -436,7 +436,10 @@ PerimeterGenerator::_traverse_loops(const PerimeterGeneratorLoops &loops,
|
||||||
ExtrusionEntityCollection
|
ExtrusionEntityCollection
|
||||||
PerimeterGenerator::_variable_width(const ThickPolylines &polylines, ExtrusionRole role, Flow flow) const
|
PerimeterGenerator::_variable_width(const ThickPolylines &polylines, ExtrusionRole role, Flow flow) const
|
||||||
{
|
{
|
||||||
const double tolerance = scale_(0.1);
|
// this value determines granularity of adaptive width, as G-code does not allow
|
||||||
|
// variable extrusion within a single move; this value shall only affect the amount
|
||||||
|
// of segments, and any pruning shall be performed before we apply this tolerance
|
||||||
|
const double tolerance = scale_(0.05);
|
||||||
|
|
||||||
ExtrusionEntityCollection coll;
|
ExtrusionEntityCollection coll;
|
||||||
for (ThickPolylines::const_iterator p = polylines.begin(); p != polylines.end(); ++p) {
|
for (ThickPolylines::const_iterator p = polylines.begin(); p != polylines.end(); ++p) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue