我找到了读取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()
基本上,我遍历每个文件名。每个文件都有一个阅读器,映射器和参与者。结果是一个actor列表,每个actor都添加到了渲染器中。
还要注意,要缩放和定位每个STL模型,我可以通过调用STL参与者的SetPosition和SetScale来实现。在这种情况下,位置和比例仅用于说明。这些值实际上并没有做任何事情。您可以将任何转换应用于vtkActor。