Po eilinio programos atnaujinimo vėl reikia modifikuoti Prusa Slicerį, kad veiktų su Diamond ekstruderiu. Diff failo turinys pradinio programos kodo modifikavimui:
diff -ruN PrusaSlicer-version_2.1.1/src/libslic3r/GCode/WipeTower.cpp PrusaSlicer-version_2.1.1.mod/src/libslic3r/GCode/WipeTower.cpp --- PrusaSlicer-version_2.1.1/src/libslic3r/GCode/WipeTower.cpp 2019-12-10 17:09:10.000000000 +0200 +++ PrusaSlicer-version_2.1.1.mod/src/libslic3r/GCode/WipeTower.cpp 2019-12-17 08:26:59.221375504 +0200 @@ -750,8 +750,7 @@ if (m_set_extruder_trimpot) writer.set_extruder_trimpot(550); // Reset the extruder current to a normal value. writer.speed_override_restore(); - writer.feedrate(6000) - .flush_planner_queue() + writer.flush_planner_queue() .reset_extruder() .append("; CP TOOLCHANGE END\n" ";------------------\n" @@ -800,11 +799,13 @@ // The tool is supposed to be active and primed at the time when the wipe tower brim is extruded. // Extrude 4 rounds of a brim around the future wipe tower. box_coordinates box(wipeTower_box); + box.expand(m_perimeter_width); for (size_t i = 0; i < 4; ++ i) { - box.expand(m_perimeter_width - m_layer_height*(1.f-M_PI_4)); // the brim shall have 'normal' spacing with no extra void space + //box.expand(m_perimeter_width - m_layer_height*(1.f-M_PI_4)); // the brim shall have 'normal' spacing with no extra void space writer.travel (box.ld, 7000) .extrude(box.lu, 2100).extrude(box.ru) .extrude(box.rd ).extrude(box.ld); + box.expand(m_perimeter_width); } writer.travel(wipeTower_box.ld, 7000); // Move to the front left corner. @@ -933,18 +934,6 @@ float turning_point = (!m_left_to_right ? xl : xr ); if (m_semm && (m_cooling_tube_retraction != 0 || m_cooling_tube_length != 0)) { float total_retraction_distance = m_cooling_tube_retraction + m_cooling_tube_length/2.f - 15.f; // the 15mm is reserved for the first part after ramming - writer.suppress_preview() - .retract(15.f, m_filpar[m_current_tool].unloading_speed_start * 60.f) // feedrate 5000mm/min = 83mm/s - .retract(0.70f * total_retraction_distance, 1.0f * m_filpar[m_current_tool].unloading_speed * 60.f) - .retract(0.20f * total_retraction_distance, 0.5f * m_filpar[m_current_tool].unloading_speed * 60.f) - .retract(0.10f * total_retraction_distance, 0.3f * m_filpar[m_current_tool].unloading_speed * 60.f) - - /*.load_move_x_advanced(turning_point, -15.f, 83.f, 50.f) // this is done at fixed speed - .load_move_x_advanced(old_x, -0.70f * total_retraction_distance, 1.0f * m_filpar[m_current_tool].unloading_speed) - .load_move_x_advanced(turning_point, -0.20f * total_retraction_distance, 0.5f * m_filpar[m_current_tool].unloading_speed) - .load_move_x_advanced(old_x, -0.10f * total_retraction_distance, 0.3f * m_filpar[m_current_tool].unloading_speed) - .travel(old_x, writer.y()) // in case previous move was shortened to limit feedrate*/ - .resume_preview(); } // Wipe tower should only change temperature with single extruder MM. Otherwise, all temperatures should // be already set and there is no need to change anything. Also, the temperature could be changed @@ -981,7 +970,7 @@ // let's wait is necessary: writer.wait(m_filpar[m_current_tool].delay); // 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.retract(-m_cooling_tube_length/2.f+m_parking_pos_retraction-m_cooling_tube_retraction, 2000); // this is to align ramming and future wiping extrusions, so the future y-steps can be uniform from the start: // the perimeter_width will later be subtracted, it is there to not load while moving over just extruded material @@ -1009,7 +998,7 @@ // Travel to where we assume we are. Custom toolchange or some special T code handling (parking extruder etc) // gcode could have left the extruder somewhere, we cannot just start extruding. Vec2f current_pos = writer.pos_rotated(); - writer.append(std::string("G1 X") + std::to_string(current_pos.x()) + " Y" + std::to_string(current_pos.y()) + "\n"); + //writer.append(std::string("G1 X") + std::to_string(current_pos.x()) + " Y" + std::to_string(current_pos.y()) + "\n"); // The toolchange Tn command will be inserted later, only in case that the user does // not provide a custom toolchange gcode. @@ -1035,15 +1024,6 @@ writer.append("; CP TOOLCHANGE LOAD\n") .suppress_preview() - /*.load_move_x_advanced(turning_point, 0.2f * edist, 0.3f * m_filpar[m_current_tool].loading_speed) // Acceleration - .load_move_x_advanced(oldx, 0.5f * edist, m_filpar[m_current_tool].loading_speed) // Fast phase - .load_move_x_advanced(turning_point, 0.2f * edist, 0.3f * m_filpar[m_current_tool].loading_speed) // Slowing down - .load_move_x_advanced(oldx, 0.1f * edist, 0.1f * m_filpar[m_current_tool].loading_speed) // Super slow*/ - - .load(0.2f * edist, 60.f * m_filpar[m_current_tool].loading_speed_start) - .load_move_x_advanced(turning_point, 0.7f * edist, m_filpar[m_current_tool].loading_speed) // Fast phase - .load_move_x_advanced(oldx, 0.1f * edist, 0.1f * m_filpar[m_current_tool].loading_speed) // Super slow*/ - .travel(oldx, writer.y()) // in case last move was shortened to limit x feedrate .resume_preview(); @@ -1091,9 +1071,9 @@ float traversed_x = writer.x(); if (m_left_to_right) - writer.extrude(xr - (i % 4 == 0 ? 0 : 1.5*m_perimeter_width), writer.y(), wipe_speed * wipe_coeff); + writer.extrude(xr - (i % 4 == 0 ? 0 : 1.5*m_perimeter_width), writer.y()); else - writer.extrude(xl + (i % 4 == 1 ? 0 : 1.5*m_perimeter_width), writer.y(), wipe_speed * wipe_coeff); + writer.extrude(xl + (i % 4 == 1 ? 0 : 1.5*m_perimeter_width), writer.y()); if (writer.y()+EPSILON > cleaning_box.lu.y()-0.5f*m_perimeter_width) break; // in case next line would not fit @@ -1101,7 +1081,7 @@ traversed_x -= writer.x(); x_to_wipe -= fabs(traversed_x); if (x_to_wipe < WT_EPSILON) { - writer.travel(m_left_to_right ? xl + 1.5*m_perimeter_width : xr - 1.5*m_perimeter_width, writer.y(), 7200); + writer.travel(m_left_to_right ? xl + 1.5*m_perimeter_width : xr - 1.5*m_perimeter_width, writer.y()); break; } // stepping to the next line: diff -ruN PrusaSlicer-version_2.1.1/src/libslic3r/PrintConfig.cpp PrusaSlicer-version_2.1.1.mod/src/libslic3r/PrintConfig.cpp --- PrusaSlicer-version_2.1.1/src/libslic3r/PrintConfig.cpp 2019-12-10 17:09:10.000000000 +0200 +++ PrusaSlicer-version_2.1.1.mod/src/libslic3r/PrintConfig.cpp 2019-12-17 08:28:09.336120964 +0200 @@ -2163,17 +2163,17 @@ def->tooltip = L("This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " "volumes below."); - def->set_default_value(new ConfigOptionFloats { 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f }); + def->set_default_value(new ConfigOptionFloats { 10.f, 10.f, 10.f, 10.f, 10.f, 10.f, 10.f, 10.f, 10.f, 10.f }); def = this->add("wiping_volumes_matrix", coFloats); def->label = L("Purging volumes - matrix"); def->tooltip = L("This matrix describes volumes (in cubic milimetres) required to purge the" " new filament on the wipe tower for any given pair of tools."); - def->set_default_value(new ConfigOptionFloats { 0.f, 140.f, 140.f, 140.f, 140.f, - 140.f, 0.f, 140.f, 140.f, 140.f, - 140.f, 140.f, 0.f, 140.f, 140.f, - 140.f, 140.f, 140.f, 0.f, 140.f, - 140.f, 140.f, 140.f, 140.f, 0.f }); + def->set_default_value(new ConfigOptionFloats { 0.f, 20.f, 20.f, 20.f, 20.f, + 20.f, 0.f, 20.f, 20.f, 20.f, + 20.f, 20.f, 0.f, 20.f, 20.f, + 20.f, 20.f, 20.f, 0.f, 20.f, + 20.f, 20.f, 20.f, 20.f, 0.f }); def = this->add("wipe_tower_x", coFloat); def->label = L("Position X"); diff -ruN PrusaSlicer-version_2.1.1/version.inc PrusaSlicer-version_2.1.1.mod/version.inc --- PrusaSlicer-version_2.1.1/version.inc 2019-12-10 17:09:10.000000000 +0200 +++ PrusaSlicer-version_2.1.1.mod/version.inc 2019-12-17 08:28:46.631453776 +0200 @@ -4,6 +4,6 @@ set(SLIC3R_APP_NAME "PrusaSlicer") set(SLIC3R_APP_KEY "PrusaSlicer") set(SLIC3R_VERSION "2.1.1") -set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN") +set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION} + Diamond Edition by VJ") set(SLIC3R_RC_VERSION "2,1,1,0") set(SLIC3R_RC_VERSION_DOTS "2.1.1.0")