mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-09 15:57:55 -06:00
PA per filament
This commit is contained in:
parent
6fb941cf4c
commit
ec7a7ff1ff
6 changed files with 30 additions and 17 deletions
|
@ -435,6 +435,11 @@ bool GCode::gcode_label_objects = true;
|
||||||
gcode += tcr_gcode;
|
gcode += tcr_gcode;
|
||||||
check_add_eol(toolchange_gcode_str);
|
check_add_eol(toolchange_gcode_str);
|
||||||
|
|
||||||
|
//SoftFever: set new PA for new filament
|
||||||
|
if (gcodegen.config().enable_pressure_advance.get_at(new_extruder_id)) {
|
||||||
|
gcode += gcodegen.writer().set_pressure_advance(gcodegen.config().pressure_advance.get_at(new_extruder_id));
|
||||||
|
}
|
||||||
|
|
||||||
// A phony move to the end position at the wipe tower.
|
// A phony move to the end position at the wipe tower.
|
||||||
gcodegen.writer().travel_to_xy(end_pos.cast<double>());
|
gcodegen.writer().travel_to_xy(end_pos.cast<double>());
|
||||||
gcodegen.set_last_pos(wipe_tower_point_to_object_point(gcodegen, end_pos + plate_origin_2d));
|
gcodegen.set_last_pos(wipe_tower_point_to_object_point(gcodegen, end_pos + plate_origin_2d));
|
||||||
|
@ -1641,19 +1646,6 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
||||||
if (is_bbl_printers) {
|
if (is_bbl_printers) {
|
||||||
// if (print.config().spaghetti_detector.value)
|
// if (print.config().spaghetti_detector.value)
|
||||||
file.write("M981 S1 P20000 ;open spaghetti detector\n");
|
file.write("M981 S1 P20000 ;open spaghetti detector\n");
|
||||||
file.write_format("M900 K%.3f M%0.3f ; Override pressure advance value\n",
|
|
||||||
m_config.pressure_advance.values.front(),
|
|
||||||
outer_wall_volumetric_speed / (1.75 * 1.75 / 4 * 3.14) *
|
|
||||||
m_config.pressure_advance.values.front());
|
|
||||||
} else {
|
|
||||||
if (m_config.enable_pressure_advance.value) {
|
|
||||||
if(print.config().gcode_flavor.value == gcfKlipper)
|
|
||||||
file.write_format("SET_PRESSURE_ADVANCE ADVANCE=%.3f ; Override pressure advance value\n",
|
|
||||||
m_config.pressure_advance.values.front());
|
|
||||||
else
|
|
||||||
file.write_format("M900 K%.3f ; Override pressure advance value\n",
|
|
||||||
m_config.pressure_advance.values.front());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do all objects for each layer.
|
// Do all objects for each layer.
|
||||||
|
@ -4226,6 +4218,10 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z)
|
||||||
if (m_ooze_prevention.enable)
|
if (m_ooze_prevention.enable)
|
||||||
gcode += m_ooze_prevention.post_toolchange(*this);
|
gcode += m_ooze_prevention.post_toolchange(*this);
|
||||||
|
|
||||||
|
if (m_config.enable_pressure_advance.get_at(extruder_id)) {
|
||||||
|
gcode += m_writer.set_pressure_advance(m_config.pressure_advance.get_at(extruder_id));
|
||||||
|
}
|
||||||
|
|
||||||
return gcode;
|
return gcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,22 @@ std::string GCodeWriter::set_jerk_xy(unsigned int jerk)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string GCodeWriter::set_pressure_advance(double pa) const
|
||||||
|
{
|
||||||
|
std::ostringstream gcode;
|
||||||
|
if (pa < 0)
|
||||||
|
return gcode.str();
|
||||||
|
|
||||||
|
if (FLAVOR_IS(gcfKlipper))
|
||||||
|
gcode << "SET_PRESSURE_ADVANCE ADVANCE=" << std::setprecision(4) << pa << "; Override pressure advance value\n";
|
||||||
|
else
|
||||||
|
gcode << "M900 K" <<std::setprecision(4)<< pa << "; Override pressure advance value\n";
|
||||||
|
|
||||||
|
return gcode.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::string GCodeWriter::reset_e(bool force)
|
std::string GCodeWriter::reset_e(bool force)
|
||||||
{
|
{
|
||||||
if (FLAVOR_IS(gcfMach3)
|
if (FLAVOR_IS(gcfMach3)
|
||||||
|
|
|
@ -47,6 +47,7 @@ public:
|
||||||
std::string set_bed_temperature(std::vector<int> temps_per_bed, int default_temp, bool wait = false);
|
std::string set_bed_temperature(std::vector<int> temps_per_bed, int default_temp, bool wait = false);
|
||||||
std::string set_acceleration(unsigned int acceleration);
|
std::string set_acceleration(unsigned int acceleration);
|
||||||
std::string set_jerk_xy(unsigned int jerk);
|
std::string set_jerk_xy(unsigned int jerk);
|
||||||
|
std::string set_pressure_advance(double pa) const;
|
||||||
std::string reset_e(bool force = false);
|
std::string reset_e(bool force = false);
|
||||||
std::string update_progress(unsigned int num, unsigned int tot, bool allow_100 = false) const;
|
std::string update_progress(unsigned int num, unsigned int tot, bool allow_100 = false) const;
|
||||||
// return false if this extruder was already selected
|
// return false if this extruder was already selected
|
||||||
|
|
|
@ -1085,10 +1085,10 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionFloats { 1. });
|
def->set_default_value(new ConfigOptionFloats { 1. });
|
||||||
|
|
||||||
def = this->add("enable_pressure_advance", coBool);
|
def = this->add("enable_pressure_advance", coBools);
|
||||||
def->label = L("Enable pressure advance");
|
def->label = L("Enable pressure advance");
|
||||||
def->tooltip = L("Enable pressure advance, auto calibration result will be overwriten once enabled.");
|
def->tooltip = L("Enable pressure advance, auto calibration result will be overwriten once enabled.");
|
||||||
def->set_default_value(new ConfigOptionBool(false));
|
def->set_default_value(new ConfigOptionBools{ false });
|
||||||
|
|
||||||
def = this->add("pressure_advance", coFloats);
|
def = this->add("pressure_advance", coFloats);
|
||||||
def->label = L("Pressure advance");
|
def->label = L("Pressure advance");
|
||||||
|
|
|
@ -760,7 +760,7 @@ PRINT_CONFIG_CLASS_DEFINE(
|
||||||
((ConfigOptionString, machine_end_gcode))
|
((ConfigOptionString, machine_end_gcode))
|
||||||
((ConfigOptionStrings, filament_end_gcode))
|
((ConfigOptionStrings, filament_end_gcode))
|
||||||
((ConfigOptionFloats, filament_flow_ratio))
|
((ConfigOptionFloats, filament_flow_ratio))
|
||||||
((ConfigOptionBool, enable_pressure_advance))
|
((ConfigOptionBools, enable_pressure_advance))
|
||||||
((ConfigOptionFloats, pressure_advance))
|
((ConfigOptionFloats, pressure_advance))
|
||||||
((ConfigOptionFloats, filament_diameter))
|
((ConfigOptionFloats, filament_diameter))
|
||||||
((ConfigOptionFloats, filament_density))
|
((ConfigOptionFloats, filament_density))
|
||||||
|
|
|
@ -2675,7 +2675,7 @@ void TabFilament::toggle_options()
|
||||||
}
|
}
|
||||||
if (m_active_page->title() == "Filament")
|
if (m_active_page->title() == "Filament")
|
||||||
{
|
{
|
||||||
bool pa = m_config->opt_bool("enable_pressure_advance");
|
bool pa = m_config->opt_bool("enable_pressure_advance", 0);
|
||||||
toggle_option("pressure_advance", pa);
|
toggle_option("pressure_advance", pa);
|
||||||
|
|
||||||
toggle_line("cool_plate_temp_initial_layer", is_BBL_printer);
|
toggle_line("cool_plate_temp_initial_layer", is_BBL_printer);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue