以下是Python代码实现:

import numpy as np
import vtk

# 读取STL文件并去除重复顶点信息
with open('C:\Users\13611\Desktop\人工智能实践4.24\STL-VTK\Bunny_STL.stl', 'r') as f:
    lines = f.readlines()
    vertices = []
    faces = []
    for i in range(1, len(lines)):
        if 'facet normal' in lines[i-1]:
            face = []
        if 'vertex' in lines[i]:
            v = np.array(list(map(float, lines[i].split()[1:]))).reshape(3, 1)
            if v.tolist() not in vertices:
                vertices.append(v.tolist())
            face.append(vertices.index(v.tolist()))
        if 'endfacet' in lines[i]:
            faces.append(face)

# 转换为VTK文件
polydata = vtk.vtkPolyData()
points = vtk.vtkPoints()
for v in vertices:
    points.InsertNextPoint(v[0], v[1], v[2])
polydata.SetPoints(points)
cells = vtk.vtkCellArray()
for f in faces:
    face = vtk.vtkTriangle()
    face.GetPointIds().SetId(0, f[0])
    face.GetPointIds().SetId(1, f[1])
    face.GetPointIds().SetId(2, f[2])
    cells.InsertNextCell(face)
polydata.SetPolys(cells)
writer = vtk.vtkPolyDataWriter()
writer.SetFileName('Bunny_VTK.vtk')
writer.SetInputData(polydata)
writer.Write()

代码解释:

首先,使用with open语句读取STL文件,逐行解析文件内容,提取顶点和面的信息,并去除重复顶点信息。

然后,使用VTK库创建一个vtkPolyData对象,并添加顶点和面的信息,最后将其保存为VTK文件。

注意:需要先安装VTK库,可以使用以下命令安装:

pip install vtk
Python代码实现:读取STL文件,去除重复顶点并转换为VTK文件

原文地址: http://www.cveoy.top/t/topic/nUYc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录