SeamPLacer: for extrusion loops, check all paths for ExternalPerimeter role

small parameter tuning
This commit is contained in:
PavelMikus 2022-06-16 10:12:44 +02:00
parent f34c1f14da
commit e70aea8b30
2 changed files with 13 additions and 4 deletions

View file

@ -411,8 +411,17 @@ Polygons extract_perimeter_polygons(const Layer *layer, const SeamPosition confi
for (const ExtrusionEntity *ex_entity : layer_region->perimeters.entities) {
if (ex_entity->is_collection()) { //collection of inner, outer, and overhang perimeters
for (const ExtrusionEntity *perimeter : static_cast<const ExtrusionEntityCollection*>(ex_entity)->entities) {
if (perimeter->role() == ExtrusionRole::erExternalPerimeter
|| (perimeter->role() == ExtrusionRole::erPerimeter
ExtrusionRole role = perimeter->role();
if (perimeter->is_loop()){
for (const ExtrusionPath& path : static_cast<const ExtrusionLoop*>(perimeter)->paths){
if (path.role() == ExtrusionRole::erExternalPerimeter){
role = ExtrusionRole::erExternalPerimeter;
}
}
}
if (role == ExtrusionRole::erExternalPerimeter
|| (is_perimeter(role)
&& configured_seam_preference == spRandom)) { //for random seam alignment, extract all perimeters
Points p;
perimeter->collect_points(p);