Disabled the experimental pressure equalizer.

This commit is contained in:
bubnikv 2019-01-29 18:07:45 +01:00
parent 79f608d1e6
commit 57bd0889c3
8 changed files with 37 additions and 4 deletions

View File

@ -71,8 +71,8 @@ add_library(libslic3r STATIC
GCode/CoolingBuffer.hpp GCode/CoolingBuffer.hpp
GCode/PostProcessor.cpp GCode/PostProcessor.cpp
GCode/PostProcessor.hpp GCode/PostProcessor.hpp
GCode/PressureEqualizer.cpp # GCode/PressureEqualizer.cpp
GCode/PressureEqualizer.hpp # GCode/PressureEqualizer.hpp
GCode/PreviewData.cpp GCode/PreviewData.cpp
GCode/PreviewData.hpp GCode/PreviewData.hpp
GCode/PrintExtents.cpp GCode/PrintExtents.cpp

View File

@ -662,10 +662,14 @@ void GCode::_do_export(Print &print, FILE *file)
m_cooling_buffer = make_unique<CoolingBuffer>(*this); m_cooling_buffer = make_unique<CoolingBuffer>(*this);
if (print.config().spiral_vase.value) if (print.config().spiral_vase.value)
m_spiral_vase = make_unique<SpiralVase>(print.config()); m_spiral_vase = make_unique<SpiralVase>(print.config());
#ifdef HAS_PRESSURE_EQUALIZER
if (print.config().max_volumetric_extrusion_rate_slope_positive.value > 0 || if (print.config().max_volumetric_extrusion_rate_slope_positive.value > 0 ||
print.config().max_volumetric_extrusion_rate_slope_negative.value > 0) print.config().max_volumetric_extrusion_rate_slope_negative.value > 0)
m_pressure_equalizer = make_unique<PressureEqualizer>(&print.config()); m_pressure_equalizer = make_unique<PressureEqualizer>(&print.config());
m_enable_extrusion_role_markers = (bool)m_pressure_equalizer; m_enable_extrusion_role_markers = (bool)m_pressure_equalizer;
#else /* HAS_PRESSURE_EQUALIZER */
m_enable_extrusion_role_markers = false;
#endif /* HAS_PRESSURE_EQUALIZER */
// Write information on the generator. // Write information on the generator.
_write_format(file, "; %s\n\n", Slic3r::header_slic3r_generated().c_str()); _write_format(file, "; %s\n\n", Slic3r::header_slic3r_generated().c_str());
@ -918,8 +922,10 @@ void GCode::_do_export(Print &print, FILE *file)
this->process_layer(file, print, lrs, tool_ordering.tools_for_layer(ltp.print_z()), &copy - object.copies().data()); this->process_layer(file, print, lrs, tool_ordering.tools_for_layer(ltp.print_z()), &copy - object.copies().data());
print.throw_if_canceled(); print.throw_if_canceled();
} }
#ifdef HAS_PRESSURE_EQUALIZER
if (m_pressure_equalizer) if (m_pressure_equalizer)
_write(file, m_pressure_equalizer->process("", true)); _write(file, m_pressure_equalizer->process("", true));
#endif /* HAS_PRESSURE_EQUALIZER */
++ finished_objects; ++ finished_objects;
// Flag indicating whether the nozzle temperature changes from 1st to 2nd layer were performed. // Flag indicating whether the nozzle temperature changes from 1st to 2nd layer were performed.
// Reset it when starting another object from 1st layer. // Reset it when starting another object from 1st layer.
@ -974,8 +980,10 @@ void GCode::_do_export(Print &print, FILE *file)
this->process_layer(file, print, layer.second, layer_tools, size_t(-1)); this->process_layer(file, print, layer.second, layer_tools, size_t(-1));
print.throw_if_canceled(); print.throw_if_canceled();
} }
#ifdef HAS_PRESSURE_EQUALIZER
if (m_pressure_equalizer) if (m_pressure_equalizer)
_write(file, m_pressure_equalizer->process("", true)); _write(file, m_pressure_equalizer->process("", true));
#endif /* HAS_PRESSURE_EQUALIZER */
if (m_wipe_tower) if (m_wipe_tower)
// Purge the extruder, pull out the active filament. // Purge the extruder, pull out the active filament.
_write(file, m_wipe_tower->finalize(*this)); _write(file, m_wipe_tower->finalize(*this));
@ -1656,11 +1664,13 @@ void GCode::process_layer(
if (m_cooling_buffer) if (m_cooling_buffer)
gcode = m_cooling_buffer->process_layer(gcode, layer.id()); gcode = m_cooling_buffer->process_layer(gcode, layer.id());
#ifdef HAS_PRESSURE_EQUALIZER
// Apply pressure equalization if enabled; // Apply pressure equalization if enabled;
// printf("G-code before filter:\n%s\n", gcode.c_str()); // printf("G-code before filter:\n%s\n", gcode.c_str());
if (m_pressure_equalizer) if (m_pressure_equalizer)
gcode = m_pressure_equalizer->process(gcode.c_str(), false); gcode = m_pressure_equalizer->process(gcode.c_str(), false);
// printf("G-code after filter:\n%s\n", out.c_str()); // printf("G-code after filter:\n%s\n", out.c_str());
#endif /* HAS_PRESSURE_EQUALIZER */
_write(file, gcode); _write(file, gcode);
BOOST_LOG_TRIVIAL(trace) << "Exported layer " << layer.id() << " print_z " << print_z << BOOST_LOG_TRIVIAL(trace) << "Exported layer " << layer.id() << " print_z " << print_z <<

View File

@ -11,7 +11,6 @@
#include "Print.hpp" #include "Print.hpp"
#include "PrintConfig.hpp" #include "PrintConfig.hpp"
#include "GCode/CoolingBuffer.hpp" #include "GCode/CoolingBuffer.hpp"
#include "GCode/PressureEqualizer.hpp"
#include "GCode/SpiralVase.hpp" #include "GCode/SpiralVase.hpp"
#include "GCode/ToolOrdering.hpp" #include "GCode/ToolOrdering.hpp"
#include "GCode/WipeTower.hpp" #include "GCode/WipeTower.hpp"
@ -22,6 +21,10 @@
#include <memory> #include <memory>
#include <string> #include <string>
#ifdef HAS_PRESSURE_EQUALIZER
#include "GCode/PressureEqualizer.hpp"
#endif /* HAS_PRESSURE_EQUALIZER */
namespace Slic3r { namespace Slic3r {
// Forward declarations. // Forward declarations.
@ -306,7 +309,9 @@ protected:
std::unique_ptr<CoolingBuffer> m_cooling_buffer; std::unique_ptr<CoolingBuffer> m_cooling_buffer;
std::unique_ptr<SpiralVase> m_spiral_vase; std::unique_ptr<SpiralVase> m_spiral_vase;
#ifdef HAS_PRESSURE_EQUALIZER
std::unique_ptr<PressureEqualizer> m_pressure_equalizer; std::unique_ptr<PressureEqualizer> m_pressure_equalizer;
#endif /* HAS_PRESSURE_EQUALIZER */
std::unique_ptr<WipeTowerIntegration> m_wipe_tower; std::unique_ptr<WipeTowerIntegration> m_wipe_tower;
// Heights at which the skirt has already been extruded. // Heights at which the skirt has already been extruded.

View File

@ -135,8 +135,10 @@ bool Print::invalidate_state_by_config_options(const std::vector<t_config_option
"min_print_speed", "min_print_speed",
"max_print_speed", "max_print_speed",
"max_volumetric_speed", "max_volumetric_speed",
#ifdef HAS_PRESSURE_EQUALIZER
"max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_positive",
"max_volumetric_extrusion_rate_slope_negative", "max_volumetric_extrusion_rate_slope_negative",
#endif /* HAS_PRESSURE_EQUALIZER */
"notes", "notes",
"only_retract_when_crossing_perimeters", "only_retract_when_crossing_perimeters",
"output_filename_format", "output_filename_format",

View File

@ -1208,6 +1208,7 @@ void PrintConfigDef::init_fff_params()
def->mode = comExpert; def->mode = comExpert;
def->default_value = new ConfigOptionFloat(0); def->default_value = new ConfigOptionFloat(0);
#ifdef HAS_PRESSURE_EQUALIZER
def = this->add("max_volumetric_extrusion_rate_slope_positive", coFloat); def = this->add("max_volumetric_extrusion_rate_slope_positive", coFloat);
def->label = L("Max volumetric slope positive"); def->label = L("Max volumetric slope positive");
def->tooltip = L("This experimental setting is used to limit the speed of change in extrusion rate. " def->tooltip = L("This experimental setting is used to limit the speed of change in extrusion rate. "
@ -1231,6 +1232,7 @@ void PrintConfigDef::init_fff_params()
def->min = 0; def->min = 0;
def->mode = comExpert; def->mode = comExpert;
def->default_value = new ConfigOptionFloat(0); def->default_value = new ConfigOptionFloat(0);
#endif /* HAS_PRESSURE_EQUALIZER */
def = this->add("min_fan_speed", coInts); def = this->add("min_fan_speed", coInts);
def->label = L("Min"); def->label = L("Min");
@ -2740,6 +2742,9 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va
"start_perimeters_at_concave_points", "start_perimeters_at_non_overhang", "randomize_start", "start_perimeters_at_concave_points", "start_perimeters_at_non_overhang", "randomize_start",
"seal_position", "vibration_limit", "bed_size", "seal_position", "vibration_limit", "bed_size",
"print_center", "g0", "threads", "pressure_advance", "wipe_tower_per_color_wipe" "print_center", "g0", "threads", "pressure_advance", "wipe_tower_per_color_wipe"
#ifndef HAS_PRESSURE_EQUALIZER
, "max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_negative"
#endif /* HAS_PRESSURE_EQUALIZER */
}; };
if (ignore.find(opt_key) != ignore.end()) { if (ignore.find(opt_key) != ignore.end()) {

View File

@ -20,6 +20,8 @@
#include "libslic3r.h" #include "libslic3r.h"
#include "Config.hpp" #include "Config.hpp"
// #define HAS_PRESSURE_EQUALIZER
namespace Slic3r { namespace Slic3r {
enum PrinterTechnology enum PrinterTechnology
@ -620,8 +622,10 @@ public:
ConfigOptionString layer_gcode; ConfigOptionString layer_gcode;
ConfigOptionFloat max_print_speed; ConfigOptionFloat max_print_speed;
ConfigOptionFloat max_volumetric_speed; ConfigOptionFloat max_volumetric_speed;
#ifdef HAS_PRESSURE_EQUALIZER
ConfigOptionFloat max_volumetric_extrusion_rate_slope_positive; ConfigOptionFloat max_volumetric_extrusion_rate_slope_positive;
ConfigOptionFloat max_volumetric_extrusion_rate_slope_negative; ConfigOptionFloat max_volumetric_extrusion_rate_slope_negative;
#endif
ConfigOptionPercents retract_before_wipe; ConfigOptionPercents retract_before_wipe;
ConfigOptionFloats retract_length; ConfigOptionFloats retract_length;
ConfigOptionFloats retract_length_toolchange; ConfigOptionFloats retract_length_toolchange;
@ -689,8 +693,10 @@ protected:
OPT_PTR(layer_gcode); OPT_PTR(layer_gcode);
OPT_PTR(max_print_speed); OPT_PTR(max_print_speed);
OPT_PTR(max_volumetric_speed); OPT_PTR(max_volumetric_speed);
#ifdef HAS_PRESSURE_EQUALIZER
OPT_PTR(max_volumetric_extrusion_rate_slope_positive); OPT_PTR(max_volumetric_extrusion_rate_slope_positive);
OPT_PTR(max_volumetric_extrusion_rate_slope_negative); OPT_PTR(max_volumetric_extrusion_rate_slope_negative);
#endif /* HAS_PRESSURE_EQUALIZER */
OPT_PTR(retract_before_wipe); OPT_PTR(retract_before_wipe);
OPT_PTR(retract_length); OPT_PTR(retract_length);
OPT_PTR(retract_length_toolchange); OPT_PTR(retract_length_toolchange);

View File

@ -323,7 +323,10 @@ const std::vector<std::string>& Preset::print_options()
"seam_position", "external_perimeters_first", "fill_density", "fill_pattern", "external_fill_pattern", "seam_position", "external_perimeters_first", "fill_density", "fill_pattern", "external_fill_pattern",
"infill_every_layers", "infill_only_where_needed", "solid_infill_every_layers", "fill_angle", "bridge_angle", "infill_every_layers", "infill_only_where_needed", "solid_infill_every_layers", "fill_angle", "bridge_angle",
"solid_infill_below_area", "only_retract_when_crossing_perimeters", "infill_first", "max_print_speed", "solid_infill_below_area", "only_retract_when_crossing_perimeters", "infill_first", "max_print_speed",
"max_volumetric_speed", "max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_negative", "max_volumetric_speed",
#ifdef HAS_PRESSURE_EQUALIZER
"max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_negative",
#endif /* HAS_PRESSURE_EQUALIZER */
"perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "infill_speed", "solid_infill_speed", "perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "infill_speed", "solid_infill_speed",
"top_solid_infill_speed", "support_material_speed", "support_material_xy_spacing", "support_material_interface_speed", "top_solid_infill_speed", "support_material_speed", "support_material_xy_spacing", "support_material_interface_speed",
"bridge_speed", "gap_fill_speed", "travel_speed", "first_layer_speed", "perimeter_acceleration", "infill_acceleration", "bridge_speed", "gap_fill_speed", "travel_speed", "first_layer_speed", "perimeter_acceleration", "infill_acceleration",

View File

@ -1028,8 +1028,10 @@ void TabPrint::build()
optgroup = page->new_optgroup(_(L("Autospeed (advanced)"))); optgroup = page->new_optgroup(_(L("Autospeed (advanced)")));
optgroup->append_single_option_line("max_print_speed"); optgroup->append_single_option_line("max_print_speed");
optgroup->append_single_option_line("max_volumetric_speed"); optgroup->append_single_option_line("max_volumetric_speed");
#ifdef HAS_PRESSURE_EQUALIZER
optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_positive"); optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_positive");
optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_negative"); optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_negative");
#endif /* HAS_PRESSURE_EQUALIZER */
page = add_options_page(_(L("Multiple Extruders")), "funnel.png"); page = add_options_page(_(L("Multiple Extruders")), "funnel.png");
optgroup = page->new_optgroup(_(L("Extruders"))); optgroup = page->new_optgroup(_(L("Extruders")));