1

私は現在、シミュレーションの各時間ステップの .vtp ファイルを ParaView で正しく視覚化し、それぞれのスクリーンショットを印刷することができます。それをバッチで行いたいのですが、それぞれの状態 (視点、適用されたフィルターなど) を同じ状態に保ちたいと考えています。私はすでに状態を .psvm ファイルに保存しており、pvbatch によって実行された後に (できれば) スクリーンショットを印刷する Python スクリプトを作成しようとしました。しかし、残念ながら、それは機能していません。状態ファイルを処理し、検索と置換を行って状態のファイル名を変更しようとしましたが、それでも機能しません。たとえば、現在のファイルが異なっていても、最初のデータ入力のみをプロットし続けます (ただし、GetSources() は常に増加するソースのリストを示します)。Snow Leopard で ParaView 3.14.0 を使用しています。これは簡単だと思いますが、しかし、この特定の問題に言及していないpythonとparaviewに関する大量の情報に圧倒されています。どうぞ、どうぞ、どんなアドバイスも大歓迎です。これが以前に回答されていた場合は申し訳ありません(Google、paraviewメーリングリスト、およびこちらを見ました)。以下は私のスクリプトです。http://pastebin.com/4xiLNrS0 . さらに、いくつかのサンプル ファイルと状態をhttp://goo.gl/XjPpEで見つけることができます。

#!/bin/python
import glob, string, os, commands
from paraview.simple import *

#help(servermanager)
# vtp files are inside the local subdir DISPLAY
files = (commands.getoutput("ls DISPLAY/data-*.vtp | grep -v contacts")).split()

# process each file
for filename in files:
    fullfn = commands.getoutput("ls $PWD/" + filename)
    fn = filename.replace('DISPLAY/', '')
    #os.system("cp ../dem_git/addons/paraview_state.pvsm tmp.pvsm")
    os.system("cp ~/Desktop/state.pvsm tmp.pvsm")
    os.system("sed -i.bck 's/DATA.vtp/" + fullfn.replace('/','\/') + "/1' tmp.pvsm") # replace first intance with full path
    os.system("sed -i.bck 's/DATA.vtp/" + fullfn.replace('/','\/') + "/1' tmp.pvsm") # replace second intance with full path
    os.system("sed -i.bck 's/DATA.vtp/" + fn + "/1' tmp.pvsm") # replace third with just the filename path
    servermanager.LoadState("tmp.pvsm")
    pm = servermanager.ProxyManager()
    reader = pm.GetProxy('sources', fullfn)
    reader.FileName = fullfn
    reader.FileNameChanged()
    reader.UpdatePipeline()

    view = servermanager.GetRenderView()
    SetActiveView(view)
    view.StillRender()

    WriteImage(filename.replace(".vtp", ".png"))
    os.system("rm -f tmp.pvsm")
    os.system("rm -f tmp.pvsm.bck")

    Delete(reader)
4

1 に答える 1

0

これは古い質問だと思いますが、最近まったく同じ問題があり、答えも見つかりませんでした。スクリプトを機能させるには、 Delete(view)afterを追加するだけです。Delete(reader)

于 2015-01-09T11:35:49.147 に答える