mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-29 13:52:07 +00:00
ENH: clean codes about device
JIRA: [STUDIO-13609] Change-Id: I591de7033360b9570600006cfbce2148a8d031d5 (cherry picked from commit e9c774be8f4c89b8dafa14ef56913612fb68bd0c)
This commit is contained in:
@@ -5,6 +5,13 @@
|
||||
#include "MsgDialog.hpp"
|
||||
#include "libslic3r/Print.hpp"
|
||||
|
||||
#include "DeviceCore/DevConfig.h"
|
||||
#include "DeviceCore/DevExtruderSystem.h"
|
||||
#include "DeviceCore/DevFilaBlackList.h"
|
||||
#include "DeviceCore/DevFilaSystem.h"
|
||||
#include "DeviceCore/DevManager.h"
|
||||
#include "DeviceCore/DevStorage.h"
|
||||
|
||||
#define CALIBRATION_LABEL_SIZE wxSize(FromDIP(150), FromDIP(24))
|
||||
#define SYNC_BUTTON_SIZE (wxSize(FromDIP(50), FromDIP(50)))
|
||||
#define CALIBRATION_TEXT_INPUT_Y_SIZE FromDIP(20)
|
||||
@@ -16,11 +23,6 @@ namespace Slic3r { namespace GUI {
|
||||
static int PA_LINE = 0;
|
||||
static int PA_PATTERN = 1;
|
||||
|
||||
static bool is_virtual_slot(int ams_id)
|
||||
{
|
||||
return ams_id == VIRTUAL_TRAY_MAIN_ID || ams_id == VIRTUAL_TRAY_DEPUTY_ID;
|
||||
}
|
||||
|
||||
CaliPresetCaliStagePanel::CaliPresetCaliStagePanel(
|
||||
wxWindow* parent,
|
||||
wxWindowID id,
|
||||
@@ -578,7 +580,7 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent)
|
||||
return;
|
||||
}
|
||||
BOOST_LOG_TRIVIAL(info) << "CalibrationPresetPage: sync_nozzle_info - machine object status:"
|
||||
<< " dev_id = " << curr_obj->dev_id
|
||||
<< " dev_id = " << curr_obj->get_dev_id()
|
||||
<< ", print_type = " << curr_obj->printer_type
|
||||
<< ", printer_status = " << curr_obj->print_status
|
||||
<< ", cali_finished = " << curr_obj->cali_finished
|
||||
@@ -596,10 +598,10 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent)
|
||||
<< ", name = " << preset_info.name;
|
||||
}
|
||||
|
||||
for (auto extruder : curr_obj->m_extder_data.extders) {
|
||||
if (extruder.current_nozzle_type == NozzleType::ntUndefine) {
|
||||
for (const auto& extruder : curr_obj->GetExtderSystem()->GetExtruders()) {
|
||||
if (extruder.GetNozzleType() == NozzleType::ntUndefine) {
|
||||
wxString name = _L("left");
|
||||
if (extruder.id == 0) { name = _L("right"); }
|
||||
if (extruder.GetExtId() == 0) { name = _L("right"); }
|
||||
wxString msg = wxString::Format(_L("Printer %s nozzle information has not been set. Please configure it before proceeding with the calibration."), name);
|
||||
MessageDialog msg_dlg(nullptr, msg, wxEmptyString, wxICON_WARNING | wxOK);
|
||||
msg_dlg.ShowModal();
|
||||
@@ -1462,7 +1464,7 @@ bool CalibrationPresetPage::is_filament_in_blacklist(int tray_id, Preset* preset
|
||||
auto vendor = dynamic_cast<ConfigOptionStrings*> (preset->config.option("filament_vendor"));
|
||||
if (vendor && (vendor->values.size() > 0)) {
|
||||
std::string vendor_name = vendor->values[0];
|
||||
DeviceManager::check_filaments_in_blacklist(curr_obj->printer_type, vendor_name, filamnt_type, preset->filament_id, ams_id, slot_id, "", in_blacklist, action, info);
|
||||
DevFilaBlacklist::check_filaments_in_blacklist(curr_obj->printer_type, vendor_name, filamnt_type, preset->filament_id, ams_id, slot_id, "", in_blacklist, action, info);
|
||||
}
|
||||
|
||||
if (in_blacklist) {
|
||||
@@ -1479,7 +1481,7 @@ bool CalibrationPresetPage::is_filament_in_blacklist(int tray_id, Preset* preset
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (is_virtual_slot(ams_id)) {
|
||||
if (devPrinterUtil::IsVirtualSlot(ams_id)) {
|
||||
if (m_cali_mode == CalibMode::Calib_PA_Line && m_cali_method == CalibrationMethod::CALI_METHOD_AUTO) {
|
||||
std::string filamnt_type;
|
||||
preset->get_filament_type(filamnt_type);
|
||||
@@ -1606,7 +1608,7 @@ bool CalibrationPresetPage::is_blocking_printing()
|
||||
auto target_model = obj_->printer_type;
|
||||
|
||||
if (source_model != target_model) {
|
||||
std::vector<std::string> compatible_machine = dev->get_compatible_machine(target_model);
|
||||
std::vector<std::string> compatible_machine = obj_->get_compatible_machine();
|
||||
vector<std::string>::iterator it = find(compatible_machine.begin(), compatible_machine.end(), source_model);
|
||||
if (it == compatible_machine.end()) {
|
||||
return true;
|
||||
@@ -1652,9 +1654,9 @@ void CalibrationPresetPage::update_sync_button_status()
|
||||
if (curr_obj->is_multi_extruders()) {
|
||||
std::vector<CaliNozzleInfo> machine_obj_nozzle_infos;
|
||||
machine_obj_nozzle_infos.resize(2);
|
||||
for (Extder extruder : curr_obj->m_extder_data.extders) {
|
||||
machine_obj_nozzle_infos[extruder.id].nozzle_diameter = extruder.current_nozzle_diameter;
|
||||
machine_obj_nozzle_infos[extruder.id].nozzle_volume_type = int(extruder.current_nozzle_flow_type) - 1;
|
||||
for (const DevExtder& extruder : curr_obj->GetExtderSystem()->GetExtruders()) {
|
||||
machine_obj_nozzle_infos[extruder.GetExtId()].nozzle_diameter = extruder.GetNozzleDiameter();
|
||||
machine_obj_nozzle_infos[extruder.GetExtId()].nozzle_volume_type = int(extruder.GetNozzleFlowType()) - 1;
|
||||
}
|
||||
|
||||
std::vector<CaliNozzleInfo> cali_nozzle_infos;
|
||||
@@ -1672,7 +1674,7 @@ void CalibrationPresetPage::update_sync_button_status()
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (abs(curr_obj->m_extder_data.extders[0].current_nozzle_diameter - get_nozzle_diameter(0)) < EPSILON) {
|
||||
if (abs(curr_obj->GetExtderSystem()->GetNozzleDiameter(0) - get_nozzle_diameter(0)) < EPSILON) {
|
||||
set_status(true);
|
||||
}
|
||||
else {
|
||||
@@ -1754,17 +1756,17 @@ void CalibrationPresetPage::update_show_status()
|
||||
|
||||
// check sdcard when if lan mode printer
|
||||
if (obj_->is_lan_mode_printer()) {
|
||||
if (obj_->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD) {
|
||||
if (obj_->GetStorage()->get_sdcard_state() == DevStorage::SdcardState::NO_SDCARD) {
|
||||
show_status(CaliPresetPageStatus::CaliPresetStatusLanModeNoSdcard);
|
||||
return;
|
||||
}
|
||||
else if (obj_->get_sdcard_state() == MachineObject::SdcardState::HAS_SDCARD_ABNORMAL
|
||||
|| obj_->get_sdcard_state() == MachineObject::SdcardState::HAS_SDCARD_READONLY) {
|
||||
} else if (obj_->GetStorage()->get_sdcard_state() == DevStorage::SdcardState::HAS_SDCARD_ABNORMAL ||
|
||||
obj_->GetStorage()->get_sdcard_state() == DevStorage::SdcardState::HAS_SDCARD_READONLY) {
|
||||
show_status(CaliPresetPageStatus::CaliPresetStatusLanModeSDcardNotAvailable);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!obj_->is_support_print_without_sd && (obj_->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD)) {
|
||||
else if (!obj_->GetConfig()->SupportPrintWithoutSD() && (obj_->GetStorage()->get_sdcard_state() == DevStorage::SdcardState::NO_SDCARD))
|
||||
{
|
||||
show_status(CaliPresetPageStatus::CaliPresetStatusNoSdcard);
|
||||
return;
|
||||
}
|
||||
@@ -2065,7 +2067,7 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
||||
|
||||
auto get_nozzle_diameter_list_index = [&obj](int extruder_id) -> int {
|
||||
for (int i = 0; i < NOZZLE_LIST_COUNT; i++) {
|
||||
if (abs(obj->m_extder_data.extders[extruder_id].current_nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
|
||||
if (abs(obj->GetExtderSystem()->GetNozzleDiameter(extruder_id) - nozzle_diameter_list[i]) < 1e-3) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
@@ -2077,7 +2079,7 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
||||
// set nozzle value from machine
|
||||
bool nozzle_is_set = false;
|
||||
for (int i = 0; i < NOZZLE_LIST_COUNT; i++) {
|
||||
if (abs(obj->m_extder_data.extders[0].current_nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
|
||||
if (abs(obj->GetExtderSystem()->GetNozzleDiameter(0) - nozzle_diameter_list[i]) < 1e-3) {
|
||||
if (m_comboBox_nozzle_dia->GetCount() > i) {
|
||||
m_comboBox_nozzle_dia->SetSelection(i);
|
||||
nozzle_is_set = true;
|
||||
@@ -2098,7 +2100,7 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
||||
}
|
||||
|
||||
if (obj->is_multi_extruders()) {
|
||||
for (size_t i = 0; i < obj->m_extder_data.extders.size(); ++i) {
|
||||
for (size_t i = 0; i < obj->GetExtderSystem()->GetTotalExtderCount(); ++i) {
|
||||
if (i == LEFT_EXTRUDER_ID) {
|
||||
int index = get_nozzle_diameter_list_index(LEFT_EXTRUDER_ID);
|
||||
if ((index != -1) && m_left_comboBox_nozzle_dia->GetCount() > index) {
|
||||
@@ -2114,8 +2116,8 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
||||
m_left_comboBox_nozzle_dia->SetSelection(NOZZLE_LIST_DEFAULT);
|
||||
}
|
||||
|
||||
if (obj->m_extder_data.extders[i].current_nozzle_flow_type != NozzleFlowType::NONE_FLOWTYPE) {
|
||||
m_left_comboBox_nozzle_volume->SetSelection(obj->m_extder_data.extders[i].current_nozzle_flow_type - 1);
|
||||
if (obj->GetExtderSystem()->GetNozzleFlowType(i) != NozzleFlowType::NONE_FLOWTYPE) {
|
||||
m_left_comboBox_nozzle_volume->SetSelection(obj->GetExtderSystem()->GetNozzleFlowType(i) - 1);
|
||||
} else {
|
||||
m_left_comboBox_nozzle_volume->SetSelection(0);
|
||||
}
|
||||
@@ -2134,8 +2136,8 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
||||
m_right_comboBox_nozzle_dia->SetSelection(NOZZLE_LIST_DEFAULT);
|
||||
}
|
||||
|
||||
if (obj->m_extder_data.extders[i].current_nozzle_flow_type != NozzleFlowType::NONE_FLOWTYPE) {
|
||||
m_right_comboBox_nozzle_volume->SetSelection(obj->m_extder_data.extders[i].current_nozzle_flow_type - 1);
|
||||
if (obj->GetExtderSystem()->GetNozzleFlowType(i) != NozzleFlowType::NONE_FLOWTYPE) {
|
||||
m_right_comboBox_nozzle_volume->SetSelection(obj->GetExtderSystem()->GetNozzleFlowType(i) - 1);
|
||||
} else {
|
||||
m_right_comboBox_nozzle_volume->SetSelection(0);
|
||||
}
|
||||
@@ -2199,12 +2201,12 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
|
||||
|
||||
// sync filament_ams_list from obj ams list
|
||||
filament_ams_list.clear();
|
||||
for (auto& ams_item : obj->amsList) {
|
||||
for (auto& tray_item: ams_item.second->trayList) {
|
||||
for (auto& ams_item : obj->GetFilaSystem()->GetAmsList()) {
|
||||
for (auto& tray_item: ams_item.second->GetTrays()) {
|
||||
int tray_id = -1;
|
||||
if (!tray_item.second->id.empty()) {
|
||||
try {
|
||||
tray_id = stoi(tray_item.second->id) + stoi(ams_item.second->id) * 4;
|
||||
tray_id = stoi(tray_item.second->id) + stoi(ams_item.second->GetAmsId()) * 4;
|
||||
}
|
||||
catch (...) {
|
||||
;
|
||||
@@ -2228,16 +2230,16 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
|
||||
|
||||
// update filament from panel, display only obj has ams
|
||||
// update multi ams panel, display only obj has multi ams
|
||||
if (obj->has_ams()) {
|
||||
if (obj->HasAms()) {
|
||||
if (obj->is_multi_extruders()) {
|
||||
bool main_done = false;
|
||||
bool deputy_done = false;
|
||||
for (auto &ams_item : obj->amsList) {
|
||||
if (ams_item.second->nozzle == 0 && !main_done) {
|
||||
update_multi_extruder_filament_combobox(ams_item.second->id, ams_item.second->nozzle);
|
||||
for (auto &ams_item : obj->GetFilaSystem()->GetAmsList()) {
|
||||
if (ams_item.second->GetExtruderId() == 0 && !main_done) {
|
||||
update_multi_extruder_filament_combobox(ams_item.second->GetAmsId(), ams_item.second->GetExtruderId());
|
||||
main_done = true;
|
||||
} else if (ams_item.second->nozzle == 1 && !deputy_done) {
|
||||
update_multi_extruder_filament_combobox(ams_item.second->id, ams_item.second->nozzle);
|
||||
} else if (ams_item.second->GetExtruderId() == 1 && !deputy_done) {
|
||||
update_multi_extruder_filament_combobox(ams_item.second->GetAmsId(), ams_item.second->GetExtruderId());
|
||||
deputy_done = true;
|
||||
}
|
||||
}
|
||||
@@ -2249,11 +2251,11 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
|
||||
update_multi_extruder_filament_combobox(std::to_string(VIRTUAL_TRAY_DEPUTY_ID), 1);
|
||||
}
|
||||
else {
|
||||
if (obj->amsList.size() > 1) {
|
||||
on_switch_ams(obj->amsList.begin()->first);
|
||||
if (obj->GetFilaSystem()->GetAmsList().size() > 1) {
|
||||
on_switch_ams(obj->GetFilaSystem()->GetAmsList().begin()->first);
|
||||
} else {
|
||||
if (!obj->amsList.empty())
|
||||
update_filament_combobox(obj->amsList.begin()->first);
|
||||
if (!obj->GetFilaSystem()->GetAmsList().empty())
|
||||
update_filament_combobox(obj->GetFilaSystem()->GetAmsList().begin()->first);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2270,11 +2272,13 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
|
||||
std::vector<AMSinfo> ams_info;
|
||||
std::vector<AMSinfo> main_ams_info;
|
||||
std::vector<AMSinfo> deputy_ams_info;
|
||||
for (auto ams = obj->amsList.begin(); ams != obj->amsList.end(); ams++) {
|
||||
|
||||
const auto& ams_list = obj->GetFilaSystem()->GetAmsList();
|
||||
for (auto ams = ams_list.begin(); ams != ams_list.end(); ams++) {
|
||||
AMSinfo info;
|
||||
info.ams_id = ams->first;
|
||||
if (ams->second->is_exists
|
||||
&& info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) {
|
||||
if (ams->second->IsExist()
|
||||
&& info.parse_ams_info(obj, ams->second, obj->GetFilaSystem()->IsDetectRemainEnabled(), obj->is_support_ams_humidity)) {
|
||||
ams_info.push_back(info);
|
||||
if (info.nozzle_id == 0) {
|
||||
main_ams_info.push_back(info);
|
||||
@@ -2319,7 +2323,7 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
|
||||
|
||||
// update vt slot preview list
|
||||
{
|
||||
for (const AmsTray& vt_tray : obj->vt_slot) {
|
||||
for (const DevAmsTray& vt_tray : obj->vt_slot) {
|
||||
if (vt_tray.id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
|
||||
AMSinfo info;
|
||||
info.parse_ext_info(obj, vt_tray);
|
||||
@@ -2360,7 +2364,7 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
|
||||
}
|
||||
}
|
||||
|
||||
for (const AmsTray &vt_tray : obj->vt_slot) {
|
||||
for (const DevAmsTray &vt_tray : obj->vt_slot) {
|
||||
if (vt_tray.id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
|
||||
AMSinfo info;
|
||||
info.parse_ext_info(obj, vt_tray);
|
||||
@@ -2392,7 +2396,7 @@ void CalibrationPresetPage::select_default_compatible_filament()
|
||||
if (ams_id.empty())
|
||||
return;
|
||||
|
||||
if (!is_virtual_slot(stoi(ams_id))) {
|
||||
if (!devPrinterUtil::IsVirtualSlot(ams_id)) {
|
||||
std::map<int, Preset *> selected_filament;
|
||||
for (size_t i = 0; i < 4; ++i) {
|
||||
auto &fcb = m_filament_comboBox_list[i];
|
||||
|
||||
Reference in New Issue
Block a user