Fix organic support being printed into object top surfaces (#15539)

This commit is contained in:
Kiss Lorand
2026-09-05 17:48:35 +03:00
committed by GitHub
parent 134b9ad96e
commit 0224741105

View File

@@ -1654,6 +1654,9 @@ void generate_support_toolpaths(
if (top_contact_layer.could_merge(interface_layer) && ! raft_layer) if (top_contact_layer.could_merge(interface_layer) && ! raft_layer)
top_contact_layer.merge(std::move(interface_layer)); top_contact_layer.merge(std::move(interface_layer));
} }
// Orca: Organic bottom contacts are projection seeds, not same-layer toolpaths.
// Do not merge them into another same-layer support region.
if (!organic_tree) {
if (!bottom_interfaces && support_params.can_merge_support_regions) { if (!bottom_interfaces && support_params.can_merge_support_regions) {
if (base_layer.could_merge(bottom_contact_layer)) if (base_layer.could_merge(bottom_contact_layer))
base_layer.merge(std::move(bottom_contact_layer)); base_layer.merge(std::move(bottom_contact_layer));
@@ -1669,7 +1672,7 @@ void generate_support_toolpaths(
bottom_contact_layer.set_polygons_to_extrude( bottom_contact_layer.set_polygons_to_extrude(
diff(bottom_contact_layer.polygons_to_extrude(), top_contact_layer.polygons_to_extrude())); diff(bottom_contact_layer.polygons_to_extrude(), top_contact_layer.polygons_to_extrude()));
} }
} else if (bottom_contact_layer.could_merge(interface_layer) && ! organic_tree) { } else if (bottom_contact_layer.could_merge(interface_layer)) {
const bool interface_layer_is_bottom = interface_layer.layer->layer_type == SupporLayerType::BottomInterface; const bool interface_layer_is_bottom = interface_layer.layer->layer_type == SupporLayerType::BottomInterface;
if (bottom_interfaces && interface_layer_is_bottom) { if (bottom_interfaces && interface_layer_is_bottom) {
bottom_contact_layer.merge(std::move(interface_layer)); bottom_contact_layer.merge(std::move(interface_layer));
@@ -1678,6 +1681,7 @@ void generate_support_toolpaths(
diff(bottom_contact_layer.polygons_to_extrude(), interface_layer.polygons_to_extrude())); diff(bottom_contact_layer.polygons_to_extrude(), interface_layer.polygons_to_extrude()));
} }
} }
}
// Orca: For organic trees the support-material regions are generated from // Orca: For organic trees the support-material regions are generated from
// expanded wall polygons. With zero top Z gap and separate interface material, // expanded wall polygons. With zero top Z gap and separate interface material,