mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-15 11:05:56 +08:00
Wire spiral vase into the printing logic.
This commit is contained in:
parent
f59396e33d
commit
7fb5fcb450
@ -348,6 +348,17 @@ PrintGCode::process_layer(size_t idx, const Layer* layer, const Points& copies)
|
|||||||
gcodegen.config.apply(obj.config, true);
|
gcodegen.config.apply(obj.config, true);
|
||||||
|
|
||||||
// check for usage of spiralvase logic.
|
// check for usage of spiralvase logic.
|
||||||
|
this->_spiral_vase.enable = (
|
||||||
|
layer->id() > 0
|
||||||
|
&& (print.config.skirts == 0 || (layer->id() >= print.config.skirt_height && !print.has_infinite_skirt()))
|
||||||
|
&& std::find_if(layer->regions.cbegin(), layer->regions.cend(), [layer] (const LayerRegion* l)
|
||||||
|
{ return l->region()->config.bottom_solid_layers > layer->id()
|
||||||
|
|| l->perimeters.items_count() > 1
|
||||||
|
|| l->fills.items_count() > 0;
|
||||||
|
}) == layer->regions.cend()
|
||||||
|
);
|
||||||
|
this->_gcodegen.enable_loop_clipping = this->_spiral_vase.enable;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// if using spiralvase, disable loop clipping.
|
// if using spiralvase, disable loop clipping.
|
||||||
@ -658,9 +669,17 @@ PrintGCode::process_layer(size_t idx, const Layer* layer, const Points& copies)
|
|||||||
}
|
}
|
||||||
copy_idx++;
|
copy_idx++;
|
||||||
}
|
}
|
||||||
// write the resulting gcode
|
|
||||||
|
// Apply spiral vase post-processing if this layer contains suitable geometry
|
||||||
|
// (we must feed all the G-code into the post-processor, including the first
|
||||||
|
// bottom non-spiral layers otherwise it will mess with positions)
|
||||||
|
// we apply spiral vase at this stage because it requires a full layer
|
||||||
|
gcode = this->_spiral_vase.process_layer(gcode);
|
||||||
|
// Apply the cooling logic.
|
||||||
gcode = this->_cooling_buffer.append(gcode, std::to_string(reinterpret_cast<long long unsigned int>(layer->object())) + std::string(typeid(layer).name()),
|
gcode = this->_cooling_buffer.append(gcode, std::to_string(reinterpret_cast<long long unsigned int>(layer->object())) + std::string(typeid(layer).name()),
|
||||||
layer->id(), layer->print_z);
|
layer->id(), layer->print_z);
|
||||||
|
|
||||||
|
// write the resulting gcode
|
||||||
fh << this->filter(gcode);
|
fh << this->filter(gcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -742,6 +761,8 @@ PrintGCode::PrintGCode(Slic3r::Print& print, std::ostream& _fh) :
|
|||||||
_gcodegen.enable_cooling_markers = true;
|
_gcodegen.enable_cooling_markers = true;
|
||||||
_gcodegen.apply_print_config(config);
|
_gcodegen.apply_print_config(config);
|
||||||
|
|
||||||
|
if (config.spiral_vase) _spiral_vase.enable = true;
|
||||||
|
|
||||||
auto extruders {print.extruders()};
|
auto extruders {print.extruders()};
|
||||||
_gcodegen.set_extruders(extruders.cbegin(), extruders.cend());
|
_gcodegen.set_extruders(extruders.cbegin(), extruders.cend());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user