一:主要的知识点
1、说明
本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客
2、知识点纪要
本段代码主要涉及的有①如何判定模型是否为封闭模型
二:代码及注释
import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkIOGeometry import vtkSTLReader, vtkOBJReader, vtkBYUReader from vtkmodules.vtkFiltersCore import vtkFeatureEdges from vtkmodules.vtkIOLegacy import vtkPolyDataReader from vtkmodules.vtkIOPLY import vtkPLYReader from vtkmodules.vtkIOXML import vtkXMLPolyDataReader import os def ReadPolyData(file_name): path, extension = os.path.splitext(file_name) extension = extension.lower() if extension == '.ply': reader = vtkPLYReader() reader.SetFileName(file_name) reader.Update() poly_data = reader.GetOutput() elif extension == '.vtp': reader = vtkXMLPolyDataReader() reader.SetFileName(file_name) reader.Update() poly_data = reader.GetOutput() elif extension == '.obj': reader = vtkOBJReader() reader.SetFileName(file_name) reader.Update() poly_data = reader.GetOutput() elif extension == '.stl': reader = vtkSTLReader() reader.SetFileName(file_name) reader.Update() poly_data = reader.GetOutput() elif extension == '.vtk': reader = vtkPolyDataReader() reader.SetFileName(file_name) reader.Update() poly_data = reader.GetOutput() elif extension == '.g': reader = 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 def main(): fn = "xx.stl" polyData = ReadPolyData(fn) featureEdges = vtkFeatureEdges() featureEdges.SetInputData(polyData) featureEdges.BoundaryEdgesOn() featureEdges.NonManifoldEdgesOn() featureEdges.Update() numberOfEdeges = featureEdges.GetOutput().GetNumberOfCells() if numberOfEdeges > 0: print("Surface is not closed") else: print("Surface is closed") if __name__ == '__main__': main()