mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-08 08:11:14 +00:00
Belt brim: adding or removing an object rebuilds the other objects' brims
A belt brim is clipped against the other objects on the plate and is built with its object's support step. When an object was added or deleted only the print-level skirt/brim and export steps were invalidated, so the remaining objects kept brims clipped against objects that were no longer there, or overlapping ones that had arrived. Invalidate posSupportMaterial on every object in that case on a belt printer. Also reword the comments that still described the global Z offset as a minimum across all objects. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
9289fc4dd3
commit
d5cfaae5dd
@@ -1916,6 +1916,12 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_
|
||||
}
|
||||
if (new_objects || deleted_objects)
|
||||
update_apply_status(this->invalidate_steps({ psSkirtBrim, psWipeTower, psGCodeExport }));
|
||||
// A belt brim is clipped against the other objects on the plate (BeltBrim.cpp,
|
||||
// belt_brim_obstacles), and it is rebuilt with its object's support step: an
|
||||
// object that arrived or left changes every other object's brim.
|
||||
if ((new_objects || deleted_objects) && m_config.belt_printer.value)
|
||||
for (PrintObject *object : m_objects)
|
||||
update_apply_status(object->invalidate_step(posSupportMaterial));
|
||||
if (new_objects)
|
||||
update_apply_status(false);
|
||||
print_regions_reshuffled = true;
|
||||
@@ -1930,9 +1936,9 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_
|
||||
}
|
||||
}
|
||||
|
||||
// Belt printer global mode: when any object's instances shifted,
|
||||
// recompute m_belt_global_z_offset for ALL objects (it depends on
|
||||
// min_shift across all objects, so one move affects everyone).
|
||||
// Belt printer: when any object's instances shifted, re-slice every object.
|
||||
// The global Z offset follows each object's position along the belt, and the
|
||||
// belt brims are clipped against the other objects.
|
||||
if (belt_instances_shifted && m_config.belt_printer.value) {
|
||||
for (PrintObject *object : m_objects)
|
||||
update_apply_status(object->invalidate_step(posSlice));
|
||||
|
||||
Reference in New Issue
Block a user