Atsinaujinus PrusaSlicer programai teko ją iš naujo modifikuoti, kad galėčiau ja naudotis su Dianond galva. Nuo senesnės versijos kiek pasikeitė pradiniai programos kodai, ankščiau naudoti diff failai jau nebetinka naujai programos versijai.
Modifikuoti trys failai. Jų diff failų turinys pateiktas žemiau.
/src/libslic3r/PrintConfig.cpp.diff
--- PrintConfig.cpp.original 2019-09-16 11:49:51.000000000 +0300 +++ PrintConfig.cpp 2019-09-24 09:10:52.086321107 +0300 @@ -2158,17 +2158,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");
src/libslic3r/GCode/WipeTower.cpp.diff
--- WipeTower.cpp.orig 2019-09-16 11:49:51.000000000 +0300 +++ WipeTower.cpp 2019-09-24 10:37:38.103298223 +0300 @@ -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 @@ -978,12 +967,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); - - // this is to align ramming and future wiping extrusions, so the future y-steps can be uniform from the start: + // 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 writer.travel(end_of_ramming.x(), end_of_ramming.y() + (y_step/m_extra_spacing-m_perimeter_width) / 2.f + m_perimeter_width, 2400.f); @@ -1009,7 +993,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 +1019,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 +1066,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 +1076,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:
version.inc.diff (šis failas tik dėl „reklamos”, kad matytųsi kuri programos versija paleista)
--- version.inc.original 2019-09-16 11:49:51.000000000 +0300 +++ version.inc 2019-09-24 09:40:32.654134918 +0300 @@ -4,6 +4,6 @@ set(SLIC3R_APP_NAME "PrusaSlicer") set(SLIC3R_APP_KEY "PrusaSlicer") set(SLIC3R_VERSION "2.1.0") -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,0,0") set(SLIC3R_RC_VERSION_DOTS "2.1.0.0")