mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-20 03:43:52 +00:00
FIX: sync some differences from master
and cherry pick I6d6b337176bb1dd9e99b51b67065e103d054201d jira: none Change-Id: I0902ab2986ec1b604eeb67062e886f9fe2151b6a (cherry picked from commit 90291d550b96de31c9c50814b19d88a453c57290)
This commit is contained in:
@@ -970,6 +970,7 @@ void PressureAdvanceWizard::on_cali_save()
|
|||||||
if (save_page->is_all_failed()) {
|
if (save_page->is_all_failed()) {
|
||||||
MessageDialog msg_dlg(nullptr, _L("The failed test result has been dropped."), wxEmptyString, wxOK);
|
MessageDialog msg_dlg(nullptr, _L("The failed test result has been dropped."), wxEmptyString, wxOK);
|
||||||
msg_dlg.ShowModal();
|
msg_dlg.ShowModal();
|
||||||
|
back_preset_info(curr_obj, true);
|
||||||
show_step(start_step);
|
show_step(start_step);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1383,6 +1384,7 @@ void FlowRateWizard::on_cali_save()
|
|||||||
if (save_page->is_all_failed()) {
|
if (save_page->is_all_failed()) {
|
||||||
MessageDialog msg_dlg(nullptr, _L("The failed test result has been dropped."), wxEmptyString, wxOK);
|
MessageDialog msg_dlg(nullptr, _L("The failed test result has been dropped."), wxEmptyString, wxOK);
|
||||||
msg_dlg.ShowModal();
|
msg_dlg.ShowModal();
|
||||||
|
back_preset_info(curr_obj, true);
|
||||||
show_step(start_step);
|
show_step(start_step);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1762,6 +1764,7 @@ void MaxVolumetricSpeedWizard::on_cali_save()
|
|||||||
|
|
||||||
MessageDialog msg_dlg(nullptr, _L("Max volumetric speed calibration result has been saved to preset."), wxEmptyString, wxOK);
|
MessageDialog msg_dlg(nullptr, _L("Max volumetric speed calibration result has been saved to preset."), wxEmptyString, wxOK);
|
||||||
msg_dlg.ShowModal();
|
msg_dlg.ShowModal();
|
||||||
|
back_preset_info(curr_obj, true);
|
||||||
show_step(start_step);
|
show_step(start_step);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ void CalibrationCaliPage::update(MachineObject* obj)
|
|||||||
enable_cali = false;
|
enable_cali = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
assert(false);
|
//assert(false);
|
||||||
}
|
}
|
||||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_CALI_NEXT, enable_cali);
|
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_CALI_NEXT, enable_cali);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -260,7 +260,12 @@ void CaliPASaveAutoPanel::sync_cali_result(const std::vector<PACalibResult>& cal
|
|||||||
}
|
}
|
||||||
preset_names = default_naming(preset_names);
|
preset_names = default_naming(preset_names);
|
||||||
|
|
||||||
for (auto& item : cali_result) {
|
std::vector<PACalibResult> sorted_cali_result = cali_result;
|
||||||
|
std::sort(sorted_cali_result.begin(), sorted_cali_result.end(), [this](const PACalibResult &left, const PACalibResult& right) {
|
||||||
|
return left.tray_id < right.tray_id;
|
||||||
|
});
|
||||||
|
|
||||||
|
for (auto &item : sorted_cali_result) {
|
||||||
bool result_failed = false;
|
bool result_failed = false;
|
||||||
if (item.confidence != 0) {
|
if (item.confidence != 0) {
|
||||||
result_failed = true;
|
result_failed = true;
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ static std::string MachineBedTypeString[7] = {
|
|||||||
"pct",
|
"pct",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static wxString nozzle_not_set_text = _L("The printer nozzle information has not been set.\nPlease configure it before proceeding with the calibration.");
|
||||||
|
static wxString nozzle_volume_type_not_match_text = _L("The nozzle type does not match the actual printer nozzle type.\nPlease click the Sync button above and restart the calibration.");
|
||||||
|
|
||||||
std::vector<std::string> not_support_auto_pa_cali_filaments = {
|
std::vector<std::string> not_support_auto_pa_cali_filaments = {
|
||||||
"GFU03", // TPU 90A
|
"GFU03", // TPU 90A
|
||||||
"GFU04" // TPU 85A
|
"GFU04" // TPU 85A
|
||||||
@@ -836,6 +839,7 @@ void CalibUtils::set_for_auto_pa_model_and_config(const std::vector<CalibInfo> &
|
|||||||
_wall_generator->value = PerimeterGeneratorType::Arachne;
|
_wall_generator->value = PerimeterGeneratorType::Arachne;
|
||||||
|
|
||||||
print_config.option<ConfigOptionBool>("enable_prime_tower")->value = false;
|
print_config.option<ConfigOptionBool>("enable_prime_tower")->value = false;
|
||||||
|
print_config.option<ConfigOptionBool>("enable_wrapping_detection")->value = false;
|
||||||
|
|
||||||
auto get_new_filament_id = [&sorted_calib_infos](int index) -> int {
|
auto get_new_filament_id = [&sorted_calib_infos](int index) -> int {
|
||||||
for (size_t i = 0; i < sorted_calib_infos.size(); ++i) {
|
for (size_t i = 0; i < sorted_calib_infos.size(); ++i) {
|
||||||
@@ -1361,13 +1365,6 @@ bool CalibUtils::check_printable_status_before_cali(const MachineObject *obj, co
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool is_multi_extruder = obj->is_multi_extruders();
|
bool is_multi_extruder = obj->is_multi_extruders();
|
||||||
std::vector<NozzleFlowType> nozzle_volume_types;
|
|
||||||
if (is_multi_extruder) {
|
|
||||||
for (const DevExtder& extruder : obj->GetExtderSystem()->GetExtruders()) {
|
|
||||||
nozzle_volume_types.emplace_back(extruder.GetNozzleFlowType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Preset *printer_preset = get_printer_preset(obj);
|
Preset *printer_preset = get_printer_preset(obj);
|
||||||
|
|
||||||
for (const auto &cali_info : cali_infos.calib_datas) {
|
for (const auto &cali_info : cali_infos.calib_datas) {
|
||||||
@@ -1383,7 +1380,14 @@ bool CalibUtils::check_printable_status_before_cali(const MachineObject *obj, co
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (is_approx(double(cali_info.nozzle_diameter), 0.2) && !obj->is_series_x()) {
|
||||||
|
error_message = wxString::Format(_L("The nozzle diameter of %s extruder is 0.2mm which does not support automatic Flow Dynamics calibration."), name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
float diameter = obj->GetExtderSystem()->GetNozzleDiameter(extruder_id);
|
float diameter = obj->GetExtderSystem()->GetNozzleDiameter(extruder_id);
|
||||||
|
NozzleFlowType nozzle_volume_type = obj->GetExtderSystem()->GetNozzleFlowType(extruder_id);
|
||||||
if (!is_approx(cali_info.nozzle_diameter, diameter)) {
|
if (!is_approx(cali_info.nozzle_diameter, diameter)) {
|
||||||
if (is_multi_extruder)
|
if (is_multi_extruder)
|
||||||
error_message = wxString::Format(_L("The currently selected nozzle diameter of %s extruder does not match the actual nozzle diameter.\n"
|
error_message = wxString::Format(_L("The currently selected nozzle diameter of %s extruder does not match the actual nozzle diameter.\n"
|
||||||
@@ -1394,20 +1398,23 @@ bool CalibUtils::check_printable_status_before_cali(const MachineObject *obj, co
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_multi_extruder) {
|
if (nozzle_volume_type == NozzleFlowType::NONE_FLOWTYPE) {
|
||||||
if (nozzle_volume_types[cali_info.extruder_id] == NozzleFlowType::NONE_FLOWTYPE) {
|
if (is_multi_extruder)
|
||||||
|
|
||||||
error_message = wxString::Format(_L("Printer %s nozzle information has not been set. Please configure it before proceeding with the calibration."), name);
|
error_message = wxString::Format(_L("Printer %s nozzle information has not been set. Please configure it before proceeding with the calibration."), name);
|
||||||
|
else
|
||||||
|
error_message = nozzle_not_set_text;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NozzleVolumeType(nozzle_volume_types[cali_info.extruder_id] - 1) != cali_info.nozzle_volume_type) {
|
if (NozzleVolumeType(nozzle_volume_type - 1) != cali_info.nozzle_volume_type) {
|
||||||
|
if (is_multi_extruder)
|
||||||
error_message = wxString::Format(_L("The currently selected nozzle type of %s extruder does not match the actual printer nozzle type.\n"
|
error_message = wxString::Format(_L("The currently selected nozzle type of %s extruder does not match the actual printer nozzle type.\n"
|
||||||
"Please click the Sync button above and restart the calibration."), name);
|
"Please click the Sync button above and restart the calibration."), name);
|
||||||
|
else
|
||||||
|
error_message = nozzle_volume_type_not_match_text;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1421,61 +1428,72 @@ bool CalibUtils::check_printable_status_before_cali(const MachineObject *obj, co
|
|||||||
if (cali_infos.empty())
|
if (cali_infos.empty())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
float cali_diameter = cali_infos[0].nozzle_diameter;
|
bool is_multi_extruder = obj->is_multi_extruders();
|
||||||
int extruder_id = cali_infos[0].extruder_id;
|
std::vector<NozzleFlowType> nozzle_volume_types;
|
||||||
|
if (is_multi_extruder) {
|
||||||
|
const auto& extders = obj->GetExtderSystem()->GetExtruders();
|
||||||
|
for (const DevExtder &extruder : extders) {
|
||||||
|
nozzle_volume_types.emplace_back(extruder.GetNozzleFlowType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Preset *printer_preset = get_printer_preset(obj);
|
||||||
|
|
||||||
for (const auto &cali_info : cali_infos) {
|
for (const auto &cali_info : cali_infos) {
|
||||||
if (cali_infos[0].params.mode == CalibMode::Calib_Auto_PA_Line && !is_support_auto_pa_cali(cali_info.filament_prest->filament_id)) {
|
wxString name = _L("left");
|
||||||
|
if (cali_info.extruder_id == 0) {
|
||||||
|
name = _L("right");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cali_info.params.mode == CalibMode::Calib_Auto_PA_Line && !is_support_auto_pa_cali(cali_info.filament_prest->filament_id)) {
|
||||||
error_message = _L("TPU 90A/TPU 85A is too soft and does not support automatic Flow Dynamics calibration.");
|
error_message = _L("TPU 90A/TPU 85A is too soft and does not support automatic Flow Dynamics calibration.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_approx(cali_diameter, cali_info.nozzle_diameter)) {
|
|
||||||
error_message = _L("Automatic calibration only supports cases where the left and right nozzle diameters are identical.");
|
if (is_approx(double(cali_info.nozzle_diameter), 0.2) && !obj->is_series_x()) {
|
||||||
|
error_message = wxString::Format(_L("The nozzle diameter of %s extruder is 0.2mm which does not support automatic Flow Dynamics calibration."), name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (extruder_id >= obj->GetExtderSystem()->GetExtruders().size()) {
|
float cali_diameter = cali_info.nozzle_diameter;
|
||||||
|
int extruder_id = cali_info.extruder_id;
|
||||||
|
if (extruder_id >= obj->GetExtderSystem()->GetTotalExtderSize()) {
|
||||||
error_message = _L("The number of printer extruders and the printer selected for calibration does not match.");
|
error_message = _L("The number of printer extruders and the printer selected for calibration does not match.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
float diameter = obj->GetExtderSystem()->GetNozzleDiameter(extruder_id);
|
float diameter = obj->GetExtderSystem()->GetNozzleDiameter(extruder_id);
|
||||||
bool is_multi_extruder = obj->is_multi_extruders();
|
NozzleFlowType nozzle_volume_type = nozzle_volume_types[cali_info.extruder_id];
|
||||||
std::vector<NozzleFlowType> nozzle_volume_types;
|
|
||||||
if (is_multi_extruder) {
|
|
||||||
for (auto &extruder : obj->GetExtderSystem()->GetExtruders()) { nozzle_volume_types.emplace_back(extruder.GetNozzleFlowType()); }
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const auto &cali_info : cali_infos) {
|
|
||||||
wxString name = _L("left");
|
|
||||||
if (cali_info.extruder_id == 0) { name = _L("right"); }
|
|
||||||
|
|
||||||
if (!is_approx(cali_info.nozzle_diameter, diameter)) {
|
if (!is_approx(cali_info.nozzle_diameter, diameter)) {
|
||||||
if (is_multi_extruder)
|
if (is_multi_extruder)
|
||||||
error_message = wxString::Format(_L("The currently selected nozzle diameter of %s extruder does not match the actual nozzle diameter.\n"
|
error_message = wxString::Format(_L("The currently selected nozzle diameter of %s extruder does not match the actual nozzle diameter.\n"
|
||||||
"Please click the Sync button above and restart the calibration."),
|
"Please click the Sync button above and restart the calibration."), name);
|
||||||
name);
|
|
||||||
else
|
else
|
||||||
error_message = _L("The nozzle diameter does not match the actual printer nozzle diameter.\n"
|
error_message = _L("The nozzle diameter does not match the actual printer nozzle diameter.\n"
|
||||||
"Please click the Sync button above and restart the calibration.");
|
"Please click the Sync button above and restart the calibration.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_multi_extruder) {
|
if (nozzle_volume_type == NozzleFlowType::NONE_FLOWTYPE) {
|
||||||
if (nozzle_volume_types[cali_info.extruder_id] == NozzleFlowType::NONE_FLOWTYPE) {
|
if (is_multi_extruder)
|
||||||
error_message = wxString::Format(_L("Printer %s nozzle information has not been set. Please configure it before proceeding with the calibration."), name);
|
error_message = wxString::Format(_L("Printer %s nozzle information has not been set. Please configure it before proceeding with the calibration."), name);
|
||||||
|
else
|
||||||
|
error_message = nozzle_not_set_text;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NozzleVolumeType(nozzle_volume_types[cali_info.extruder_id] - 1) != cali_info.nozzle_volume_type) {
|
if (NozzleVolumeType(nozzle_volume_type - 1) != cali_info.nozzle_volume_type) {
|
||||||
|
if (is_multi_extruder)
|
||||||
error_message = wxString::Format(_L("The currently selected nozzle type of %s extruder does not match the actual printer nozzle type.\n"
|
error_message = wxString::Format(_L("The currently selected nozzle type of %s extruder does not match the actual printer nozzle type.\n"
|
||||||
"Please click the Sync button above and restart the calibration."),
|
"Please click the Sync button above and restart the calibration."), name);
|
||||||
name);
|
else
|
||||||
|
error_message = nozzle_volume_type_not_match_text;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1489,20 +1507,15 @@ bool CalibUtils::check_printable_status_before_cali(const MachineObject* obj, co
|
|||||||
const ConfigOptionFloats *nozzle_diameter_config = cali_info.printer_prest->config.option<ConfigOptionFloats>("nozzle_diameter");
|
const ConfigOptionFloats *nozzle_diameter_config = cali_info.printer_prest->config.option<ConfigOptionFloats>("nozzle_diameter");
|
||||||
float nozzle_diameter = nozzle_diameter_config->values[0];
|
float nozzle_diameter = nozzle_diameter_config->values[0];
|
||||||
|
|
||||||
float diameter = obj->GetExtderSystem()->GetNozzleDiameter(cali_info.extruder_id);
|
|
||||||
bool is_multi_extruder = obj->is_multi_extruders();
|
bool is_multi_extruder = obj->is_multi_extruders();
|
||||||
std::vector<NozzleFlowType> nozzle_volume_types;
|
|
||||||
if (is_multi_extruder) {
|
|
||||||
for (const DevExtder& extruder : obj->GetExtderSystem()->GetExtruders()) {
|
|
||||||
nozzle_volume_types.emplace_back(extruder.GetNozzleFlowType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wxString name = _L("left");
|
wxString name = _L("left");
|
||||||
if (cali_info.extruder_id == 0) {
|
if (cali_info.extruder_id == 0) {
|
||||||
name = _L("right");
|
name = _L("right");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float diameter = obj->GetExtderSystem()->GetNozzleDiameter(cali_info.extruder_id);
|
||||||
|
NozzleFlowType nozzle_volume_type = obj->GetExtderSystem()->GetNozzleFlowType(cali_info.extruder_id);
|
||||||
|
|
||||||
if (!is_approx(nozzle_diameter, diameter)) {
|
if (!is_approx(nozzle_diameter, diameter)) {
|
||||||
if (is_multi_extruder)
|
if (is_multi_extruder)
|
||||||
error_message = wxString::Format(_L("The currently selected nozzle diameter of %s extruder does not match the actual nozzle diameter.\n"
|
error_message = wxString::Format(_L("The currently selected nozzle diameter of %s extruder does not match the actual nozzle diameter.\n"
|
||||||
@@ -1513,18 +1526,23 @@ bool CalibUtils::check_printable_status_before_cali(const MachineObject* obj, co
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_multi_extruder) {
|
|
||||||
if (nozzle_volume_types[cali_info.extruder_id] == NozzleFlowType::NONE_FLOWTYPE) {
|
if (nozzle_volume_type == NozzleFlowType::NONE_FLOWTYPE) {
|
||||||
|
if (is_multi_extruder)
|
||||||
error_message = wxString::Format(_L("Printer %s nozzle information has not been set. Please configure it before proceeding with the calibration."), name);
|
error_message = wxString::Format(_L("Printer %s nozzle information has not been set. Please configure it before proceeding with the calibration."), name);
|
||||||
|
else
|
||||||
|
error_message = nozzle_not_set_text;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NozzleVolumeType(nozzle_volume_types[cali_info.extruder_id] - 1) != cali_info.nozzle_volume_type) {
|
if (NozzleVolumeType(nozzle_volume_type - 1) != cali_info.nozzle_volume_type) {
|
||||||
|
if (is_multi_extruder)
|
||||||
error_message = wxString::Format(_L("The currently selected nozzle type of %s extruder does not match the actual printer nozzle type.\n"
|
error_message = wxString::Format(_L("The currently selected nozzle type of %s extruder does not match the actual printer nozzle type.\n"
|
||||||
"Please click the Sync button above and restart the calibration."), name);
|
"Please click the Sync button above and restart the calibration."), name);
|
||||||
|
else
|
||||||
|
error_message = nozzle_volume_type_not_match_text;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user