From 7ff4005c22a64aa80aa83bc0ae47c93763b38266 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 29 Oct 2023 12:16:16 +0800 Subject: [PATCH] Fix errors when slicing A1 mini --- src/libslic3r/GCode.cpp | 9 +++++++++ src/libslic3r/Print.cpp | 2 +- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index d33db0de9..4955a58e3 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2179,6 +2179,15 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->placeholder_parser().set("first_layer_print_min", new ConfigOptionFloats({bbox.min.x(), bbox.min.y()})); this->placeholder_parser().set("first_layer_print_max", new ConfigOptionFloats({bbox.max.x(), bbox.max.y()})); this->placeholder_parser().set("first_layer_print_size", new ConfigOptionFloats({ bbox.size().x(), bbox.size().y() })); + + // get center without wipe tower + BoundingBoxf bbox_wo_wt; // bounding box without wipe tower + for (auto &objPtr : print.objects()) { + BBoxData data; + bbox_wo_wt.merge(unscaled(objPtr->get_first_layer_bbox(data.area, data.layer_height, data.name))); + } + auto center = bbox_wo_wt.center(); + this->placeholder_parser().set("first_layer_center_no_wipe_tower", new ConfigOptionFloats(center.x(), center.y())); } float outer_wall_volumetric_speed = 0.0f; { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index f38c407e0..45f2baa9a 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1366,7 +1366,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* bool before_layer_gcode_resets_extruder = boost::regex_search(m_config.before_layer_change_gcode.value, regex_g92e0); bool layer_gcode_resets_extruder = boost::regex_search(m_config.layer_change_gcode.value, regex_g92e0); - if (m_config.use_relative_e_distances) { + if (m_config.use_relative_e_distances && !is_BBL_printer()) { // See GH issues #6336 #5073 if ((m_config.gcode_flavor == gcfMarlinLegacy || m_config.gcode_flavor == gcfMarlinFirmware) && !before_layer_gcode_resets_extruder && !layer_gcode_resets_extruder) diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 1255211c6..b71512d6d 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -664,6 +664,9 @@ bool BackgroundSlicingProcess::empty() const StringObjectException BackgroundSlicingProcess::validate(StringObjectException *warning, Polygons* collison_polygons, std::vector>* height_polygons) { assert(m_print != nullptr); + assert(m_print == m_fff_print); + + m_fff_print->is_BBL_printer() = wxGetApp().preset_bundle->is_bbl_vendor(); return m_print->validate(warning, collison_polygons, height_polygons); }