From 56f0e37b486c4fe38c28da08dbbbb375209f56ee Mon Sep 17 00:00:00 2001 From: supermerill Date: Mon, 7 Sep 2020 00:45:26 +0200 Subject: [PATCH] #440 RepRap firmware: feedrate in mm/min --- src/libslic3r/PrintConfig.hpp | 15 ++++++++-- src/slic3r/GUI/Tab.cpp | 55 +++++++++++++++++++---------------- src/slic3r/GUI/Tab.hpp | 4 +-- 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 698b3d3d0..6849bad25 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -48,8 +48,19 @@ enum WipeAlgo { }; enum GCodeFlavor : uint8_t { - gcfRepRap, gcfRepetier, gcfTeacup, gcfMakerWare, gcfMarlin, gcfKlipper, gcfSailfish, gcfMach3, gcfMachinekit, - gcfSmoothie, gcfSprinter, gcfNoExtrusion, gcfLerdge, + gcfRepRap, + gcfRepetier, + gcfTeacup, + gcfMakerWare, + gcfMarlin, + gcfKlipper, + gcfSailfish, + gcfMach3, + gcfMachinekit, + gcfSmoothie, + gcfSprinter, + gcfNoExtrusion, + gcfLerdge, }; enum PrintHostType { diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index e332da28a..d34271098 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1313,13 +1313,7 @@ bool Tab::create_pages(std::string setting_type_name, int idx_page) TabPrinter* tab = nullptr; if ((tab = dynamic_cast(this)) == nullptr) continue; current_group->m_on_change = set_or_add(current_group->m_on_change, [this, tab](t_config_option_key opt_key, boost::any value) { - if (opt_key == "silent_mode") { - bool val = boost::any_cast(value); - if (tab->m_use_silent_mode != val) { - tab->m_rebuild_kinematics_page = true; - tab->m_use_silent_mode = val; - } - } + tab->update_fff(); //check for kinematic rebuild tab->build_unregular_pages(); }); } @@ -2166,14 +2160,18 @@ void TabPrinter::milling_count_changed(size_t milling_count) //} } -void TabPrinter::append_option_line_kinematics(ConfigOptionsGroupShp optgroup, const std::string opt_key) +void TabPrinter::append_option_line_kinematics(ConfigOptionsGroupShp optgroup, const std::string opt_key, const std::string override_sidetext) { Option option = optgroup->get_option(opt_key, 0); + if (!override_sidetext.empty()) + option.opt.sidetext = override_sidetext; Line line = Line{ _(option.opt.full_label), "" }; option.opt.width = 10; line.append_option(option); if (m_use_silent_mode) { option = optgroup->get_option(opt_key, 1); + if (!override_sidetext.empty()) + option.opt.sidetext = override_sidetext; option.opt.width = 10; line.append_option(option); } @@ -2185,7 +2183,7 @@ PageShp TabPrinter::build_kinematics_page() auto page = add_options_page(_(L("Machine limits")), "cog", true); ConfigOptionsGroupShp optgroup; if (m_config->option>("gcode_flavor")->value != gcfMarlin && m_config->option>("gcode_flavor")->value != gcfLerdge) { - optgroup = page->new_optgroup(_(L("not-marlin/lerdge firmware compensation"))); + optgroup = page->new_optgroup(_(L("not-marlin/lerdge firmware compensation"))); optgroup->append_single_option_line("time_estimation_compensation"); } optgroup = page->new_optgroup(_(L("Machine Limits"))); @@ -2230,27 +2228,34 @@ PageShp TabPrinter::build_kinematics_page() std::vector axes{ "x", "y", "z", "e" }; optgroup = page->new_optgroup(_(L("Maximum feedrates"))); - for (const std::string &axis : axes) { + for (const std::string& axis : axes) { + if (m_config->option>("gcode_flavor")->value == gcfRepRap) + append_option_line_kinematics(optgroup, "machine_max_feedrate_" + axis, "mm/min"); + else append_option_line_kinematics(optgroup, "machine_max_feedrate_" + axis); - } + } optgroup = page->new_optgroup(_(L("Maximum accelerations"))); - for (const std::string &axis : axes) { - append_option_line_kinematics(optgroup, "machine_max_acceleration_" + axis); - } - append_option_line_kinematics(optgroup, "machine_max_acceleration_extruding"); - append_option_line_kinematics(optgroup, "machine_max_acceleration_retracting"); - append_option_line_kinematics(optgroup, "machine_max_acceleration_travel"); + for (const std::string& axis : axes) { + append_option_line_kinematics(optgroup, "machine_max_acceleration_" + axis); + } + append_option_line_kinematics(optgroup, "machine_max_acceleration_extruding"); + append_option_line_kinematics(optgroup, "machine_max_acceleration_retracting"); + append_option_line_kinematics(optgroup, "machine_max_acceleration_travel"); optgroup = page->new_optgroup(_(L("Jerk limits"))); - for (const std::string &axis : axes) { - append_option_line_kinematics(optgroup, "machine_max_jerk_" + axis); - } + for (const std::string& axis : axes) { + append_option_line_kinematics(optgroup, "machine_max_jerk_" + axis); + } optgroup = page->new_optgroup(_(L("Minimum feedrates"))); - append_option_line_kinematics(optgroup, "machine_min_extruding_rate"); - append_option_line_kinematics(optgroup, "machine_min_travel_rate"); - + if (m_config->option>("gcode_flavor")->value == gcfRepRap){ + append_option_line_kinematics(optgroup, "machine_min_extruding_rate", "mm/min"); + append_option_line_kinematics(optgroup, "machine_min_travel_rate", "mm/min"); + } else { + append_option_line_kinematics(optgroup, "machine_min_extruding_rate"); + append_option_line_kinematics(optgroup, "machine_min_travel_rate"); + } return page; } @@ -2503,8 +2508,8 @@ void TabPrinter::update_fff() else GCodeWriter::PausePrintCode = "M601"; - if (m_is_marlin != is_marlin_flavor) { - m_is_marlin = is_marlin_flavor; + if (m_last_gcode_flavor != uint8_t(m_config->option>("gcode_flavor")->value)) { + m_last_gcode_flavor = uint8_t(m_config->option>("gcode_flavor")->value); m_rebuild_kinematics_page = true; } diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 305479c8a..1122fbdfb 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -384,9 +384,9 @@ public: void build_printhost(ConfigOptionsGroup *optgroup); bool m_has_single_extruder_MM_page = false; - bool m_is_marlin = false; + uint8_t m_last_gcode_flavor = uint8_t(255); bool m_use_silent_mode = false; - void append_option_line_kinematics(ConfigOptionsGroupShp optgroup, const std::string opt_key); + void append_option_line_kinematics(ConfigOptionsGroupShp optgroup, const std::string opt_key, const std::string override_units = ""); bool m_rebuild_kinematics_page = false; wxButton* m_serial_test_btn = nullptr;