Fix floating brim (#9393)

* FIX: brim should be extruded only on first layer

github: github.com/bambulab/BambuStudio/issues/4678

Change-Id: Ib00795dfba2e6d869c30ac906385f170088bbfd6
(cherry picked from commit b51ff1721ddc2080c4f7e487f67c4f1a722bf091)

* Fix compile
This commit is contained in:
Noisyfox 2025-05-05 11:27:42 +08:00 committed by GitHub
parent 0dd356a3a7
commit be2d193117
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -4337,6 +4337,7 @@ LayerResult GCode::process_layer(
for (ObjectByExtruder::Island &island : instance_to_print.object_by_extruder.islands) { for (ObjectByExtruder::Island &island : instance_to_print.object_by_extruder.islands) {
const auto& by_region_specific = is_anything_overridden ? island.by_region_per_copy(by_region_per_copy_cache, static_cast<unsigned int>(instance_to_print.instance_id), extruder_id, print_wipe_extrusions != 0) : island.by_region; const auto& by_region_specific = is_anything_overridden ? island.by_region_per_copy(by_region_per_copy_cache, static_cast<unsigned int>(instance_to_print.instance_id), extruder_id, print_wipe_extrusions != 0) : island.by_region;
//BBS: add brim by obj by extruder //BBS: add brim by obj by extruder
if (first_layer) {
if (this->m_objsWithBrim.find(instance_to_print.print_object.id()) != this->m_objsWithBrim.end() && !print_wipe_extrusions) { if (this->m_objsWithBrim.find(instance_to_print.print_object.id()) != this->m_objsWithBrim.end() && !print_wipe_extrusions) {
this->set_origin(0., 0.); this->set_origin(0., 0.);
m_avoid_crossing_perimeters.use_external_mp(); m_avoid_crossing_perimeters.use_external_mp();
@ -4348,6 +4349,7 @@ LayerResult GCode::process_layer(
m_avoid_crossing_perimeters.disable_once(); m_avoid_crossing_perimeters.disable_once();
this->m_objsWithBrim.erase(instance_to_print.print_object.id()); this->m_objsWithBrim.erase(instance_to_print.print_object.id());
} }
}
// When starting a new object, use the external motion planner for the first travel move. // When starting a new object, use the external motion planner for the first travel move.
const Point& offset = instance_to_print.print_object.instances()[instance_to_print.instance_id].shift; const Point& offset = instance_to_print.print_object.instances()[instance_to_print.instance_id].shift;
std::pair<const PrintObject*, Point> this_object_copy(&instance_to_print.print_object, offset); std::pair<const PrintObject*, Point> this_object_copy(&instance_to_print.print_object, offset);