diff --git a/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp b/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp index 3ac1c39377..d26068ca24 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp @@ -73,8 +73,9 @@ Raycaster* CommonGizmosDataPool::raycaster() const ObjectClipper* CommonGizmosDataPool::object_clipper() const { ObjectClipper* oc = dynamic_cast(m_data.at(CommonGizmosDataID::ObjectClipper).get()); - assert(oc); - return oc->is_valid() ? oc : nullptr; + // ObjectClipper is used from outside the gizmos to report current clipping plane. + // This function can be called when oc is nullptr. + return (oc && oc->is_valid()) ? oc : nullptr; } SupportsClipper* CommonGizmosDataPool::supports_clipper() const diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index ac7fe72e56..685e49d367 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -412,7 +412,8 @@ bool GLGizmosManager::gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_p ClippingPlane GLGizmosManager::get_clipping_plane() const { - if (! m_common_gizmos_data->object_clipper() + if (! m_common_gizmos_data + || ! m_common_gizmos_data->object_clipper() || m_common_gizmos_data->object_clipper()->get_position() == 0.) return ClippingPlane::ClipsNothing(); else {