ENH: flow_ratio cali support multi_extuder
jira: none Change-Id: I03399040a772043d3d20116b0588fd04e0725be1
This commit is contained in:
parent
c1bf153a19
commit
38b3c32b6a
|
@ -576,6 +576,8 @@ std::string AppConfig::load()
|
|||
for (auto cali_it = calis_j["presets"].begin(); cali_it != calis_j["presets"].end(); cali_it++) {
|
||||
CaliPresetInfo preset_info;
|
||||
preset_info.tray_id = cali_it.value()["tray_id"].get<int>();
|
||||
preset_info.extruder_id = cali_it.value()["extruder_id"].get<int>();
|
||||
preset_info.nozzle_volume_type = NozzleVolumeType(cali_it.value()["nozzle_volume_type"].get<int>());
|
||||
preset_info.nozzle_diameter = cali_it.value()["nozzle_diameter"].get<float>();
|
||||
preset_info.filament_id = cali_it.value()["filament_id"].get<std::string>();
|
||||
preset_info.setting_id = cali_it.value()["setting_id"].get<std::string>();
|
||||
|
@ -693,6 +695,8 @@ void AppConfig::save()
|
|||
for (auto filament_preset : cali_info.selected_presets) {
|
||||
json preset_json;
|
||||
preset_json["tray_id"] = filament_preset.tray_id;
|
||||
preset_json["extruder_id"] = filament_preset.extruder_id;
|
||||
preset_json["nozzle_volume_type"] = int(filament_preset.nozzle_volume_type);
|
||||
preset_json["nozzle_diameter"] = filament_preset.nozzle_diameter;
|
||||
preset_json["filament_id"] = filament_preset.filament_id;
|
||||
preset_json["setting_id"] = filament_preset.setting_id;
|
||||
|
|
|
@ -73,6 +73,8 @@ class CaliPresetInfo
|
|||
{
|
||||
public:
|
||||
int tray_id;
|
||||
int extruder_id;
|
||||
NozzleVolumeType nozzle_volume_type;
|
||||
float nozzle_diameter;
|
||||
std::string filament_id;
|
||||
std::string setting_id;
|
||||
|
@ -81,6 +83,8 @@ public:
|
|||
CaliPresetInfo &operator=(const CaliPresetInfo &other)
|
||||
{
|
||||
this->tray_id = other.tray_id;
|
||||
this->extruder_id = other.extruder_id;
|
||||
this->nozzle_volume_type = other.nozzle_volume_type;
|
||||
this->nozzle_diameter = other.nozzle_diameter;
|
||||
this->filament_id = other.filament_id;
|
||||
this->setting_id = other.setting_id;
|
||||
|
|
|
@ -34,6 +34,32 @@ std::map<int, Preset*> get_cached_selected_filament(MachineObject* obj) {
|
|||
return selected_filament_map;
|
||||
}
|
||||
|
||||
struct TrayInfo
|
||||
{
|
||||
int extruder_id;
|
||||
NozzleVolumeType nozzle_volume_type;
|
||||
Preset *preset;
|
||||
};
|
||||
std::map<int, TrayInfo> get_cached_selected_filament_for_multi_extruder(MachineObject *obj)
|
||||
{
|
||||
std::map<int, TrayInfo> selected_filament_map;
|
||||
if (!obj)
|
||||
return selected_filament_map;
|
||||
|
||||
PresetCollection *filament_presets = &wxGetApp().preset_bundle->filaments;
|
||||
for (auto selected_prest : obj->selected_cali_preset) {
|
||||
TrayInfo tray_info;
|
||||
tray_info.preset = filament_presets->find_preset(selected_prest.name);
|
||||
if (!tray_info.preset)
|
||||
continue;
|
||||
|
||||
tray_info.extruder_id = selected_prest.extruder_id;
|
||||
tray_info.nozzle_volume_type = selected_prest.nozzle_volume_type;
|
||||
selected_filament_map.emplace(std::make_pair(selected_prest.tray_id, tray_info));
|
||||
}
|
||||
return selected_filament_map;
|
||||
}
|
||||
|
||||
bool is_pa_params_valid(const Calib_Params& params)
|
||||
{
|
||||
if (params.start < MIN_PA_K_VALUE || params.end > MAX_PA_K_VALUE || params.step < EPSILON || params.end < params.start + params.step) {
|
||||
|
@ -288,6 +314,85 @@ bool CalibrationWizard::save_preset(const std::string &old_preset_name, const st
|
|||
return true;
|
||||
}
|
||||
|
||||
bool CalibrationWizard::save_preset_with_index(const std::string &old_preset_name, const std::string &new_preset_name, const std::map<std::string, ConfigIndexValue> &key_values, wxString &message)
|
||||
{
|
||||
if (new_preset_name.empty()) {
|
||||
message = _L("The name cannot be empty.");
|
||||
return false;
|
||||
}
|
||||
|
||||
PresetCollection *filament_presets = &wxGetApp().preset_bundle->filaments;
|
||||
Preset *preset = filament_presets->find_preset(old_preset_name);
|
||||
if (!preset) {
|
||||
message = wxString::Format(_L("The selected preset: %s is not found."), old_preset_name);
|
||||
return false;
|
||||
}
|
||||
|
||||
Preset temp_preset = *preset;
|
||||
|
||||
std::string new_name = filament_presets->get_preset_name_by_alias(new_preset_name);
|
||||
bool exist_preset = false;
|
||||
// If name is current, get the editing preset
|
||||
Preset *new_preset = filament_presets->find_preset(new_name);
|
||||
if (new_preset) {
|
||||
if (new_preset->is_system) {
|
||||
message = _L("The name cannot be the same as the system preset name.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (new_preset != preset) {
|
||||
message = _L("The name is the same as another existing preset name");
|
||||
return false;
|
||||
}
|
||||
if (new_preset != &filament_presets->get_edited_preset())
|
||||
new_preset = &temp_preset;
|
||||
exist_preset = true;
|
||||
} else {
|
||||
new_preset = &temp_preset;
|
||||
}
|
||||
|
||||
for (auto item : key_values) {
|
||||
auto config_opt = new_preset->config.option<ConfigOptionFloatsNullable>(item.first);
|
||||
if (!config_opt) {
|
||||
auto& config_value = config_opt->values;
|
||||
config_value[item.second.index] = item.second.value;
|
||||
}
|
||||
}
|
||||
|
||||
// Save the preset into Slic3r::data_dir / presets / section_name / preset_name.ini
|
||||
filament_presets->save_current_preset(new_name, false, false, new_preset);
|
||||
|
||||
// BBS create new settings
|
||||
new_preset = filament_presets->find_preset(new_name, false, true);
|
||||
// Preset* preset = &m_presets.preset(it - m_presets.begin(), true);
|
||||
if (!new_preset) {
|
||||
BOOST_LOG_TRIVIAL(info) << "create new preset failed";
|
||||
message = _L("create new preset failed.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// set sync_info for sync service
|
||||
if (exist_preset) {
|
||||
new_preset->sync_info = "update";
|
||||
BOOST_LOG_TRIVIAL(info) << "sync_preset: update preset = " << new_preset->name;
|
||||
} else {
|
||||
new_preset->sync_info = "create";
|
||||
if (wxGetApp().is_user_login()) new_preset->user_id = wxGetApp().getAgent()->get_user_id();
|
||||
BOOST_LOG_TRIVIAL(info) << "sync_preset: create preset = " << new_preset->name;
|
||||
}
|
||||
new_preset->save_info();
|
||||
|
||||
// Mark the print & filament enabled if they are compatible with the currently selected preset.
|
||||
// If saving the preset changes compatibility with other presets, keep the now incompatible dependent presets selected, however with a "red flag" icon showing that they are
|
||||
// no more compatible.
|
||||
wxGetApp().preset_bundle->update_compatible(PresetSelectCompatibleType::Never);
|
||||
|
||||
// BBS if create a new prset name, preset changed from preset name to new preset name
|
||||
if (!exist_preset) { wxGetApp().plater()->sidebar().update_presets_from_to(Preset::Type::TYPE_FILAMENT, old_preset_name, new_preset->name); }
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CalibrationWizard::cache_preset_info(MachineObject* obj, float nozzle_dia)
|
||||
{
|
||||
if (!obj) return;
|
||||
|
@ -304,6 +409,14 @@ void CalibrationWizard::cache_preset_info(MachineObject* obj, float nozzle_dia)
|
|||
result.filament_id = item.second->filament_id;
|
||||
result.setting_id = item.second->setting_id;
|
||||
result.name = item.second->name;
|
||||
|
||||
if (obj->is_multi_extruders()) {
|
||||
int ams_id, slot_id, tray_id;
|
||||
get_tray_ams_and_slot_id(result.extruder_id, ams_id, slot_id, tray_id);
|
||||
result.extruder_id = preset_page->get_extruder_id(ams_id);
|
||||
result.nozzle_volume_type = preset_page->get_nozzle_volume_type(ams_id);
|
||||
}
|
||||
|
||||
obj->selected_cali_preset.push_back(result);
|
||||
}
|
||||
|
||||
|
@ -1214,15 +1327,26 @@ void FlowRateWizard::on_cali_save()
|
|||
|
||||
std::string old_preset_name;
|
||||
CalibrationPresetPage* preset_page = (static_cast<CalibrationPresetPage*>(preset_step->page));
|
||||
std::map<int, Preset*> selected_filaments = get_cached_selected_filament(curr_obj);
|
||||
std::map<int, TrayInfo> selected_filaments = get_cached_selected_filament_for_multi_extruder(curr_obj);
|
||||
|
||||
|
||||
std::map<std::string, ConfigIndexValue> key_value_map;
|
||||
int index = 0;
|
||||
if (!selected_filaments.empty()) {
|
||||
old_preset_name = selected_filaments.begin()->second->name;
|
||||
TrayInfo tray_info = selected_filaments.begin()->second;
|
||||
old_preset_name = tray_info.preset->name;
|
||||
|
||||
// todo multi_extruder: get_extruder_type from obj
|
||||
ExtruderType extruder_type = ExtruderType::etDirectDrive;
|
||||
index = get_index_for_extruder_parameter(tray_info.preset->config, "filament_flow_ratio", tray_info.extruder_id, extruder_type, tray_info.nozzle_volume_type);
|
||||
ConfigIndexValue config_value;
|
||||
config_value.index = index;
|
||||
config_value.value = new_flow_ratio;
|
||||
key_value_map.insert(std::make_pair("filament_flow_ratio", config_value));
|
||||
}
|
||||
std::map<std::string, ConfigOption*> key_value_map;
|
||||
key_value_map.insert(std::make_pair("filament_flow_ratio", new ConfigOptionFloats{ new_flow_ratio }));
|
||||
|
||||
wxString message;
|
||||
if (!save_preset(old_preset_name, into_u8(new_preset_name), key_value_map, message)) {
|
||||
if (!save_preset_with_index(old_preset_name, into_u8(new_preset_name), key_value_map, message)) {
|
||||
MessageDialog error_msg_dlg(nullptr, message, wxEmptyString, wxICON_WARNING | wxOK);
|
||||
error_msg_dlg.ShowModal();
|
||||
return;
|
||||
|
|
|
@ -30,6 +30,12 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
struct ConfigIndexValue
|
||||
{
|
||||
float value{0};
|
||||
int index{0};
|
||||
};
|
||||
|
||||
class CalibrationWizard : public wxPanel {
|
||||
public:
|
||||
CalibrationWizard(wxWindow* parent, CalibMode mode,
|
||||
|
@ -61,6 +67,7 @@ public:
|
|||
CalibMode get_calibration_mode() { return m_mode; }
|
||||
|
||||
bool save_preset(const std::string &old_preset_name, const std::string &new_preset_name, const std::map<std::string, ConfigOption *> &key_values, wxString& message);
|
||||
bool save_preset_with_index(const std::string &old_preset_name, const std::string &new_preset_name, const std::map<std::string, ConfigIndexValue> &key_values, wxString &message);
|
||||
|
||||
virtual void cache_preset_info(MachineObject* obj, float nozzle_dia);
|
||||
virtual void recover_preset_info(MachineObject *obj);
|
||||
|
|
|
@ -787,10 +787,13 @@ void CalibrationPresetPage::create_multi_extruder_filament_list_panel(wxWindow *
|
|||
m_main_ams_preview_panel = new wxPanel(parent);
|
||||
auto ams_items_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
for (int i = 0; i < 5; i++) { // most connect 4 ams(multi + single)
|
||||
AMSModel ams_type = AMSModel::GENERIC_AMS;
|
||||
AMSinfo temp_info = AMSinfo{std::to_string(i), std::vector<Caninfo>{}};
|
||||
if (i == 4)
|
||||
if (i == 4) {
|
||||
temp_info.ams_type = AMSModel::EXT_AMS;
|
||||
auto preview_ams_item = new AMSPreview(m_main_ams_preview_panel, wxID_ANY, temp_info);
|
||||
ams_type = AMSModel::EXT_AMS;
|
||||
}
|
||||
auto preview_ams_item = new AMSPreview(m_main_ams_preview_panel, wxID_ANY, temp_info, ams_type);
|
||||
m_main_ams_preview_list.push_back(preview_ams_item);
|
||||
size_t index = m_main_ams_preview_list.size() - 1;
|
||||
preview_ams_item->Bind(wxEVT_LEFT_DOWN, [this, index](wxMouseEvent &e) {
|
||||
|
@ -846,10 +849,13 @@ void CalibrationPresetPage::create_multi_extruder_filament_list_panel(wxWindow *
|
|||
m_deputy_ams_preview_panel = new wxPanel(parent);
|
||||
auto ams_items_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
for (int i = 0; i < 5; i++) { // most connect 4 ams(multi + single) + 1 vt_slot
|
||||
AMSModel ams_type = AMSModel::GENERIC_AMS;
|
||||
AMSinfo temp_info = AMSinfo{std::to_string(i), std::vector<Caninfo>{}};
|
||||
if (i == 4)
|
||||
if (i == 4) {
|
||||
temp_info.ams_type = AMSModel::EXT_AMS;
|
||||
auto preview_ams_item = new AMSPreview(m_deputy_ams_preview_panel, wxID_ANY, temp_info);
|
||||
ams_type = AMSModel::EXT_AMS;
|
||||
}
|
||||
auto preview_ams_item = new AMSPreview(m_deputy_ams_preview_panel, wxID_ANY, temp_info, ams_type);
|
||||
m_deputy_ams_preview_list.push_back(preview_ams_item);
|
||||
size_t index = m_deputy_ams_preview_list.size() - 1;
|
||||
preview_ams_item->Bind(wxEVT_LEFT_DOWN, [this, index](wxMouseEvent &e) {
|
||||
|
@ -901,14 +907,14 @@ void CalibrationPresetPage::create_multi_extruder_filament_list_panel(wxWindow *
|
|||
if (m_main_extruder_on_left) {
|
||||
m_main_sizer->GetStaticBox()->SetLabel("Left");
|
||||
m_deputy_sizer->GetStaticBox()->SetLabel("Right");
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
}
|
||||
else {
|
||||
m_main_sizer->GetStaticBox()->SetLabel("Right");
|
||||
m_deputy_sizer->GetStaticBox()->SetLabel("Left");
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
}
|
||||
m_multi_extruder_ams_panel_sizer->Add(m_multi_exturder_ams_sizer);
|
||||
|
||||
|
@ -1545,17 +1551,20 @@ void CalibrationPresetPage::update_show_status()
|
|||
show_status(CaliPresetPageStatus::CaliPresetStatusInPrinting);
|
||||
return;
|
||||
}
|
||||
else if (!obj_->is_multi_extruders() && !obj_->is_support_print_without_sd && (obj_->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD)) {
|
||||
show_status(CaliPresetPageStatus::CaliPresetStatusNoSdcard);
|
||||
return;
|
||||
}
|
||||
|
||||
// check sdcard when if lan mode printer
|
||||
if (obj_->is_lan_mode_printer()) {
|
||||
if (obj_->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD) {
|
||||
show_status(CaliPresetPageStatus::CaliPresetStatusLanModeNoSdcard);
|
||||
if (obj_->need_SD_card()) {
|
||||
if (!obj_->is_support_print_without_sd && (obj_->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD)) {
|
||||
show_status(CaliPresetPageStatus::CaliPresetStatusNoSdcard);
|
||||
return;
|
||||
}
|
||||
|
||||
// check sdcard when if lan mode printer
|
||||
if (obj_->is_lan_mode_printer()) {
|
||||
if (obj_->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD) {
|
||||
show_status(CaliPresetPageStatus::CaliPresetStatusLanModeNoSdcard);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_has_filament_incompatible) {
|
||||
|
@ -1884,7 +1893,7 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
|||
m_comboBox_nozzle_volume_types[i]->SetSelection(obj->m_nozzle_data.nozzles[i].flow_type);
|
||||
}
|
||||
|
||||
if (obj->printer_type.find("O1D") != std::string::npos && m_main_extruder_on_left) {
|
||||
if (!obj->is_main_extruder_on_left() && m_main_extruder_on_left) {
|
||||
m_multi_exturder_ams_sizer->Detach(m_main_sizer);
|
||||
m_multi_exturder_ams_sizer->Detach(m_deputy_sizer);
|
||||
m_left_nozzle_volume_type_sizer->Detach(0);
|
||||
|
@ -1892,15 +1901,15 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
|||
|
||||
m_main_sizer->GetStaticBox()->SetLabel("Right");
|
||||
m_deputy_sizer->GetStaticBox()->SetLabel("Left");
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer);
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer);
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
|
||||
m_left_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types[0]);
|
||||
m_right_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types[1]);
|
||||
|
||||
m_main_extruder_on_left = false;
|
||||
}
|
||||
else if (obj->printer_type.find("O1D") == std::string::npos && !m_main_extruder_on_left) {
|
||||
else if (obj->is_main_extruder_on_left() && !m_main_extruder_on_left) {
|
||||
m_multi_exturder_ams_sizer->Detach(m_main_sizer);
|
||||
m_multi_exturder_ams_sizer->Detach(m_deputy_sizer);
|
||||
|
||||
|
@ -1909,8 +1918,8 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
|||
|
||||
m_main_sizer->GetStaticBox()->SetLabel("Left");
|
||||
m_deputy_sizer->GetStaticBox()->SetLabel("Right");
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer);
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer);
|
||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
||||
|
||||
m_left_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types[1]);
|
||||
m_right_nozzle_volume_type_sizer->Add(m_comboBox_nozzle_volume_types[0]);
|
||||
|
@ -1942,7 +1951,7 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
|||
m_ext_spool_radiobox->SetValue(false);
|
||||
m_ams_radiobox->SetValue(false);
|
||||
}
|
||||
else if ( !obj->has_ams() || (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_MAIN_ID)) )
|
||||
else if (!obj->has_ams() || (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_MAIN_ID)) || (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)))
|
||||
{
|
||||
m_ext_spool_radiobox->SetValue(true);
|
||||
m_ams_radiobox->SetValue(false);
|
||||
|
@ -2030,6 +2039,12 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
|
|||
deputy_done = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!main_done)
|
||||
update_multi_extruder_filament_combobox(std::to_string(VIRTUAL_TRAY_MAIN_ID), 0);
|
||||
|
||||
if (!deputy_done)
|
||||
update_multi_extruder_filament_combobox(std::to_string(VIRTUAL_TRAY_DEPUTY_ID), 1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -323,7 +323,14 @@ void CalibrationFlowRateStartPage::update(MachineObject *obj)
|
|||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, true);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
if (obj->get_printer_series() == PrinterSeries::SERIES_X1) {
|
||||
if (obj->is_multi_extruders() || obj->get_printer_series() == PrinterSeries::SERIES_P1P) {
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
else if (obj->get_printer_series() == PrinterSeries::SERIES_X1) {
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, true);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
@ -336,13 +343,6 @@ void CalibrationFlowRateStartPage::update(MachineObject *obj)
|
|||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
}
|
||||
else if (obj->get_printer_series() == PrinterSeries::SERIES_P1P) {
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
|
||||
//is support auto cali
|
||||
if (!obj->is_support_flow_calibration) {
|
||||
|
|
|
@ -1128,11 +1128,22 @@ void MachineObject::reset_mapping_result(std::vector<FilamentInfo>& result)
|
|||
}
|
||||
}
|
||||
|
||||
bool MachineObject::is_main_extruder_on_left() const
|
||||
{
|
||||
return printer_type.find("O1D") == std::string::npos; // not O1D
|
||||
}
|
||||
|
||||
bool MachineObject::is_multi_extruders() const
|
||||
{
|
||||
return m_nozzle_data.total_nozzle_count > 1;
|
||||
}
|
||||
|
||||
bool MachineObject::need_SD_card() const
|
||||
{
|
||||
// todo: check whether need SD card
|
||||
return !is_multi_extruders();
|
||||
}
|
||||
|
||||
bool MachineObject::is_bbl_filament(std::string tag_uid)
|
||||
{
|
||||
if (tag_uid.empty())
|
||||
|
|
|
@ -577,7 +577,9 @@ public:
|
|||
// exceed index start with 0
|
||||
bool is_mapping_exceed_filament(std::vector<FilamentInfo>& result, int &exceed_index);
|
||||
void reset_mapping_result(std::vector<FilamentInfo>& result);
|
||||
bool is_main_extruder_on_left() const;
|
||||
bool is_multi_extruders() const;
|
||||
bool need_SD_card() const;
|
||||
|
||||
/*online*/
|
||||
bool online_rfid;
|
||||
|
|
Loading…
Reference in New Issue