mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-06-30 16:35:10 +08:00
Integrating cooling tube parameters into wipe tower generator
This commit is contained in:
parent
d2006c8d8e
commit
e1421da5e8
@ -841,14 +841,17 @@ void WipeTowerPrusaMM::toolchange_Unload(
|
|||||||
.ram(xl + m_perimeter_width * 2, xr - m_perimeter_width * 2, y_step * 1.2f, e0, 1.74f * e, 5200);
|
.ram(xl + m_perimeter_width * 2, xr - m_perimeter_width * 2, y_step * 1.2f, e0, 1.74f * e, 5200);
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
// Pull the filament end into a cooling tube.
|
// Pull the filament end into a cooling tube (Alex)
|
||||||
writer.retract(15, 5000).retract(50, 5400).retract(15, 3000).retract(12, 2000);
|
//writer.retract(15, 5000).retract(50, 5400).retract(15, 3000).retract(12, 2000);
|
||||||
|
|
||||||
|
// Pull the filament end to the BEGINNING of the cooling tube
|
||||||
|
writer.retract(15, 5000).retract(m_cooling_tube_retraction+m_cooling_tube_length/2.f-42, 5400).retract(15, 3000).retract(12, 2000);
|
||||||
|
|
||||||
|
|
||||||
if (new_temperature != 0) // Set the extruder temperature, but don't wait.
|
if (new_temperature != 0) // Set the extruder temperature, but don't wait.
|
||||||
writer.set_extruder_temp(new_temperature, false);
|
writer.set_extruder_temp(new_temperature, false);
|
||||||
|
|
||||||
// cooling:
|
// cooling:
|
||||||
writer.retract(2, 2000);
|
|
||||||
writer.suppress_preview();
|
writer.suppress_preview();
|
||||||
writer.travel(writer.x(), writer.y() + y_step);
|
writer.travel(writer.x(), writer.y() + y_step);
|
||||||
const float start_x = writer.x();
|
const float start_x = writer.x();
|
||||||
@ -860,9 +863,10 @@ void WipeTowerPrusaMM::toolchange_Unload(
|
|||||||
i = 0;
|
i = 0;
|
||||||
while (i<N) {
|
while (i<N) {
|
||||||
const float speed = std::min(3.4,2.2 + i*0.3 + (i==0 ? 0 : 0.3)); // mm per second: 2.2, 2.8, 3.1, 3.4, 3.4, 3.4, ...
|
const float speed = std::min(3.4,2.2 + i*0.3 + (i==0 ? 0 : 0.3)); // mm per second: 2.2, 2.8, 3.1, 3.4, 3.4, 3.4, ...
|
||||||
const float e_dist = std::min(speed * time,10.f); // distance to travel
|
const float e_dist = std::min(speed * time,2*m_cooling_tube_length); // distance to travel
|
||||||
|
|
||||||
if (speed * time < 10.f) { // this move is the last one at this speed
|
// this move is the last one at this speed or someone set tube_length to zero
|
||||||
|
if (speed * time < 2*m_cooling_tube_length || m_cooling_tube_length<WT_EPSILON) {
|
||||||
++i;
|
++i;
|
||||||
time = m_par.cooling_time[m_current_tool] / N;
|
time = m_par.cooling_time[m_current_tool] / N;
|
||||||
}
|
}
|
||||||
@ -874,7 +878,9 @@ void WipeTowerPrusaMM::toolchange_Unload(
|
|||||||
const float feedrate = std::hypot(e_dist, x_dist) / ((e_dist / speed) / 60.f);
|
const float feedrate = std::hypot(e_dist, x_dist) / ((e_dist / speed) / 60.f);
|
||||||
writer.cool(start_x+x_dist/2.f,start_x,e_dist/2.f,-e_dist/2.f, feedrate);
|
writer.cool(start_x+x_dist/2.f,start_x,e_dist/2.f,-e_dist/2.f, feedrate);
|
||||||
}
|
}
|
||||||
writer.retract(-2, 2000);
|
// we should be at the beginning of the cooling tube again - let's move to parking position:
|
||||||
|
writer.retract(-m_cooling_tube_length/2.f+m_parking_pos_retraction-m_cooling_tube_retraction, 2000);
|
||||||
|
|
||||||
writer.travel(writer.x(), writer.y() - y_step,2400);
|
writer.travel(writer.x(), writer.y() - y_step,2400);
|
||||||
|
|
||||||
// Alex's old cooling:
|
// Alex's old cooling:
|
||||||
@ -944,8 +950,8 @@ void WipeTowerPrusaMM::toolchange_Load(
|
|||||||
{
|
{
|
||||||
float xl = cleaning_box.ld.x + m_perimeter_width * 0.75f;
|
float xl = cleaning_box.ld.x + m_perimeter_width * 0.75f;
|
||||||
float xr = cleaning_box.rd.x - m_perimeter_width * 0.75f;
|
float xr = cleaning_box.rd.x - m_perimeter_width * 0.75f;
|
||||||
float oldx=writer.x(); // the nozzle is in place to do the first wiping moves, we will remember the position
|
float oldx = writer.x(); // the nozzle is in place to do the first wiping moves, we will remember the position
|
||||||
float oldy=writer.y();
|
float oldy = writer.y();
|
||||||
|
|
||||||
writer.append("; CP TOOLCHANGE LOAD\n")
|
writer.append("; CP TOOLCHANGE LOAD\n")
|
||||||
// Load the filament while moving left / right,
|
// Load the filament while moving left / right,
|
||||||
@ -954,7 +960,8 @@ void WipeTowerPrusaMM::toolchange_Load(
|
|||||||
// Accelerate the filament loading
|
// Accelerate the filament loading
|
||||||
.load_move_x(xr, 20, 1400)
|
.load_move_x(xr, 20, 1400)
|
||||||
// Fast loading phase
|
// Fast loading phase
|
||||||
.load_move_x(xl, 40, 3000)
|
//.load_move_x(xl, 40, 3000) - Alex
|
||||||
|
.load_move_x(xl,m_parking_pos_retraction-50-2,3000) // loading is 2mm shorter that previous retraction
|
||||||
// Slowing down
|
// Slowing down
|
||||||
.load_move_x(xr, 20, 1600)
|
.load_move_x(xr, 20, 1600)
|
||||||
.load_move_x(xl, 10, 1000)
|
.load_move_x(xl, 10, 1000)
|
||||||
|
@ -102,6 +102,9 @@ struct WipeTowerParameters {
|
|||||||
for (unsigned int i=0;i<vect.size();++i)
|
for (unsigned int i=0;i<vect.size();++i)
|
||||||
if (i%2==1)
|
if (i%2==1)
|
||||||
filament_wipe_volumes.push_back(std::make_pair(vect[i-1],vect[i]));
|
filament_wipe_volumes.push_back(std::make_pair(vect[i-1],vect[i]));
|
||||||
|
|
||||||
|
if (!validate()) // in case we did not parse the input right
|
||||||
|
set_defaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string to_string() {
|
std::string to_string() {
|
||||||
@ -198,10 +201,12 @@ public:
|
|||||||
m_z_pos(0.f),
|
m_z_pos(0.f),
|
||||||
m_is_first_layer(false),
|
m_is_first_layer(false),
|
||||||
m_is_last_layer(false),
|
m_is_last_layer(false),
|
||||||
|
m_cooling_tube_retraction(cooling_tube_retraction),
|
||||||
|
m_cooling_tube_length(cooling_tube_length),
|
||||||
|
m_parking_pos_retraction(parking_pos_retraction),
|
||||||
m_current_tool(initial_tool),
|
m_current_tool(initial_tool),
|
||||||
m_par(parameters)
|
m_par(parameters)
|
||||||
{
|
{
|
||||||
printf("Jsem konstruktor WT a vidim cisla %f,%f,%f\n",cooling_tube_retraction,cooling_tube_length,parking_pos_retraction);
|
|
||||||
for (size_t i = 0; i < 4; ++ i) {
|
for (size_t i = 0; i < 4; ++ i) {
|
||||||
// Extruder specific parameters.
|
// Extruder specific parameters.
|
||||||
m_material[i] = PLA;
|
m_material[i] = PLA;
|
||||||
|
@ -177,7 +177,7 @@ PrintConfigDef::PrintConfigDef()
|
|||||||
def->sidetext = _L("mm");
|
def->sidetext = _L("mm");
|
||||||
def->cli = "cooling_tube_retraction=f";
|
def->cli = "cooling_tube_retraction=f";
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->default_value = new ConfigOptionFloat(0);
|
def->default_value = new ConfigOptionFloat(91.5f);
|
||||||
|
|
||||||
def = this->add("cooling_tube_length", coFloat);
|
def = this->add("cooling_tube_length", coFloat);
|
||||||
def->label = _L("Cooling tube length");
|
def->label = _L("Cooling tube length");
|
||||||
@ -185,7 +185,7 @@ PrintConfigDef::PrintConfigDef()
|
|||||||
def->sidetext = _L("mm");
|
def->sidetext = _L("mm");
|
||||||
def->cli = "cooling_tube_length=f";
|
def->cli = "cooling_tube_length=f";
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->default_value = new ConfigOptionFloat(0);
|
def->default_value = new ConfigOptionFloat(5.f);
|
||||||
|
|
||||||
def = this->add("default_acceleration", coFloat);
|
def = this->add("default_acceleration", coFloat);
|
||||||
def->label = _L("Default");
|
def->label = _L("Default");
|
||||||
@ -970,7 +970,7 @@ PrintConfigDef::PrintConfigDef()
|
|||||||
def->sidetext = _L("mm");
|
def->sidetext = _L("mm");
|
||||||
def->cli = "parking_pos_retraction=f";
|
def->cli = "parking_pos_retraction=f";
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->default_value = new ConfigOptionFloat(0);
|
def->default_value = new ConfigOptionFloat(92.f);
|
||||||
|
|
||||||
def = this->add("perimeter_acceleration", coFloat);
|
def = this->add("perimeter_acceleration", coFloat);
|
||||||
def->label = _L("Perimeters");
|
def->label = _L("Perimeters");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user