diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index cb65428997..4c43757834 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -1070,10 +1070,13 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, glsafe(::glDisable(GL_BLEND)); } -bool GLVolumeCollection::check_wipe_tower_outside_state(const Slic3r::BuildVolume &build_volume) const +bool GLVolumeCollection::check_wipe_tower_outside_state(const Slic3r::BuildVolume &build_volume, int plate_id) const { for (GLVolume *volume : this->volumes) { if (volume->is_wipe_tower) { + int wipe_tower_plate_id = volume->composite_id.object_id - 1000; + if (wipe_tower_plate_id != plate_id) + continue; const std::vector& printable_area = build_volume.printable_area(); Polygon printable_poly = Polygon::new_scale(printable_area); diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index b2e94030f5..d19d5c8e0f 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -535,7 +535,7 @@ public: // returns the containment state in the given out_state, if non-null bool check_outside_state(const Slic3r::BuildVolume& build_volume, ModelInstanceEPrintVolumeState* out_state, ObjectFilamentResults* object_results) const; void reset_outside_state(); - bool check_wipe_tower_outside_state(const Slic3r::BuildVolume &build_volume) const; + bool check_wipe_tower_outside_state(const Slic3r::BuildVolume &build_volume, int plate_id) const; void update_colors_by_extruder(const DynamicPrintConfig *config, bool is_update_alpha = true); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 790cf68ab8..76b483842c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3012,8 +3012,9 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re const bool fullyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Fully_Outside); // const bool objectLimited = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Limited); - bool show_read_wipe_tower = wxGetApp().plater()->get_partplate_list().get_selected_plate()->fff_print()->is_step_done(psWipeTower); - bool wipe_tower_outside = m_volumes.check_wipe_tower_outside_state(m_bed.build_volume()); + PartPlate *cur_plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); + bool show_read_wipe_tower = cur_plate->fff_print()->is_step_done(psWipeTower); + bool wipe_tower_outside = m_volumes.check_wipe_tower_outside_state(m_bed.build_volume(), wxGetApp().plater()->get_partplate_list().get_curr_plate_index()); bool show_wipe_tower_outside_error = show_read_wipe_tower ? !wipe_tower_outside : false; _set_warning_notification(EWarning::PrimeTowerOutside, show_wipe_tower_outside_error); @@ -3029,7 +3030,6 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re //if (printer_technology != ptSLA || !contained_min_one) // _set_warning_notification(EWarning::SlaSupportsOutside, false); - PartPlate* cur_plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); bool tpu_valid = cur_plate->check_tpu_printable_status(wxGetApp().preset_bundle->full_config(), wxGetApp().preset_bundle->get_used_tpu_filaments(cur_plate->get_extruders(true))); _set_warning_notification(EWarning::TPUPrintableError, !tpu_valid);