Загрузка и изменение размера нескольких файлов STL в python - PullRequest
0 голосов
/ 23 апреля 2020

Я нашел код для чтения 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()

Image2 Image1

Я хочу, чтобы эти два файла stl были в одном окне

1 Ответ

0 голосов
/ 23 апреля 2020

Я изменил ваш код, чтобы скрипт загружал несколько файлов 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.

...