FIX: wrong check while send print

jira: [STUDIO-9489]
Change-Id: I7ad5cc2a55cd9b55de3d98ad7bd30150b1f448af
This commit is contained in:
xin.zhang 2025-01-01 16:03:06 +08:00 committed by lane.wei
parent c75285002a
commit 1e712f19c9
4 changed files with 31 additions and 20 deletions

View File

@ -1259,16 +1259,28 @@ std::vector<int> PartPlate::get_extruders_without_support(bool conside_custom_gc
return plate_extruders;
}
std::vector<int> PartPlate::get_used_extruders()
/* -1 is invalid, return extruder 0 or 1*/
int PartPlate::get_used_nozzle_by_filament_id(int idx) const
{
std::vector<int> used_extruders;
if (check_objects_empty_and_gcode3mf(used_extruders)) {
return used_extruders;
const std::vector<int>& filament_map = get_filament_maps();
if (filament_map.size() < idx)
{
return -1;
}
return filament_map[idx - 1] - 1;
}
std::vector<int> PartPlate::get_used_filaments()
{
std::vector<int> used_filaments;
if (check_objects_empty_and_gcode3mf(used_filaments)) {
return used_filaments;
}
GCodeProcessorResult* result = get_slice_result();
if (!result)
return used_extruders;
return used_filaments;
std::set<int> used_extruders_set;
PrintEstimatedStatistics& ps = result->print_statistics;

View File

@ -309,7 +309,8 @@ public:
std::vector<int> get_extruders_under_cli(bool conside_custom_gcode, DynamicPrintConfig& full_config) const;
std::vector<int> get_extruders_without_support(bool conside_custom_gcode = false) const;
// get used filaments, 1 based idx
std::vector<int> get_used_extruders();
std::vector<int> get_used_filaments();
int get_used_nozzle_by_filament_id(int idx) const;
bool check_tpu_printable_status(const DynamicPrintConfig & config, const std::vector<int> &tpu_filaments);
/* instance related operations*/

View File

@ -1510,7 +1510,7 @@ bool SelectMachineDialog::is_nozzle_type_match(ExtderData data) {
const auto& project_config = wxGetApp().preset_bundle->project_config;
//check nozzle used
auto used_filaments = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_extruders(); // 1 based
auto used_filaments = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_filaments(); // 1 based
auto filament_maps = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_real_filament_maps(project_config); // 1 based
std::map<int, std::string> used_extruders_flow;
std::vector<int> used_extruders; // 0 based
@ -1991,21 +1991,19 @@ bool SelectMachineDialog::is_same_nozzle_diameters(float& tag_nozzle_diameter) c
try
{
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)
PartPlate* cur_plate = wxGetApp().plater()->get_partplate_list().get_curr_plate();
auto used_filament_idxs = cur_plate->get_used_filaments();/*the index is started from 1*/
for (int used_filament_idx : used_filament_idxs)
{
if (opt_nozzle_diameters->size() < extruder_idx)
int used_nozzle_idx = cur_plate->get_used_nozzle_by_filament_id(used_filament_idx);
if (used_nozzle_idx == -1)
{
assert(0);
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)
tag_nozzle_diameter = float(opt_nozzle_diameters->get_at(used_nozzle_idx));
if (tag_nozzle_diameter != obj_->m_extder_data.extders[used_nozzle_idx].current_nozzle_diameter)
{
return false;
}
@ -2221,7 +2219,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
if (m_print_type == PrintFromType::FROM_NORMAL)
{
/*check nozzle diameter*/
float nozzle_diameter;
float nozzle_diameter = 0;
if (!is_same_nozzle_diameters(nozzle_diameter))
{
has_slice_warnings = true;
@ -3700,7 +3698,7 @@ void SelectMachineDialog::reset_and_sync_ams_list()
}
}
auto extruders = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_extruders();
auto extruders = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_filaments();
BitmapCache bmcache;
MaterialHash::iterator iter = m_materialList.begin();
while (iter != m_materialList.end()) {

View File

@ -1382,7 +1382,7 @@ void SendMultiMachinePage::sync_ams_list()
}
}
auto extruders = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_extruders();
auto extruders = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_filaments();
BitmapCache bmcache;
MaterialHash::iterator iter = m_material_list.begin();
while (iter != m_material_list.end()) {