分類: 程式設計

ParaView 錄製 Python 指令稿,自動控制 ParaView 執行各種工作教學

這裡示範如何使用 ParaView 的 Trace 功能錄製 Python 指令稿,自動控制 ParaView 執行各種工作。

ParaView 本身就有支援 Python 語言的指令操作介面,在 GUI 視窗介面上的每一項操作都可以使用 Python 指令的方式達成,對於有自動化需求的人,就可以使用 Python 來撰寫指令稿控制 ParaView 處理各項繪圖工作。


然而 ParaView 的 Python API 非常多,對於剛入門的初學者來說不太好學,最快速的學習方式就是使用 ParaView 的 Trace 功能,將視窗介面中的每個互動式操作錄製下來,自動產生一份完整的 Python 指令稿,再從這個指令稿去修改,這樣就可以非常快速的解決一般性的自動化問題,減少自行撰寫程式的時間。

以下是在 ParaView 中用 Trace 功能錄製 Python 指令稿的步驟教學。
Step 1
在 ParaView 的主選單中,選擇「Tools」底下的「Start Trace」。

選擇「Start Trace」

Step 2
設定一些錄製選項,若要讓 ParaView 錄製比較細部的動作就可以在這裡調整,一般來說用預設值即可。

Trace Options

點選「OK」之後,ParaView 就會開始把接下來所有的操作錄製起來。

Step 3
在 ParaView 的 GUI 視窗介面中,將未來要讓 ParaView 自動化處理的工作,以手動的方式操作一次,讓 ParaView 錄製起來。

ParaView GUI 介面

這裡我是將範例資料的 headsq.vti 檔打開,然後套用一個 isosurface,並將顏色調成紅色。

Step 4
操作完所有的動作之後,再選擇「Tools」的「Stop Trace」,讓 ParaView 終止錄製指令稿。

選擇「Stop Trace」

Step 5
錄製完成之後,就會產生類似這樣的 Python 指令稿,這些就是剛剛所有的操作所對應的 Python 指令,以這份基本的指令稿為基礎,要開發自己的自動化程式就比較輕鬆了。

Python 指令稿

Step 6
撰寫好的 Python 指令稿,可以透過 ParaView 的 Python Shell 來執行,請選擇「Tools」的「Python Shell」。

選擇「Python Shell」

Step 7
在 ParaView 的 Python Shell 中,我們可以將寫好的 Python 指令用複製貼上的方式貼過來執行,或是將指令稿存檔後,用這裡的「Run Script」來執行也可以。

Python Shell

Step 8
另外一種執行 ParaView Python 指令稿的方式是在 ParaView 之外,直接使用 ParaView 所附帶的 pvpython 來執行 Python 指令稿:

pvpython myscript.py

如果想要使用 Python 指令稿開啟互動式的 ParaView 視窗,讓使用者可以進行轉動、放大等操作,則要自己在 Python 指令稿結尾處加上一行開啟互動式視窗的 Interact 指令

# 開啟互動式 ParaView 視窗
paraview.simple.Interact(view=None)

pvpython 來開啟 ParaView 的互動式視窗會類似這樣:

Python 指令稿執行結果

如果想要在 ParaView 應用程式啟動時,自動執行 Python 指令稿,可以使用 --script 參數,另外若要自動連上指定的 ParaView 伺服器,則可配合 --server 參數。例如:

paraview --server=my_server --script=myscript.py

--server 參數在使用前,要先在 ParaView 中編輯伺服器的設定,然後才能在這邊以伺服器的名稱(這個名稱是自己指定的)來指定伺服器。

參考資料:ParaView/Python 官方參考手冊ParaView Guide 官方手冊

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang
標籤: ParaViewPython

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

2 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

3 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

3 年 ago