diff --git a/src/libseqarrange/CMakeLists.txt b/src/libseqarrange/CMakeLists.txt index fc74199422..656acf3be8 100644 --- a/src/libseqarrange/CMakeLists.txt +++ b/src/libseqarrange/CMakeLists.txt @@ -1,8 +1,8 @@ find_package(Z3 REQUIRED) slic3r_remap_configs("z3::libz3" RelWithDebInfo Release) -find_package(Catch2 2.9 REQUIRED) -include(Catch) +#find_package(Catch2 2.9 REQUIRED) +#include(Catch) add_library(libseqarrange STATIC src/seq_interface.cpp src/seq_preprocess.cpp src/seq_sequential.cpp src/seq_utilities.cpp) target_include_directories(libseqarrange PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/include/libseqarrange) diff --git a/src/libslic3r/ArrangeHelper.cpp b/src/libslic3r/ArrangeHelper.cpp index 1f68f8f841..4fff1372c5 100644 --- a/src/libslic3r/ArrangeHelper.cpp +++ b/src/libslic3r/ArrangeHelper.cpp @@ -175,11 +175,13 @@ static Sequential::PrinterGeometry get_printer_geometry(const ConfigBase& config } if (slices.empty()) { // Fallback to primitive model using radius and height. - coord_t r = scaled(std::max(0.1, config.opt_float("extruder_clearance_radius"))); + coord_t r = scaled(std::max(0., config.opt_float("extruder_clearance_radius"))); coord_t h = scaled(std::max(0.1, config.opt_float("extruder_clearance_height"))); - slices.push_back(ExtruderSlice{ 0, CONVEX, { { { -5000000, -5000000 }, { 5000000, -5000000 }, { 5000000, 5000000 }, { -5000000, 5000000 } } } }); - slices.push_back(ExtruderSlice{ 1000000, BOX, { { { -r, -r }, { r, -r }, { r, r }, { -r, r } } } }); - slices.push_back(ExtruderSlice{ h, BOX, { { { -scaled(bed_x), -r }, { scaled(bed_x), -r }, { scaled(bed_x), r }, { -scaled(bed_x), r}}}}); + if (r > 0.001) { + slices.push_back(ExtruderSlice{ 0, CONVEX, { { { -5000000, -5000000 }, { 5000000, -5000000 }, { 5000000, 5000000 }, { -5000000, 5000000 } } } }); + slices.push_back(ExtruderSlice{ 1000000, BOX, { { { -r, -r }, { r, -r }, { r, r }, { -r, r } } } }); + slices.push_back(ExtruderSlice{ h, BOX, { { { -scaled(bed_x), -r }, { scaled(bed_x), -r }, { scaled(bed_x), r }, { -scaled(bed_x), r}}} }); + } } } @@ -312,7 +314,12 @@ bool check_seq_printability(const Model& model, const ConfigBase& config) Sequential::SolverConfiguration solver_config = get_solver_config(printer_geometry); std::vector objects = get_objects_to_print(model, printer_geometry); - // FIXME: This does not consider plates, non-printable objects and instances. + if (printer_geometry.extruder_slices.empty()) { + // If there are no data for extruder (such as extruder_clearance_radius set to 0), + // consider it printable. + return true; + } + Sequential::ScheduledPlate plate; for (const ModelObject* mo : model.objects) { int inst_id = -1; diff --git a/tests/fff_print/test_cancel_object.cpp b/tests/fff_print/test_cancel_object.cpp index bd5ce8279a..8c2abb378d 100644 --- a/tests/fff_print/test_cancel_object.cpp +++ b/tests/fff_print/test_cancel_object.cpp @@ -170,7 +170,7 @@ TEST_CASE_METHOD(CancelObjectFixture, "Single extruder", "[CancelObject]") { } TEST_CASE_METHOD(CancelObjectFixture, "Sequential print", "[CancelObject]") { - config.set_deserialize_strict({{"complete_objects", 1}}); + config.set_deserialize_strict({{"complete_objects", 1} }); Print print; print.apply(two_cubes, config);