mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-14 04:25:57 +08:00
Exception handling for too large objects
This commit is contained in:
parent
075ff32718
commit
334de30d10
@ -27,6 +27,8 @@ using namespace Slic3r;
|
|||||||
|
|
||||||
namespace Sequential
|
namespace Sequential
|
||||||
{
|
{
|
||||||
|
class ObjectTooLargeException : public std::runtime_error { public: explicit ObjectTooLargeException(const std::string& msg) : std::runtime_error(msg) {}};
|
||||||
|
class InternalErrorException : public std::runtime_error { public: explicit InternalErrorException(const std::string& msg) : std::runtime_error(msg) {} };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -721,7 +721,7 @@ void prepare_ExtruderPolygons(const SolverConfiguration &solver
|
|||||||
printf("Object too large to fit onto plate.\n");
|
printf("Object too large to fit onto plate.\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
throw std::runtime_error("OBJECT TOO LARGE");
|
throw ObjectTooLargeException("OBJECT TOO LARGE");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (printer_geometry.convex_heights.find(height) != printer_geometry.convex_heights.end())
|
if (printer_geometry.convex_heights.find(height) != printer_geometry.convex_heights.end())
|
||||||
@ -742,7 +742,7 @@ void prepare_ExtruderPolygons(const SolverConfiguration &solver
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw std::runtime_error("MISMATCH BETWEEN OBJECT AND PRINTER SLICE HEIGHTS.");
|
throw InternalErrorException("MISMATCH BETWEEN OBJECT AND PRINTER SLICE HEIGHTS.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include "slic3r/GUI/I18N.hpp"
|
#include "slic3r/GUI/I18N.hpp"
|
||||||
#include "slic3r/GUI/Plater.hpp"
|
#include "slic3r/GUI/Plater.hpp"
|
||||||
#include "slic3r/GUI/MsgDialog.hpp"
|
#include "slic3r/GUI/MsgDialog.hpp"
|
||||||
|
#include "slic3r/GUI/format.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -49,8 +49,19 @@ void SeqArrangeJob::finalize(bool canceled, std::exception_ptr& eptr)
|
|||||||
try {
|
try {
|
||||||
std::rethrow_exception(eptr);
|
std::rethrow_exception(eptr);
|
||||||
} catch (const ExceptionCannotApplySeqArrange&) {
|
} catch (const ExceptionCannotApplySeqArrange&) {
|
||||||
ErrorDialog dlg(wxGetApp().plater(), _L("The result of the single-bed arrange would scatter instances of a single object between several beds, "
|
ErrorDialog dlg(wxGetApp().plater(), _L("The result of the single-bed arrange would scatter "
|
||||||
"possibly affecting order of printing of the non-selected beds. Consider using global arrange across all beds."), false);
|
"instances of a single object between several beds, possibly affecting order of printing "
|
||||||
|
"of the non-selected beds. Consider using global arrange across all beds."), false);
|
||||||
|
dlg.ShowModal();
|
||||||
|
error = true;
|
||||||
|
eptr = nullptr; // The exception is handled.
|
||||||
|
} catch (const Sequential::ObjectTooLargeException&) {
|
||||||
|
ErrorDialog dlg(wxGetApp().plater(), _L("One of the objects is too large to fit the bed."), false);
|
||||||
|
dlg.ShowModal();
|
||||||
|
error = true;
|
||||||
|
eptr = nullptr; // The exception is handled.
|
||||||
|
} catch (const Sequential::InternalErrorException& ex) {
|
||||||
|
ErrorDialog dlg(wxGetApp().plater(), GUI::format_wxstr(_L("Internal error: %1%"), ex.what()), false);
|
||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
error = true;
|
error = true;
|
||||||
eptr = nullptr; // The exception is handled.
|
eptr = nullptr; // The exception is handled.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user