improve mesh repair functions

This commit is contained in:
wmayer
2019-04-12 21:31:46 +02:00
parent 57287e8ca6
commit 746997e484
10 changed files with 312 additions and 30 deletions

View File

@@ -1128,15 +1128,21 @@ void MeshObject::refine()
this->_segments.clear();
}
void MeshObject::removeSmallEdges(float length)
void MeshObject::removeNeedles(float length)
{
unsigned long count = _kernel.CountFacets();
MeshCore::MeshRemoveSmallEdges eval(_kernel, length);
MeshCore::MeshRemoveNeedles eval(_kernel, length);
eval.Fixup();
if (_kernel.CountFacets() < count)
this->_segments.clear();
}
void MeshObject::validateCaps(float fMaxAngle, float fSplitFactor)
{
MeshCore::MeshFixCaps eval(_kernel, fMaxAngle, fSplitFactor);
eval.Fixup();
}
void MeshObject::optimizeTopology(float fMaxAngle)
{
MeshCore::MeshTopoAlgorithm topalg(_kernel);
@@ -1385,6 +1391,15 @@ void MeshObject::removeInvalidPoints()
deletePoints(nan.GetIndices());
}
void MeshObject::mergeFacets()
{
unsigned long count = _kernel.CountFacets();
MeshCore::MeshFixMergeFacets merge(_kernel);
merge.Fixup();
if (_kernel.CountFacets() < count)
this->_segments.clear();
}
void MeshObject::validateIndices()
{
unsigned long count = _kernel.CountFacets();