#はじめに
汎用流体解析ソフト「F〇uent」には画面の中央下辺りにスケールバーがあり,メッシュやジオメトリの大まかなサイズを計測することができます.
今回は,vtk上でこのスケールバーを再現したいと思います.
以前に投稿した内容 ↓ をさらに拡張していきます.
PyQt5とvtkを使ってOpenFOAMの結果を可視化してみた その2(「ファイルを開く」の実装編)
#環境
OS: windows10
OpenFOAM v4.0
python 3.6.4
pyqt5-5.9.2
vtk-8.0.0
numpy
#ファイル構成
case/
├ ScaleBar.py (本プログラム)
├ open_file.png
├ quit.png
スケールバーを作成するときは,vtkライブラリの次のクラスについて勉強する必要があります.
vtkLegendScaleActor
詳しくは,リファレンスを参考にしてください.
#スケールバーの実装
それでは,スケールバーを設定していきます.
前回のクラス「MyForm」に以下の関数を追加していきます.
def setupScale(self):
legendScaleActor = vtk.vtkLegendScaleActor()
legendScaleActor.AllAxesOff()
self.ren.AddActor(legendScaleActor) #レンダーにアクターを配置
そして最後に,初期化時にこの関数を追加して終了です.
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.reader = vtk.vtkOpenFOAMReader()
self.filter2 = vtk.vtkGeometryFilter()
self.mapper = vtk.vtkCompositePolyDataMapper2()
self.actor = vtk.vtkActor()
self.widget = QVTKRenderWindowInteractor(self)
self.widget.Initialize()
##背景色の設定
self.ren = vtk.vtkRenderer()
self.widget.GetRenderWindow().AddRenderer(self.ren)
self.widget.Start()
self.widget.show()
self.setCentralWidget(self.widget)
#UIのインスタンスを介してアイコンと実体(関数)をつなげる
self.ui.actionOpenFile.triggered.connect(self.openFile)
self.ui.actionResetFile.triggered.connect(self.resetFile)
self.setupInitView()
self.setupScale() #<--------これ!
#使い方
モデルを回転・拡大することで,サイズを測ることができます.
今回の例には.OpenFOAMのチュートリアルにある,pitzDailyを用いています.
https://github.com/OpenFOAM/OpenFOAM-6/tree/master/tutorials/incompressible/simpleFoam/pitzDaily
実際のサイズを確認してみましょう.
pitzDaily/system/blockMeshDictを確認すると..
まあ,だいぶズレてますね( ´∀` )
おおよその確認なので,過度な期待は禁物です.
#まとめ
view画面にスケールバーを追加しました.
最近vtkに関する記事が増えてて嬉しいです.
もっと盛り上げていきたいですね.