在python中加载并调整多个STL文件的大小



我找到了读取STL文件的代码,但我不知道如何在一个窗口中读取多个STL文件并调整它们的大小。

import vtk
filename = "Stl file"

reader = vtk.vtkSTLReader()
reader.SetFileName(filename)
mapper = vtk.vtkPolyDataMapper()
if vtk.VTK_MAJOR_VERSION <= 5:
mapper.SetInput(reader.GetOutput())
else:
mapper.SetInputConnection(reader.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)

iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren.AddActor(actor)
iren.Initialize()
renWin.Render()
iren.Start()

我想把这两个stl文件放在一个窗口中

我修改了您的代码,使脚本加载多个STL文件。我使用sys.argv[]从命令行获取它们

import sys
import vtk
filenames = sys.argv[1:]
print(filenames)
actors = []
for name in filenames:
reader = vtk.vtkSTLReader()
reader.SetFileName(name)
mapper = vtk.vtkPolyDataMapper()
if vtk.VTK_MAJOR_VERSION <= 5:
mapper.SetInput(reader.GetOutput())
else:
mapper.SetInputConnection(reader.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.SetPosition([0.0, 0.0, 0.0])
actor.SetScale([1.0, 1.0, 1.0])
actors.append(actor)
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
for actor in actors:
ren.AddActor(actor)
iren.Initialize()
renWin.Render()
iren.Start()

基本上,我循环浏览每个文件名。每个文件都有一个读取器、映射器和参与者。结果是一个参与者列表,每个参与者都被添加到渲染器中。

还要注意,为了缩放和定位每个STL模型,我通过调用STL的actor的SetPosition和SetScale来实现这一点。在这种情况下,位置和比例仅用于说明。价值观并没有真正起到任何作用。您可以对vtkActor应用任何转换。

最新更新