Fix Z contouring failing on objects with several instances (#16461)

* Let Z contouring slice objects that have several instances

The contouring step refused any object with more than one instance. The
instances of a PrintObject differ only by their XY shift, so the mesh is now
placed with the first instance of the PrintObject being contoured.

* Say in the Z contouring comment how instances map to print objects

* Check that Z contouring follows each instance as it is turned
This commit is contained in:
Arthur Porto
2026-10-15 07:30:57 -03:00
committed by GitHub
parent 7599868797
commit 6aa613ccf0
2 changed files with 129 additions and 5 deletions
+4 -5
View File
@@ -858,11 +858,10 @@ void PrintObject::contour_z()
BOOST_LOG_TRIVIAL(debug) << "Contouring in parallel - start";
TriangleMesh mesh = this->m_model_object->raw_mesh();
if (m_model_object->instances.size() != 1) {
throw RuntimeError("ContourZ: unexpected number of instances");
}
ModelInstance *inst = m_model_object->instances.front();
// A PrintObject groups the instances that share their whole transformation but the XY shift: an
// instance rotated, scaled or mirrored differently is a PrintObject of its own. So the first
// instance stands for all of them.
const ModelInstance *inst = m_instances.front().model_instance;
Point center_offset = this->center_offset();
Geometry::Transformation trans = inst->get_transformation();