我正在尝试为Paraview编写一个Python脚本,它将创建一个包含多个视图的.png或.pdf屏幕截图文件。这里强调的是MULTIPLE VIEWS部分。为了清楚起见,我的Paraview显示中有三个不同的窗口:一个显示在XZ平面中查看的模型,一个显示在XY平面中,一个显示在YZ平面中。我正在尝试使用python脚本创建一个显示所有这三个视图的文件。这可以通过单击File->Save Screenshot
手动完成,然后取消选中Save only selected view
按钮。我需要这样做几百次,所以很清楚脚本是要走的路。
我尝试使用“开始跟踪”选项来查看此操作的工作原理,但它生成的代码似乎不完整:
try: paraview.simple
except: from paraview.simple import *
paraview.simple._DisableFirstRenderCameraReset()
RenderView1 = GetRenderView()
RenderView2 = GetRenderViews()[1]
RenderView3 = GetRenderViews()[2]
WriteImage(r'E:\TestFolder\TestFile_00.png', view=RenderView1)
WriteImage(r'E:\TestFolder\TestFile_01.png', view=RenderView2)
WriteImage(r'E:\TestFolder\TestFile_02.png', view=RenderView3)
Render()
当我运行与此类似的东西时,它只生成三个单独的.png文件,每个视图一个。也许这些是Paraview组合制作成品的临时文件,但我不知道如何组合它们。
有没有人有这个问题的经验?我已经浏览了互联网和Paraview文档,但我能找到的唯一例子只有一个视图。任何帮助将不胜感激。
我在Windows XP上使用32位Paraview 3.12.0
答案 0 :(得分:3)
从ParaView 4.2开始,这将直接支持如下:
# Get the layout/tab for the active view.
aLayout = GetLayout()
SaveScreenshot("AllViewsImage.png", layout=aLayout)
您还可以使用工具 | 启动跟踪并尝试保存屏幕截图以获取要使用的命令。
答案 1 :(得分:2)
我有同样的问题。解决方法是使用convert命令。以下是示例脚本:
for i in range(len(GetRenderViews())) :
RenderView = GetRenderViews()[i]
WriteImage("tmp_"+str(i)+".png",view=RenderView)
commands.getoutput("convert -border 1x1 -append tmp_*.png tmp.png")
我希望这会有所帮助。