如何在 python 中将 vtk 转换为 stl?
How to convert vtk to stl in python?
我有大约 500 个 vtk 文件需要转换为 stl 文件。我通常使用 Paraview 手动转换它们,但这需要很长时间。请问Python有没有把vtk文件转成stl文件的工具?我附上了我的 VTK 文件的屏幕截图。
提前致谢。
My VTK file
像下面这样的东西怎么样?将代码保存为 file_converter.py
和 运行 带有参数的脚本:
python file_converter.py -h
python file_converter.py <path-to-input-dir> -o <path-to-output-dir>
这里是转换器的代码。
#!/usr/bin/env python
import os
import vtk
import argparse
def convertFile(filepath, outdir):
if not os.path.isdir(outdir):
os.makedirs(outdir)
if os.path.isfile(filepath):
basename = os.path.basename(filepath)
print("Copying file:", basename)
basename = os.path.splitext(basename)[0]
outfile = os.path.join(outdir, basename+".stl")
reader = vtk.vtkGenericDataObjectReader()
reader.SetFileName(filepath)
reader.Update()
writer = vtk.vtkSTLWriter()
writer.SetInputConnection(reader.GetOutputPort())
writer.SetFileName(outfile)
return writer.Write()==1
return False
def convertFiles(indir, outdir):
files = os.listdir(indir)
files = [ os.path.join(indir,f) for f in files if f.endswith('.vtk') ]
ret = 0
print("In:", indir)
print("Out:", outdir)
for f in files:
ret += convertFile(f, outdir)
print("Successfully converted %d out of %d files." % (ret, len(files)))
def run(args):
convertFiles(args.indir, args.outdir)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="VTK to STL converter")
parser.add_argument('indir', help="Path to input directory.")
parser.add_argument('--outdir', '-o', default='output', help="Path to output directory.")
parser.set_defaults(func=run)
args = parser.parse_args()
ret = args.func(args)
我有大约 500 个 vtk 文件需要转换为 stl 文件。我通常使用 Paraview 手动转换它们,但这需要很长时间。请问Python有没有把vtk文件转成stl文件的工具?我附上了我的 VTK 文件的屏幕截图。
提前致谢。
My VTK file
像下面这样的东西怎么样?将代码保存为 file_converter.py
和 运行 带有参数的脚本:
python file_converter.py -h
python file_converter.py <path-to-input-dir> -o <path-to-output-dir>
这里是转换器的代码。
#!/usr/bin/env python
import os
import vtk
import argparse
def convertFile(filepath, outdir):
if not os.path.isdir(outdir):
os.makedirs(outdir)
if os.path.isfile(filepath):
basename = os.path.basename(filepath)
print("Copying file:", basename)
basename = os.path.splitext(basename)[0]
outfile = os.path.join(outdir, basename+".stl")
reader = vtk.vtkGenericDataObjectReader()
reader.SetFileName(filepath)
reader.Update()
writer = vtk.vtkSTLWriter()
writer.SetInputConnection(reader.GetOutputPort())
writer.SetFileName(outfile)
return writer.Write()==1
return False
def convertFiles(indir, outdir):
files = os.listdir(indir)
files = [ os.path.join(indir,f) for f in files if f.endswith('.vtk') ]
ret = 0
print("In:", indir)
print("Out:", outdir)
for f in files:
ret += convertFile(f, outdir)
print("Successfully converted %d out of %d files." % (ret, len(files)))
def run(args):
convertFiles(args.indir, args.outdir)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="VTK to STL converter")
parser.add_argument('indir', help="Path to input directory.")
parser.add_argument('--outdir', '-o', default='output', help="Path to output directory.")
parser.set_defaults(func=run)
args = parser.parse_args()
ret = args.func(args)