mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-12 21:39:02 +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
|
||||
{
|
||||
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");
|
||||
}
|
||||
#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())
|
||||
@ -742,7 +742,7 @@ void prepare_ExtruderPolygons(const SolverConfiguration &solver
|
||||
}
|
||||
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/Plater.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 {
|
||||
std::rethrow_exception(eptr);
|
||||
} 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, "
|
||||
"possibly affecting order of printing of the non-selected beds. Consider using global arrange across all beds."), false);
|
||||
ErrorDialog dlg(wxGetApp().plater(), _L("The result of the single-bed arrange would scatter "
|
||||
"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();
|
||||
error = true;
|
||||
eptr = nullptr; // The exception is handled.
|
||||
|
Loading…
x
Reference in New Issue
Block a user