Added a single perimeter to the first layer of support or raft.

Fixes [Request] Add optional perimeter to raft 
Fixes First support layer does not stick to bed 

New parameters raft_first_layer_density and raft_first_layer_expansion
to influence the 1st layer of raft or support.
Fixes Allow to disable raft under support structures. 
Fixes raft is larger than necessary 
Fixes Supports on the build plate should have a solid bottom interface for better adhesion 

Changed the 1st layer infill to rectilinear even for soluble materials.
Fixes first layer of support for multi filament support oddly spaced 
Fixes Full Soluble Materials interfacing into Models + Soluble material noise on Bed 
This commit is contained in:
Vojtech Bubnik 2021-02-24 08:48:33 +01:00
parent 77d007c484
commit fcb714cd24
10 changed files with 178 additions and 80 deletions
src/libslic3r

View file

@ -2573,10 +2573,11 @@ std::string GCode::extrude_infill(const Print &print, const std::vector<ObjectBy
std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fills)
{
static constexpr const char *support_label = "support material";
static constexpr const char *support_interface_label = "support material interface";
std::string gcode;
if (! support_fills.entities.empty()) {
const char *support_label = "support material";
const char *support_interface_label = "support material interface";
const double support_speed = m_config.support_material_speed.value;
const double support_interface_speed = m_config.support_material_interface_speed.get_abs_value(support_speed);
for (const ExtrusionEntity *ee : support_fills.entities) {
@ -2589,9 +2590,14 @@ std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fill
gcode += this->extrude_path(*path, label, speed);
else {
const ExtrusionMultiPath *multipath = dynamic_cast<const ExtrusionMultiPath*>(ee);
assert(multipath != nullptr);
if (multipath)
gcode += this->extrude_multi_path(*multipath, label, speed);
else {
const ExtrusionEntityCollection *eec = dynamic_cast<const ExtrusionEntityCollection*>(ee);
assert(eec);
if (eec)
gcode += this->extrude_support(*eec);
}
}
}
}