vtkFillHolesFilter does not close all the surfaces
I am learning vtk for python now, I am trying to convert .obj to .stl file. During the conversion, I wanna close all the open surfaces before start slicing the object for 3D printer. I used the vtkFillHolesFilter(), however it does not close all the surfaces. Here are the screenshots:
From the 2nd image, as you can see from the screenshot, only the bottom part is covered up, the side is still open.
Any suggestion?
Here is my code:
reader = vtk.vtkOBJReader()
reader.SetFileName('data/3D_data/demoparts/notScaledStuff.obj')
reader.Update()
srcPolyData = reader.GetOutput()
featureEdges = vtk.vtkFeatureEdges()
featureEdges.FeatureEdgesOn()
featureEdges.BoundaryEdgesOn()
featureEdges.NonManifoldEdgesOn()
featureEdges.SetInputData(srcPolyData)
featureEdges.Update()
numberOfOpenEdges = featureEdges.GetOutput().GetNumberOfCells()
if numberOfOpenEdges > 0:
print('Number of open edges:', numberOfOpenEdges)
else:
print('All edges are closed')
triangleTrans = vtk.vtkTriangleFilter()
triangleTrans.SetInputData(srcPolyData)
triangleTrans.PassVertsOff()
triangleTrans.PassLinesOn()
triangleTrans.Update()
fill = vtk.vtkFillHolesFilter()
fill.SetInputData(triangleTrans.GetOutput())
fill.SetHoleSize(1000000000)
fill.Update()
writer = vtk.vtkSTLWriter()
writer.SetFileTypeToBinary()
writer.SetInputConnection(fill.GetOutputPort())
writer.SetFileName('data/3D_data/demoparts/notScaledStuff.stl')
writer.Update()
writer.Write()
Edited by Ben Boeckel