mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-11 02:57:39 +00:00
Support GIGA multi-printhead configuration options (#13901)
* Support GIGA multi-printhead configuration options * Removed unused G-code comments. * Added parallel_printheads_count option to configure parallel printhead count. --------- Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1318,7 +1318,7 @@ static std::vector<std::string> s_Preset_machine_limits_options {
|
|||||||
|
|
||||||
static std::vector<std::string> s_Preset_printer_options {
|
static std::vector<std::string> s_Preset_printer_options {
|
||||||
"printer_technology",
|
"printer_technology",
|
||||||
"printable_area", "extruder_printable_area", "bed_exclude_area","bed_custom_texture", "bed_custom_model", "gcode_flavor",
|
"printable_area", "extruder_printable_area", "support_parallel_printheads", "parallel_printheads_count", "parallel_printheads_bed_exclude_areas", "bed_exclude_area","bed_custom_texture", "bed_custom_model", "gcode_flavor",
|
||||||
"fan_kickstart", "part_cooling_fan_min_pwm", "fan_speedup_time", "fan_speedup_overhangs",
|
"fan_kickstart", "part_cooling_fan_min_pwm", "fan_speedup_time", "fan_speedup_overhangs",
|
||||||
"single_extruder_multi_material", "manual_filament_change", "file_start_gcode", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "printing_by_object_gcode", "layer_change_gcode", "time_lapse_gcode", "wrapping_detection_gcode", "change_filament_gcode", "change_extrusion_role_gcode",
|
"single_extruder_multi_material", "manual_filament_change", "file_start_gcode", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "printing_by_object_gcode", "layer_change_gcode", "time_lapse_gcode", "wrapping_detection_gcode", "change_filament_gcode", "change_extrusion_role_gcode",
|
||||||
"printer_model", "printer_variant", "printer_extruder_id", "printer_extruder_variant", "extruder_variant_list", "default_nozzle_volume_type",
|
"printer_model", "printer_variant", "printer_extruder_id", "printer_extruder_variant", "extruder_variant_list", "default_nozzle_volume_type",
|
||||||
|
|||||||
@@ -693,6 +693,26 @@ void PrintConfigDef::init_common_params()
|
|||||||
def->gui_type = ConfigOptionDef::GUIType::one_string;
|
def->gui_type = ConfigOptionDef::GUIType::one_string;
|
||||||
def->set_default_value(new ConfigOptionPointsGroups{});
|
def->set_default_value(new ConfigOptionPointsGroups{});
|
||||||
|
|
||||||
|
def = this->add("support_parallel_printheads", coBool);
|
||||||
|
def->label = L("Support parallel printheads");
|
||||||
|
def->tooltip = L("Enable printer settings for machines that can use multiple printheads in parallel.");
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->set_default_value(new ConfigOptionBool{false});
|
||||||
|
|
||||||
|
def = this->add("parallel_printheads_count", coInt);
|
||||||
|
def->label = L("Parallel printheads count");
|
||||||
|
def->tooltip = L("Set the number of parallel printheads for machines like OrangeStorm Giga printer.");
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->min = 1;
|
||||||
|
def->max = 4;
|
||||||
|
def->set_default_value(new ConfigOptionInt{1});
|
||||||
|
|
||||||
|
def = this->add("parallel_printheads_bed_exclude_areas", coStrings);
|
||||||
|
def->label = L("Parallel printheads bed exclude areas");
|
||||||
|
def->tooltip = L("Ordered list of bed exclude areas by parallel printhead count. Item 1 applies to one printhead, item 2 to two printheads, and so on. Leave an item empty for no excluded area.");
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->set_default_value(new ConfigOptionStrings());
|
||||||
|
|
||||||
//BBS: add "bed_exclude_area"
|
//BBS: add "bed_exclude_area"
|
||||||
def = this->add("bed_exclude_area", coPoints);
|
def = this->add("bed_exclude_area", coPoints);
|
||||||
def->label = L("Bed exclude area");
|
def->label = L("Bed exclude area");
|
||||||
|
|||||||
@@ -1480,6 +1480,9 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
|
|||||||
((ConfigOptionFloatOrPercent, max_travel_detour_distance))
|
((ConfigOptionFloatOrPercent, max_travel_detour_distance))
|
||||||
((ConfigOptionPoints, printable_area))
|
((ConfigOptionPoints, printable_area))
|
||||||
((ConfigOptionPointsGroups, extruder_printable_area))
|
((ConfigOptionPointsGroups, extruder_printable_area))
|
||||||
|
((ConfigOptionBool, support_parallel_printheads))
|
||||||
|
((ConfigOptionInt, parallel_printheads_count))
|
||||||
|
((ConfigOptionStrings, parallel_printheads_bed_exclude_areas))
|
||||||
//BBS: add bed_exclude_area
|
//BBS: add bed_exclude_area
|
||||||
((ConfigOptionPoints, bed_exclude_area))
|
((ConfigOptionPoints, bed_exclude_area))
|
||||||
((ConfigOptionPoints, head_wrap_detect_zone))
|
((ConfigOptionPoints, head_wrap_detect_zone))
|
||||||
|
|||||||
@@ -190,6 +190,7 @@ public:
|
|||||||
/// Call the attached m_fn_edit_value method.
|
/// Call the attached m_fn_edit_value method.
|
||||||
void on_edit_value();
|
void on_edit_value();
|
||||||
|
|
||||||
|
virtual void propagate_value(){}
|
||||||
public:
|
public:
|
||||||
/// parent wx item, opportunity to refactor (probably not necessary - data duplication)
|
/// parent wx item, opportunity to refactor (probably not necessary - data duplication)
|
||||||
wxWindow* m_parent {nullptr};
|
wxWindow* m_parent {nullptr};
|
||||||
@@ -317,7 +318,7 @@ public:
|
|||||||
void BUILD() override;
|
void BUILD() override;
|
||||||
bool value_was_changed();
|
bool value_was_changed();
|
||||||
// Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER
|
// Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER
|
||||||
void propagate_value();
|
virtual void propagate_value() override;
|
||||||
wxWindow* window {nullptr};
|
wxWindow* window {nullptr};
|
||||||
|
|
||||||
void set_value(const std::string& value, bool change_event = false) {
|
void set_value(const std::string& value, bool change_event = false) {
|
||||||
|
|||||||
@@ -1935,6 +1935,26 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opt_key == "parallel_printheads_count" || opt_key == "parallel_printheads_bed_exclude_areas") {
|
||||||
|
if (m_config->opt_bool("support_parallel_printheads")) {
|
||||||
|
const int count = opt_key == "parallel_printheads_count" ? boost::any_cast<int>(value) : m_config->opt_int("parallel_printheads_count");
|
||||||
|
if (auto *field = this->get_field("bed_exclude_area")) {
|
||||||
|
wxString exclude_area;
|
||||||
|
if (count > 0) {
|
||||||
|
if (const auto *areas = m_config->option<ConfigOptionStrings>("parallel_printheads_bed_exclude_areas");
|
||||||
|
areas != nullptr) {
|
||||||
|
const size_t index = static_cast<size_t>(count - 1);
|
||||||
|
if (index < areas->values.size())
|
||||||
|
exclude_area = wxString::FromUTF8(areas->values[index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
field->set_value(exclude_area, true);
|
||||||
|
field->propagate_value();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (m_postpone_update_ui) {
|
if (m_postpone_update_ui) {
|
||||||
// It means that not all values are rolled to the system/last saved values jet.
|
// It means that not all values are rolled to the system/last saved values jet.
|
||||||
// And call of the update() can causes a redundant check of the config values,
|
// And call of the update() can causes a redundant check of the config values,
|
||||||
@@ -4429,6 +4449,7 @@ void TabPrinter::build_fff()
|
|||||||
create_line_with_widget(optgroup.get(), "printable_area", "custom-svg-and-png-bed-textures_124612", [this](wxWindow* parent) {
|
create_line_with_widget(optgroup.get(), "printable_area", "custom-svg-and-png-bed-textures_124612", [this](wxWindow* parent) {
|
||||||
return create_bed_shape_widget(parent);
|
return create_bed_shape_widget(parent);
|
||||||
});
|
});
|
||||||
|
optgroup->append_single_option_line("parallel_printheads_count");
|
||||||
Option option = optgroup->get_option("bed_exclude_area");
|
Option option = optgroup->get_option("bed_exclude_area");
|
||||||
option.opt.full_width = true;
|
option.opt.full_width = true;
|
||||||
optgroup->append_single_option_line(option, "printer_basic_information_printable_space#excluded-bed-area");
|
optgroup->append_single_option_line(option, "printer_basic_information_printable_space#excluded-bed-area");
|
||||||
@@ -5409,6 +5430,7 @@ void TabPrinter::toggle_options()
|
|||||||
// toggle_option("change_filament_gcode", have_multiple_extruders);
|
// toggle_option("change_filament_gcode", have_multiple_extruders);
|
||||||
//}
|
//}
|
||||||
if (m_active_page->title() == L("Basic information")) {
|
if (m_active_page->title() == L("Basic information")) {
|
||||||
|
const auto &printer_cfg = m_preset_bundle->printers.get_edited_preset().config;
|
||||||
|
|
||||||
// SoftFever: hide BBL specific settings
|
// SoftFever: hide BBL specific settings
|
||||||
for (auto el : {"scan_first_layer", "bbl_calib_mark_logo", "bbl_use_printhost"})
|
for (auto el : {"scan_first_layer", "bbl_calib_mark_logo", "bbl_use_printhost"})
|
||||||
@@ -5420,6 +5442,9 @@ void TabPrinter::toggle_options()
|
|||||||
|
|
||||||
auto gcf = m_config->option<ConfigOptionEnum<GCodeFlavor>>("gcode_flavor")->value;
|
auto gcf = m_config->option<ConfigOptionEnum<GCodeFlavor>>("gcode_flavor")->value;
|
||||||
toggle_line("enable_power_loss_recovery", is_BBL_printer || gcf == gcfMarlinFirmware);
|
toggle_line("enable_power_loss_recovery", is_BBL_printer || gcf == gcfMarlinFirmware);
|
||||||
|
|
||||||
|
const bool support_parallel_printheads = printer_cfg.opt_bool("support_parallel_printheads");
|
||||||
|
toggle_line("parallel_printheads_count", support_parallel_printheads);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user