在 python 中加载多个 STL 文件并调整其大小
Load and resize multiple STL files in python
我找到了读取一个 STL 文件的代码,但我不知道如何在一个文件中读取多个 STL 文件 window 并调整它们的大小。
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 文件合二为一 window
我修改了您的代码,使脚本可以加载多个 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()
基本上我遍历每个文件名。对于每个文件,都有一个 reader、映射器和演员。结果是一个演员列表,每个演员都被添加到渲染器中。
另请注意,为了缩放和定位每个 STL 模型,我通过调用 STL 角色的 SetPosition 和 SetScale 来实现。在这种情况下,位置和比例只是为了说明。这些值实际上并没有做任何事情。您可以对 vtkActor 应用任何转换。
我找到了读取一个 STL 文件的代码,但我不知道如何在一个文件中读取多个 STL 文件 window 并调整它们的大小。
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 文件合二为一 window
我修改了您的代码,使脚本可以加载多个 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()
基本上我遍历每个文件名。对于每个文件,都有一个 reader、映射器和演员。结果是一个演员列表,每个演员都被添加到渲染器中。
另请注意,为了缩放和定位每个 STL 模型,我通过调用 STL 角色的 SetPosition 和 SetScale 来实现。在这种情况下,位置和比例只是为了说明。这些值实际上并没有做任何事情。您可以对 vtkActor 应用任何转换。