Fixed volume transformations in SLA:
Volume transformations were ignored in SLA mode. This did not matter for plain STLs and PS own 3MF, because in those cases, the volume trafo was identity. Importing a 3rd party 3MF leads to issues with support/holes placement and generation. Fixes #6100 and #6744.
This commit is contained in:
parent
fec5d92bc8
commit
6b25a9c836
4 changed files with 68 additions and 31 deletions
|
@ -1167,7 +1167,9 @@ sla::SupportPoints SLAPrintObject::transformed_support_points() const
|
|||
{
|
||||
assert(m_model_object != nullptr);
|
||||
auto spts = m_model_object->sla_support_points;
|
||||
auto tr = trafo().cast<float>();
|
||||
|
||||
auto tr = (trafo() * m_model_object->volumes.front()->get_transformation().get_matrix()).cast<float>();
|
||||
|
||||
for (sla::SupportPoint& suppt : spts) {
|
||||
suppt.pos = tr * suppt.pos;
|
||||
}
|
||||
|
@ -1179,8 +1181,8 @@ sla::DrainHoles SLAPrintObject::transformed_drainhole_points() const
|
|||
{
|
||||
assert(m_model_object != nullptr);
|
||||
auto pts = m_model_object->sla_drain_holes;
|
||||
auto tr = trafo().cast<float>();
|
||||
auto sc = m_model_object->instances.front()->get_scaling_factor().cast<float>();
|
||||
Transform3f tr = (trafo() * m_model_object->volumes.front()->get_matrix()).cast<float>();
|
||||
Vec3f sc = Geometry::Transformation(tr.cast<double>()).get_scaling_factor().cast<float>();
|
||||
for (sla::DrainHole &hl : pts) {
|
||||
hl.pos = tr * hl.pos;
|
||||
hl.normal = tr * hl.normal - tr.translation();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue