Fixed cut contours in gizmo cut after deleting an object

This commit is contained in:
enricoturri1966 2021-08-18 10:23:18 +02:00
parent ad0902e44e
commit 740067c576
3 changed files with 21 additions and 5 deletions

View File

@ -306,7 +306,7 @@ void GLVolume::SinkingContours::update()
int object_idx = m_parent.object_idx(); int object_idx = m_parent.object_idx();
Model& model = GUI::wxGetApp().plater()->model(); Model& model = GUI::wxGetApp().plater()->model();
if (0 <= object_idx && object_idx < model.objects.size() && m_parent.is_sinking() && !m_parent.is_below_printbed()) { if (0 <= object_idx && object_idx < (int)model.objects.size() && m_parent.is_sinking() && !m_parent.is_below_printbed()) {
const BoundingBoxf3& box = m_parent.transformed_convex_hull_bounding_box(); const BoundingBoxf3& box = m_parent.transformed_convex_hull_bounding_box();
if (!m_old_box.size().isApprox(box.size()) || m_old_box.min.z() != box.min.z()) { if (!m_old_box.size().isApprox(box.size()) || m_old_box.min.z() != box.min.z()) {
m_old_box = box; m_old_box = box;

View File

@ -55,8 +55,15 @@ std::string GLGizmoCut::on_get_name() const
void GLGizmoCut::on_set_state() void GLGizmoCut::on_set_state()
{ {
// Reset m_cut_z on gizmo activation // Reset m_cut_z on gizmo activation
#if ENABLE_SINKING_CONTOURS
if (get_state() == On) {
m_cut_z = bounding_box().center().z();
m_cut_contours.reset();
}
#else
if (get_state() == On) if (get_state() == On)
m_cut_z = bounding_box().center().z(); m_cut_z = bounding_box().center().z();
#endif // ENABLE_SINKING_CONTOURS
} }
bool GLGizmoCut::on_is_activable() const bool GLGizmoCut::on_is_activable() const
@ -211,10 +218,9 @@ void GLGizmoCut::on_render_input_window(float x, float y, float bottom_limit)
if (cut_clicked && (m_keep_upper || m_keep_lower)) { if (cut_clicked && (m_keep_upper || m_keep_lower)) {
perform_cut(m_parent.get_selection()); perform_cut(m_parent.get_selection());
m_cut_contours.cut_z = 0.0f; #if ENABLE_SINKING_CONTOURS
m_cut_contours.object_idx = -1; m_cut_contours.reset();
m_cut_contours.instance_idx = -1; #endif // ENABLE_SINKING_CONTOURS
m_cut_contours.contours.reset();
} }
} }

View File

@ -35,6 +35,16 @@ class GLGizmoCut : public GLGizmoBase
Vec3d shift{ Vec3d::Zero() }; Vec3d shift{ Vec3d::Zero() };
int object_idx{ -1 }; int object_idx{ -1 };
int instance_idx{ -1 }; int instance_idx{ -1 };
void reset() {
mesh.clear();
contours.reset();
cut_z = 0.0;
position = Vec3d::Zero();
shift = Vec3d::Zero();
object_idx = -1;
instance_idx = -1;
}
}; };
CutContours m_cut_contours; CutContours m_cut_contours;