mac (w/ Python 3 & PyQt5) で ocXgag
Introduction
鳥人間な制御屋さんが公開してくれた ocXgag という翼型の調整ソフトがちょっと面白そうだった:
- 失速特性を考慮した翼型設計ocXgag その1 背景 - A Plane On The Sand
- 失速特性を考慮した翼型設計ocXgag その2 公開と使い方 - A Plane On The Sand
が、Windows にしか対応してないとのことだったので mac で使えないかとやってみた。ただ mac 固有の問題というよりは PyQt のバージョン違いの問題なのかも。Qt に触れるのが初めてなのでよくわからない。いずれにせよ、結論としては、コードを少しいじって Xfoil をインストールしたら動くようになった。
なお起動方法は単純に、コマンドライン(自分は iTerm 2)でスクリプトのあるディレクトリまで移動し、
$ python ocXgag.py
とするだけ。
検証環境
Methods & Results
スクリプトの書き換え
PyQt のバージョンがスクリプトに書かれている 4 でなく 5 であることが原因で、書き換えが必要になった。したがって、ocXgag.py をエディタで開いて、以下のことをした。
- 冒頭付近、from PyQt4 import QtGui, QtCore を from PyQt5 import QtGui, QtCore, QtWidgets に差し替え
- backend_qt4agg を backend_qt5agg へ置換
- QtGui.QFont() 以外の QtGui という文字列を全て QtWidgets という文字列へ置換
- GetFoilName の self.foilname = というところを、self.foilname, _ = に差し替え。これを調べるのにだいぶ時間がかかった*1。 参考。
以上で、アプリの起動および翼型データの読み込みまではできるようになった。
Xfoil のインストールと PATH の設定
このあとは Xfoil が必要になるので、Xfoil4Mac をインストールした。このとき XQuartz が必要と言われたので、それも入れた。あとはコマンドラインから xfoil を開けるように、パスを通す。具体的には、
$ PATH=$PATH:/Applications/Xfoil.app/Contents/Resources/
とした。確認は
$ echo $PATH
で。以上で使えるようになった。