はじめに
以前に投稿した内容 ↓ をさらに拡張していきます.
PyQt5とvtkを使ってOpenFOAMの結果を可視化してみた その2(「ファイルを開く」の実装編)
今回はビュー上に座標軸を配置していきます.
環境
OS: windows10
OpenFOAM v4.0
python 3.6.4
pyqt5-5.9.2
vtk-8.0.0
numpy
ファイル構成
case/
├ ViewAxis.py (本プログラム)
├ open_file.png
├ quit.png
座標軸を作成するときは,vtkライブラリの次のクラスについて勉強する必要があります.
vtkAxesActor
vtkOrientationMarkerWidget
vtkAxesActorは,単純に座標軸に関するactorであり,
vtkOrientationMarkerWidgetを介してQVTKRenderWindowInteractor
に配置するようです.
おそらく,AxesActorから直接vtkRendererに配置することも可能だと
思われます.
座標軸の実装
それでは,座標軸を設定していきます.
前回のクラス「MyForm」に以下の関数を追加していきます.
def setupAxes(self):
axesActor = vtk.vtkAxesActor() #軸用のactorを用意
self.axesWidget = vtk.vtkOrientationMarkerWidget()
self.axesWidget.SetOrientationMarker(axesActor)
self.axesWidget.SetInteractor(self.widget)
self.axesWidget.EnabledOn() #有効化
self.axesWidget.InteractiveOn() #接続開始
self.widget.Render()
そして最後に,初期化時にこの関数を追加して終了です.
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.setupAxes() #<--------これ!
使い方
まとめ
view画面に座標軸を追加しました.
次回こそ,メッシュ表示切替やview方向の切り替えあたりをまとめようと思います

