2011-11-26 129 views
1

我正在嘗試爲Paraview編寫一個Python腳本,該腳本將創建一個帶有多個視圖的.png或.pdf屏幕截圖文件。這裏強調的是多視圖部分。清楚的是,我的Paraview顯示屏有三個不同的窗口:一個顯示在XZ平面上查看的模型,一個在XY平面上,另一個顯示在YZ平面上。我正在嘗試使用python腳本創建一個顯示所有這三個視圖的文件。這可以通過點擊File->Save Screenshot,然後取消選中Save only selected view按鈕來手動完成。我需要這樣做幾百次,所以一個腳本是一個很好的選擇。從Python腳本創建多視圖Paraview屏幕截圖

我已經使用了「啓動跟蹤」選項,看到這樣的操作是如何工作的嘗試,但它產生的代碼似乎不完整:

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

我有同樣的問題。解決方法是使用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") 

我希望這會有所幫助。

3

與paraview包4.2開始,這將直接支持如下:

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

您還可以使用工具 | 開始跟蹤並嘗試保存屏幕截圖以獲取要使用的命令。

+0

您需要在調用GetLayout之前設置活動視圖... – Woltan