FIX: update check extruder type and diameter on sending to print; update trans

jira: [STUDIO-8650] [STUDIO-9220] [STUDIO-9392]
Change-Id: Ib543b8043d517ce312e7489cbee72e93bf0d9757
(cherry picked from commit 77abf5ad6e57cf392b868d38e65610e4d0716977)
This commit is contained in:
xin.zhang 2024-12-30 21:19:52 +08:00 committed by Noisyfox
parent 4600a38554
commit b297ab18ee
3 changed files with 34 additions and 16 deletions

View file

@ -40,6 +40,7 @@ src/slic3r/GUI/Widgets/SideTools.cpp
src/slic3r/GUI/Widgets/AMSControl.cpp
src/slic3r/GUI/Widgets/FanControl.cpp
src/slic3r/GUI/Widgets/FilamentLoad.cpp
src/slic3r/GUI/Widgets/TempInput.cpp
src/slic3r/GUI/ImGuiWrapper.cpp
src/slic3r/GUI/Jobs/ArrangeJob.cpp
src/slic3r/GUI/Jobs/OrientJob.cpp

View file

@ -1912,7 +1912,7 @@ bool SelectMachineDialog::is_blocking_printing(MachineObject* obj_)
* @param tag_nozzle_diameter -- return the target nozzle_diameter but mismatch
* @return is same or not
/*************************************************************/
bool SelectMachineDialog::is_same_nozzle_diameters(float &tag_nozzle_diameter) const
bool SelectMachineDialog::is_same_nozzle_diameters(float& tag_nozzle_diameter) const
{
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
if (!dev) return false;
@ -1929,11 +1929,22 @@ bool SelectMachineDialog::is_same_nozzle_diameters(float &tag_nozzle_diameter) c
try
{
auto extruders = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_extruders();
for (auto i = 0; i < extruders.size(); i++) {
auto extruder = extruders[i] - 1;
tag_nozzle_diameter = float(opt_nozzle_diameters->get_at(extruder));
if (tag_nozzle_diameter != obj_->m_extder_data.extders[0].current_nozzle_diameter) {
auto used_extruder_idxs = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_extruders();/*the index is started from 1*/
for (int extruder_idx : used_extruder_idxs)
{
if (opt_nozzle_diameters->size() < extruder_idx)
{
return false;
}
tag_nozzle_diameter = float(opt_nozzle_diameters->get_at(extruder_idx));
if (obj_->m_extder_data.extders.size() < extruder_idx)
{
return false;
}
if (tag_nozzle_diameter != obj_->m_extder_data.extders[extruder_idx - 1].current_nozzle_diameter)
{
return false;
}
}
@ -2163,18 +2174,24 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
+ "\n " + nozzle_in_printer
+ "\n", ConfirmBeforeSendInfo::InfoLevel::Warning));
}
std::string filament_type;
if (!is_same_nozzle_type(obj_->m_extder_data.extders[0], filament_type))
{
has_slice_warnings = true;
is_printing_block = true;
wxString nozzle_in_preset = wxString::Format(_L("Printing high temperature material (%s material) with %s may cause nozzle damage"), filament_type, format_steel_name(obj_->m_extder_data.extders[0].current_nozzle_type));
confirm_text.push_back(ConfirmBeforeSendInfo(nozzle_in_preset, ConfirmBeforeSendInfo::InfoLevel::Warning));
/*check nozzle type*/
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
MachineObject* obj = dev ? dev->get_selected_machine() : nullptr;
const std::vector<Extder>& extders = obj ? obj->m_extder_data.extders : std::vector<Extder>();
for (const auto& extder : extders)
{
std::string filament_type;
if (!is_same_nozzle_type(extder, filament_type))
{
has_slice_warnings = true;
is_printing_block = true;
wxString nozzle_in_preset = wxString::Format(_L("Printing high temperature material(%s material) with %s may cause nozzle damage"),
filament_type, format_steel_name(obj_->m_extder_data.extders[0].current_nozzle_type));
confirm_text.push_back(ConfirmBeforeSendInfo(nozzle_in_preset, ConfirmBeforeSendInfo::InfoLevel::Warning));
}
}
}
if (has_slice_warnings) {
wxString confirm_title = _L("Warning");

View file

@ -251,7 +251,7 @@ void TempInput::Warning(bool warn, WarningType type)
wxString warning_string;
if (type == WarningType::WARNING_TOO_HIGH)
warning_string = _L("The maximum temperature cannot exceed" + wxString::Format("%d", max_temp));
warning_string = _L("The maximum temperature cannot exceed " + wxString::Format("%d", max_temp));
else if (type == WarningType::WARNING_TOO_LOW)
warning_string = _L("The minmum temperature should not be less than " + wxString::Format("%d", max_temp));