Fix for SPE-700 (Corrupted slice data)

This commit is contained in:
tamasmeszaros 2018-12-20 15:22:58 +01:00
parent ece3c74380
commit 70bfa4202f
4 changed files with 21 additions and 4 deletions

View File

@ -722,6 +722,10 @@ public:
return m_pad; return m_pad;
} }
void remove_pad() {
m_pad = Pad();
}
const Pad& pad() const { return m_pad; } const Pad& pad() const { return m_pad; }
// WITHOUT THE PAD!!! // WITHOUT THE PAD!!!
@ -1729,6 +1733,11 @@ const TriangleMesh &SLASupportTree::get_pad() const
return m_impl->pad().tmesh; return m_impl->pad().tmesh;
} }
void SLASupportTree::remove_pad()
{
m_impl->remove_pad();
}
SLASupportTree::SLASupportTree(const PointSet &points, SLASupportTree::SLASupportTree(const PointSet &points,
const EigenMesh3D& emesh, const EigenMesh3D& emesh,
const SupportConfig &cfg, const SupportConfig &cfg,

View File

@ -164,6 +164,8 @@ public:
/// Get the pad geometry /// Get the pad geometry
const TriangleMesh& get_pad() const; const TriangleMesh& get_pad() const;
void remove_pad();
}; };
} }

View File

@ -198,7 +198,7 @@ PointSet normals(const PointSet& points, const EigenMesh3D& emesh,
}); });
if(!neighnorms.empty()) { // there were neighbors to count with if(!neighnorms.empty()) { // there were neighbors to count with
// sum up the normals and than normalize the result again. // sum up the normals and then normalize the result again.
// This unification seems to be enough. // This unification seems to be enough.
Vec3d sumnorm(0, 0, 0); Vec3d sumnorm(0, 0, 0);
sumnorm = std::accumulate(neighnorms.begin(), lend, sumnorm); sumnorm = std::accumulate(neighnorms.begin(), lend, sumnorm);

View File

@ -560,9 +560,13 @@ void SLAPrint::process()
// and before the supports had been sliced. (or the slicing has to be // and before the supports had been sliced. (or the slicing has to be
// repeated) // repeated)
if(po.m_config.pad_enable.getBool() && if(!po.m_supportdata || !po.m_supportdata->support_tree_ptr) {
po.m_supportdata && BOOST_LOG_TRIVIAL(warning) << "Uninitialized support data at "
po.m_supportdata->support_tree_ptr) << "pad creation.";
return;
}
if(po.m_config.pad_enable.getBool())
{ {
double wt = po.m_config.pad_wall_thickness.getFloat(); double wt = po.m_config.pad_wall_thickness.getFloat();
double h = po.m_config.pad_wall_height.getFloat(); double h = po.m_config.pad_wall_height.getFloat();
@ -586,6 +590,8 @@ void SLAPrint::process()
pcfg.throw_on_cancel = thrfn; pcfg.throw_on_cancel = thrfn;
po.m_supportdata->support_tree_ptr->add_pad(bp, pcfg); po.m_supportdata->support_tree_ptr->add_pad(bp, pcfg);
} else {
po.m_supportdata->support_tree_ptr->remove_pad();
} }
po.throw_if_canceled(); po.throw_if_canceled();