从Python脚本创建多视角Paraview截图

2 投票
2 回答
3760 浏览
提问于 2025-04-17 07:05

我正在尝试为Paraview写一个Python脚本,目的是创建一个包含多个视图的.png或.pdf截图文件。这里的重点是“多个视图”。具体来说,我在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上的Paraview 3.12.0 32位版本。

2 个回答

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")

希望这能帮到你。

4

从ParaView 4.2版本开始,这个功能将直接支持,具体如下:

# Get the layout/tab for the active view.
aLayout = GetLayout()
SaveScreenshot("AllViewsImage.png", layout=aLayout)

你还可以使用工具 | 开始记录,然后尝试保存截图,这样可以获取使用的命令。

撰写回答