ClosedSurface 检测模型是否水密
2026/5/26 13:36:36 网站建设 项目流程

一:主要的知识点

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()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询