ClosedSurface
vtk-examples/Python/PolyData/ClosedSurface
Question
If you have a question about this example, please use the VTK Discourse Forum
Code¶
ClosedSurface.py
#!/usr/bin/env python
import vtk
def get_program_parameters():
import argparse
description = 'Read a polydata file of a surface and determine if it is a closed surface.'
epilogue = '''
'''
parser = argparse.ArgumentParser(description=description, epilog=epilogue,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('filename', help='Enter a polydata file e.g cow.g.')
args = parser.parse_args()
return args.filename
def main():
fn = get_program_parameters()
polyData = ReadPolyData(fn)
featureEdges = vtk.vtkFeatureEdges()
featureEdges.FeatureEdgesOff()
featureEdges.BoundaryEdgesOn()
featureEdges.NonManifoldEdgesOn()
featureEdges.SetInputData(polyData)
featureEdges.Update()
numberOfOpenEdges = featureEdges.GetOutput().GetNumberOfCells()
if numberOfOpenEdges > 0:
print(fn, ': Surface is not closed')
else:
print(fn, ': Surface is closed')
def ReadPolyData(file_name):
import os
path, extension = os.path.splitext(file_name)
extension = extension.lower()
if extension == '.ply':
reader = vtk.vtkPLYReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == '.vtp':
reader = vtk.vtkXMLPolyDataReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == '.obj':
reader = vtk.vtkOBJReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == '.stl':
reader = vtk.vtkSTLReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == '.vtk':
reader = vtk.vtkPolyDataReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == '.g':
reader = vtk.vtkBYUReader()
reader.SetGeometryFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
else:
# Return a None if the extension is unknown.
poly_data = None
return poly_data
if __name__ == '__main__':
main()