ENH: add paint-on support on vertical faces

Add paint-on support on vertical faces of slender rods

ENH STUDIO-970/1285
FIX STUDIO-1183

Change-Id: I36b398f9c1c1341bce080ec3d454dcc6e6f991e8
(cherry picked from commit 65ee2c8d74284b21bfd34a1059e2005998d749c5)
This commit is contained in:
MusangKing 2022-11-17 22:55:17 +08:00 committed by Lane.Wei
parent e61e6c3c95
commit aa0dbac351
3 changed files with 30 additions and 7 deletions

View file

@ -2798,6 +2798,10 @@ static void project_triangles_to_slabs(ConstLayerPtrsAdaptor layers, const index
void PrintObject::project_and_append_custom_facets(
bool seam, EnforcerBlockerType type, std::vector<Polygons>& out) const
{
// BBS: Approve adding enforcer support on vertical faces
SlabSlicingConfig config;
config.isVertical = true;
for (const ModelVolume* mv : this->model_object()->volumes)
if (mv->is_model_part()) {
const indexed_triangle_set custom_facets = seam
@ -2811,7 +2815,7 @@ void PrintObject::project_and_append_custom_facets(
else {
std::vector<Polygons> projected;
// Support blockers or enforcers. Project downward facing painted areas upwards to their respective slicing plane.
slice_mesh_slabs(custom_facets, zs_from_layers(this->layers()), this->trafo_centered() * mv->get_matrix(), nullptr, &projected, [](){});
slice_mesh_slabs(custom_facets, zs_from_layers(this->layers()), this->trafo_centered() * mv->get_matrix(), nullptr, &projected, [](){}, config);
// Merge these projections with the output, layer by layer.
assert(! projected.empty());
assert(out.empty() || out.size() == projected.size());