Prusa MM Wipe Tower, Improvements of the 1st layer:
Thiner priming line along the wipe tower, relatively thick infill at the 1st layer to improve adhesion.
This commit is contained in:
parent
aaefb76888
commit
6bb773d0dd
1 changed files with 44 additions and 26 deletions
|
@ -498,7 +498,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(Purpose purpose, b
|
||||||
";-------------------------------------\n"
|
";-------------------------------------\n"
|
||||||
"; CP WIPE TOWER FIRST LAYER BRIM START\n");
|
"; CP WIPE TOWER FIRST LAYER BRIM START\n");
|
||||||
|
|
||||||
xy initial_position = wipeTower_box.lu - xy(m_perimeter_width * 10.f, 0);
|
xy initial_position = wipeTower_box.lu - xy(m_perimeter_width * 6.f, 0);
|
||||||
|
|
||||||
if (purpose == PURPOSE_MOVE_TO_TOWER || purpose == PURPOSE_MOVE_TO_TOWER_AND_EXTRUDE)
|
if (purpose == PURPOSE_MOVE_TO_TOWER || purpose == PURPOSE_MOVE_TO_TOWER_AND_EXTRUDE)
|
||||||
// Move with Z hop.
|
// Move with Z hop.
|
||||||
|
@ -510,7 +510,8 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(Purpose purpose, b
|
||||||
|
|
||||||
if (purpose == PURPOSE_EXTRUDE || purpose == PURPOSE_MOVE_TO_TOWER_AND_EXTRUDE) {
|
if (purpose == PURPOSE_EXTRUDE || purpose == PURPOSE_MOVE_TO_TOWER_AND_EXTRUDE) {
|
||||||
// Prime the extruder 10*m_perimeter_width left along the vertical edge of the wipe tower.
|
// Prime the extruder 10*m_perimeter_width left along the vertical edge of the wipe tower.
|
||||||
writer.extrude_explicit(wipeTower_box.ld - xy(m_perimeter_width * 10.f, 0), m_retract, 2400);
|
writer.extrude_explicit(wipeTower_box.ld - xy(m_perimeter_width * 6.f, 0),
|
||||||
|
1.5f * m_extrusion_flow * (wipeTower_box.lu.y - wipeTower_box.ld.y), 2400);
|
||||||
|
|
||||||
// The tool is supposed to be active and primed at the time when the wipe tower brim is extruded.
|
// The tool is supposed to be active and primed at the time when the wipe tower brim is extruded.
|
||||||
// toolchange_Change(writer, int(tool), m_material[tool]);
|
// toolchange_Change(writer, int(tool), m_material[tool]);
|
||||||
|
@ -807,33 +808,50 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::finish_layer(Purpose purpose)
|
||||||
writer.extrude(box.lu, 3200 * speed_factor)
|
writer.extrude(box.lu, 3200 * speed_factor)
|
||||||
.extrude(box.ru)
|
.extrude(box.ru)
|
||||||
.extrude(box.rd)
|
.extrude(box.rd)
|
||||||
.extrude(box.ld + xy(m_perimeter_width / 2, 0))
|
.extrude(box.ld + xy(m_perimeter_width / 2, 0));
|
||||||
.extrude(box.ld + xy(m_perimeter_width / 2, m_perimeter_width / 2));
|
|
||||||
|
|
||||||
// Extrude an inverse U at the left of the region.
|
if (m_is_first_layer) {
|
||||||
writer.extrude(fill_box.ld + xy(m_perimeter_width * 3, m_perimeter_width), 2900 * speed_factor)
|
// Extrude a dense infill at the 1st layer to improve 1st layer adhesion of the wipe tower.
|
||||||
.extrude(fill_box.lu + xy(m_perimeter_width * 3, - m_perimeter_width))
|
box.expand(- m_perimeter_width / 2);
|
||||||
.extrude(fill_box.lu + xy(m_perimeter_width * 6, - m_perimeter_width))
|
box.ld.y -= 0.5f * m_perimeter_width;
|
||||||
.extrude(fill_box.ld + xy(m_perimeter_width * 6, m_perimeter_width));
|
box.rd.y = box.ld.y;
|
||||||
|
int nsteps = int(floor((box.lu.y - box.ld.y) / (2. * (1.0 * m_perimeter_width))));
|
||||||
if (fill_box.lu.y - fill_box.ld.y > 4.f) {
|
float step = (box.lu.y - box.ld.y) / nsteps;
|
||||||
// Extrude three zig-zags.
|
for (size_t i = 0; i < nsteps; ++ i) {
|
||||||
float step = (m_wipe_tower_width - m_perimeter_width * 12.f) / 12.f;
|
writer.extrude(box.ld.x, writer.y() + 0.5f * step);
|
||||||
for (size_t i = 0; i < 3; ++ i) {
|
writer.extrude(box.rd.x, writer.y());
|
||||||
writer.extrude(writer.x() + step, fill_box.ld.y + m_perimeter_width * 8, 3200 * speed_factor);
|
writer.extrude(box.rd.x, writer.y() + 0.5f * step);
|
||||||
writer.extrude(writer.x() , fill_box.lu.y - m_perimeter_width * 8);
|
writer.extrude(box.ld.x, writer.y());
|
||||||
writer.extrude(writer.x() + step, fill_box.lu.y - m_perimeter_width );
|
|
||||||
writer.extrude(writer.x() + step, fill_box.lu.y - m_perimeter_width * 8);
|
|
||||||
writer.extrude(writer.x() , fill_box.ld.y + m_perimeter_width * 8);
|
|
||||||
writer.extrude(writer.x() + step, fill_box.ld.y + m_perimeter_width );
|
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
// Extrude a sparse infill to support the material to be printed above.
|
||||||
|
|
||||||
// Extrude an inverse U at the left of the region.
|
// Extrude an inverse U at the left of the region.
|
||||||
writer.extrude(fill_box.ru + xy(- m_perimeter_width * 6, - m_perimeter_width), 2900 * speed_factor)
|
writer.extrude(box.ld + xy(m_perimeter_width / 2, m_perimeter_width / 2))
|
||||||
.extrude(fill_box.ru + xy(- m_perimeter_width * 3, - m_perimeter_width))
|
.extrude(fill_box.ld + xy(m_perimeter_width * 3, m_perimeter_width), 2900 * speed_factor)
|
||||||
.extrude(fill_box.rd + xy(- m_perimeter_width * 3, m_perimeter_width))
|
.extrude(fill_box.lu + xy(m_perimeter_width * 3, - m_perimeter_width))
|
||||||
.extrude(fill_box.rd + xy(- m_perimeter_width, m_perimeter_width));
|
.extrude(fill_box.lu + xy(m_perimeter_width * 6, - m_perimeter_width))
|
||||||
|
.extrude(fill_box.ld + xy(m_perimeter_width * 6, m_perimeter_width));
|
||||||
|
|
||||||
|
if (fill_box.lu.y - fill_box.ld.y > 4.f) {
|
||||||
|
// Extrude three zig-zags.
|
||||||
|
float step = (m_wipe_tower_width - m_perimeter_width * 12.f) / 12.f;
|
||||||
|
for (size_t i = 0; i < 3; ++ i) {
|
||||||
|
writer.extrude(writer.x() + step, fill_box.ld.y + m_perimeter_width * 8, 3200 * speed_factor);
|
||||||
|
writer.extrude(writer.x() , fill_box.lu.y - m_perimeter_width * 8);
|
||||||
|
writer.extrude(writer.x() + step, fill_box.lu.y - m_perimeter_width );
|
||||||
|
writer.extrude(writer.x() + step, fill_box.lu.y - m_perimeter_width * 8);
|
||||||
|
writer.extrude(writer.x() , fill_box.ld.y + m_perimeter_width * 8);
|
||||||
|
writer.extrude(writer.x() + step, fill_box.ld.y + m_perimeter_width );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extrude an inverse U at the left of the region.
|
||||||
|
writer.extrude(fill_box.ru + xy(- m_perimeter_width * 6, - m_perimeter_width), 2900 * speed_factor)
|
||||||
|
.extrude(fill_box.ru + xy(- m_perimeter_width * 3, - m_perimeter_width))
|
||||||
|
.extrude(fill_box.rd + xy(- m_perimeter_width * 3, m_perimeter_width))
|
||||||
|
.extrude(fill_box.rd + xy(- m_perimeter_width, m_perimeter_width));
|
||||||
|
}
|
||||||
|
|
||||||
if (purpose == PURPOSE_MOVE_TO_TOWER_AND_EXTRUDE)
|
if (purpose == PURPOSE_MOVE_TO_TOWER_AND_EXTRUDE)
|
||||||
// Wipe along the front side of the current wiping box.
|
// Wipe along the front side of the current wiping box.
|
||||||
|
|
Loading…
Reference in a new issue