ENH: support delete any filament id

Change-Id: I71bcd54985b3f9e19a19d04327d00b402ec22380
(cherry picked from commit f3d67a98ac770e6f045a76bed4531139763b33cf)
This commit is contained in:
zhimin.zeng
2024-06-20 13:09:51 +08:00
committed by Noisyfox
parent 84dc2d8835
commit fe09c20725
13 changed files with 287 additions and 43 deletions

View File

@@ -2481,6 +2481,17 @@ void ModelVolume::update_extruder_count(size_t extruder_count)
}
}
void ModelVolume::update_extruder_count_when_delete_filament(size_t extruder_count, size_t filament_id)
{
std::vector<int> used_extruders = get_extruders();
for (int extruder_id : used_extruders) {
if (extruder_id == filament_id) {
mmu_segmentation_facets.set_enforcer_block_type_limit(*this, (EnforcerBlockerType)(extruder_count + 1), (EnforcerBlockerType) filament_id);
break;
}
}
}
void ModelVolume::center_geometry_after_creation(bool update_source_offset)
{
Vec3d shift = this->mesh().bounding_box().center();
@@ -3375,10 +3386,10 @@ void FacetsAnnotation::get_facets(const ModelVolume& mv, std::vector<indexed_tri
selector.get_facets(facets_per_type);
}
void FacetsAnnotation::set_enforcer_block_type_limit(const ModelVolume& mv, EnforcerBlockerType max_type)
void FacetsAnnotation::set_enforcer_block_type_limit(const ModelVolume &mv, EnforcerBlockerType max_type, EnforcerBlockerType to_delete_filament)
{
TriangleSelector selector(mv.mesh());
selector.deserialize(m_data, false, max_type);
selector.deserialize(m_data, false, max_type, to_delete_filament);
this->set(selector);
}