Я изменил ваш код, чтобы скрипт загружал несколько файлов 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()
По сути, я пропускаю oop через каждое из имен файлов. Для каждого файла есть читатель, картограф и актер. В результате получается список актеров, каждый из которых добавляется в средство визуализации.
Также обратите внимание, что для масштабирования и позиционирования каждой модели STL я делаю это путем вызова SetPosition и SetScale актера STL. В этом случае позиции и шкалы приведены только для иллюстрации. Значения на самом деле ничего не делают. Вы можете применить любое преобразование к vtkActor.