あなたのシステムのPythonインストール設定に新しいモジュールを追加することでFreeCAD内部のPythonモジュールを簡単に拡張することができます。これらのモジュールはFreeCADによって自動的に検知され使用されます。
Pythonモジュールは全てFreeCADの内部から使用できますが中でも以下で紹介するいくつかのものは特に重要です。なぜならこれらを使うとPythonプログラムからFreeCADの中核機能に対して完全なアクセスを行うことが可能だからです。これらのモジュールの使用例はコードスニペットページにあります。
注意::
ホームページ: http://www.riverbankcomputing.co.uk/pyqt
PyQt(バージョン4)はプログラムがQtインターフェイスに対してアクセスしたり、それらを作成、変更できるようにするためのPythonバインディングライブラリです。FreeCADのインターフェイスはQtで作られているので、あなたのシステムにPyQt4をインストールすることでFreeCAD内部のPythonプログラムからインターフェイス全てにアクセスしたり、パーツの変更や新しいウィジットの作成、インターフェイスのパーツから情報を集めるなどの処理を行えるようになります。
PyQtはQtで使われているものと同じマルチライセンスシステムの下でリリースされています。つまり商用ライセンス版とフリーなGPL版がアルのです。もし商用の(クローズドなソースの)プログラムで使用したいと思ったら商用ライセンスを購入する必要があります。一方、GPL版では自由にインストールして使用することだけができます。
言うまでもないでしょうがPyQt4をインストールする前にインストール済みの正常動作するPython環境が必要です。
Linux
最も簡単なPyQt4のインストール方法はあなたの使っているディストリビューションのパッケージマネージャーを使用する方法です。Debian/Ubuntuシステムではパッケージ名は一般的にはpython-qt4です。またRPMベースのシステムではpyqt4となっています。必要な依存関係(QtとSIP)は自動的に解決されます。
Windows
プログラムをここからダウンロードできます。pyqt4をインストールする前にQtライブラリとSIPライブラリをインストールしておく必要があります(要ドキュメント化)。
インストールが終わったらFreeCADにPythonコンソールで以下のコマンドを入力して全て動作しているかどうかチェックします:
import PyQt4
FreeCADインターフェイスにアクセスするには以下のように入力します:
from PyQt4 import QtCore,QtGui app = QtGui.qApp FreeCADWindow = app.activeWindow()
以上を行うとdir()コマンドを使ってインターフェイスを探索できるようになります。自作のウィジットなど新しい要素を追加するには以下の様なコマンドを使います:
FreeCADWindow.addDockWidget(QtCore.Qt.RghtDockWidgetArea,my_custom_widget)
以下に(QtDesigneやPythonを使ったインターフェイスの作成方法を含む)もっと詳しいpyQt4のチュートリアルがあります:
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html - 公式PyQt4 APIリファレンス
http://www.rkblog.rk.edu.pl/w/p/introduction-pyqt4/ - 簡単なイントロダクション
http://www.zetcode.com/tutorials/pyqt4/ - 非常に詳細なチュートリアル
ホームページ: http://pivy.coin3d.org/
PivyはPython用のCoinバインディングライブラリで、Coinプロジェクトによって公式にサポートされています。Coin自体はOpenGLで3Dアプリケーションを作成するためのツールキットです。FreeCADはこのツールキットを使って画面上に3Dシーンを描画しています。あなたのシステムにPivyをインストールするとPythonプログラムからFreeCADのシーングラフにアクセスして画面上に新しいオブジェクトを描画したり、描画操作用の幅広いCoinツールを利用できるようになります。Coinはシーン記述言語であるOpenInventorに基づいています。PivyはFreeCADの2D製図モジュール(また全てのモジュール)で使用されているのでそれらのモジュールのツールを使いたい場合には必ず必要になります。
FreeCADではオブジェクトを画面上に表現するためにしかCoinを使っておらず、それらはオブジェクトの定義とは分離しているということは知っておくべき重要な点でしょう。つまりPivyを使って既存のオブジェクトを変更したり、正常なFreeCADオブジェクトを作成することはできないのです。ただし一時的なものであれば、座標軸、グリッド、マニピュレータ、補助ジオメトリーなどあらゆるものを画面に描画することができます。
PivyはCoinと同様、GPLライセンスの下でリリースされています。
Pivyをコンパイルする前にはCoinとSoQtをインストールしておいた方がいいと思います。
Mac上でのビルドではCoin3バイナリパッケージをインストールするだけで十分でした。ただしMacPortsからCoinをインストールしようとすると問題となるかもしれません。大量のXWindowパッケージの追加を行わなければならず、スクリプトのエラーによる完全なクラッシュもありました。
FedoraではRPMにCoin3がありました。
SoQtのソースからのコンパイルはMacでもLinuxでも問題ありませんでした。
DebianSqueezeとUbuntuLucidを使って始める場合は公式レポジトリからPivyを直接利用することができるのでたいして面倒ではないでしょう。他にもダウンロードページから利用できる私たちが(DebianとUbuntuKarmic用に)作成したパッケージをダウンロードするか、あるいは自分自身でビルドするという方法をとることもできます。
最も簡単なPivyのコンパイル方法はPivyのDebianソースパッケージから取ってきてdebuildを使ってパッケージを作成するやり方です。これはPivyの公式サイトのものと同じソースコードですがDebianの人たちによっていくつかのバグ修正が追加されています。UbuntuKarmic上でも正常にコンパイルできます: http://packages.debian.org/squeeze/python-pivy から.orig.gzファイルと.diff.gzファイルをダウンロードして両方を展開したら.diff をソースに適用します。展開したPivyのソースフォルダに移動し、以下のようにして.diffパッチを適用します:
patch -p1 < ../pivy_0.5.0~svn765-2.diff
その後で次のコマンドをを実行するとPivyが公式なインストールパッケージに適切にビルドされます。
debuild
それが終わったらgdebiを使ってそのパッケージをインストールすれば終わりです。
まず以下のコマンドを使って最新のソースをプロジェクトのリポジトリ:から入手します。
hg clone http://hg.sim.no/Pivy/default Pivy
2012年3月現在、最新のバージョンはPivy-0.5です。
次にPythonバインディング用のC++コードを生成するためのSWIGというツールが必要になります。Pivy-0.5はSWIG 1.3.31、1.3.33、1.3.35、1.3.40でのみテスト済みであると説明されています。従ってそれら古いバージョンのどれかのソースのtarballをhttp://www.swig.orgからダウンロードします。ダウンロードしたら展開して(root権限で)次のコマンドを実行します:
./configure make make install (checkinstallを使っている場合はそれでも構いません)
ビルドは数秒で終わります。
あるいはもっと新しいSWIGを使ってビルドを試みてもいいでしょう。2012年3月現在、標準のリポジトリバージョンは2.0.4です。PivyはMac OSでのSWIG 2.0.4を使ったコンパイルでちょっとした問題がありますが(下記を参照)、Fedora Core 15では正常にビルドできるようです。
ビルドが終わったらPivyソースの位置に移動し、次のコマンドを実行します:
python setup.py build
これによってソースファイルが作成されます。ビルドでは大量の警告が出る場合がありますが恐らくエラーはでないでしょう。
恐らく今は修正されていますが 'char*'を'const char*'に変換できない、というコンパイルエラーが起きる場合があります。これを修正するためには該当する行に'const'を書き込む必要があります。修正ヶ所は6行あります。
それが終わったら次のコマンドを(root権限で)実行してインストールを行います:
python setup.py install (またはcheckinstall python setup.py install)
これで終わりです。Pivyがインストールされました。
以下の手順説明は完全ではないかもしれません。2012年3月現在、OS10.7でほぼ動作しました。レポジトリはMacPortsのものを使用しましたが他のものでもうまくいくはずです。
Linuxと同様に最新のソースコードを以下のコマンドで入手します:
hg clone http://hg.sim.no/Pivy/default Pivy
もしあなたの環境にhgがなければ以下のコマンドを実行することでMacPortsから入手できます:
port install mercurial
その後は上記と同様、SWIGが必要になります。以下のコマンドで入手できるはずです:
port install swig
私の環境では以下のコマンドも必要でした:
port install swig-python
2012年3月現在、MacPortsのSWIGはバージョン2.0.4です。上記のLinuxの項目で書いたように可能であればもっと古いバージョンをダウンロードした方が良いでしょう。SWIG2.0.4にはPivyのビルドが止まるバグがあるようです。以下の要約の最初のメッセージを参照して下さい: https://sourceforge.net/mailarchive/message.php?msg_id=28114815
これはソース内の二ヶ所を編集してarg4、arg5の代わりに修飾参照*arg4、*arg5を追加することで修正できます。これで以下のコマンドを使ってPivyをビルドできるはずです:
python setup.py build sudo python setup.py install
VisualStudio2005以降を使用するものとします。ツールメニューの'Visual Studio 2005 Command prompt'を使ってコマンドプロンプトを開きます。 もしPythonインタプリタをまだシステムパスに登録していない場合は以下のようにしてください:
set PATH=path_to_python_2.5;%PATH%
Pivyを動作させるためにはプロジェクトのリポジトリから最新のソースを入手します:
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy
次にPythonバインディング用のC++コードを生成するためのSWIGというツールが必要になります。最新バージョンではなくSWIGのバージョン1.3.25を使うことをお勧めします。今のところPivyは1.3.25を使った場合にしか正しく動作しないためです。http://www.swig.orgから1.3.25のバイナリをダウンロードしてください。ダウンロードしたら展開して以下のようにしてコマンドラインからシステムパスに追加します:
set PATH=path_to_swig_1.3.25;%PATH%
またCOINDIRを適切なパスに設定します:
set COINDIR=path_to_coin
Windows上ではPivyの設定ファイルはデフォルトのSoQtではなくSoWinとなっているはずです。SoQtを使ってビルドする適切な方法を見つけられなかったので私はsetup.pyを直接変更しました。 200行目の 'sowin'の部分を取り除くだけです:('gui._sowin', 'sowin-config', 'pivy.gui.') (丸括弧閉じは削除しないように)
それが終わったらソースの位置に移動して以下のコマンドを実行します:
python setup.py build
これによってソースファイルが作成されます。いくつかのヘッダファイルが見つからないというコンパイルエラーが起きるかもしれません。その場合にはINCLUDE変数を以下のように調整してください:
set INCLUDE=%INCLUDE%;path_to_coin_include_dir
もしSoQtのヘッダがCoinのヘッダと同じ場所にない場合は以下も行います:
set INCLUDE=%INCLUDE%;path_to_soqt_include_dir
最後にQtのヘッダを追加します:
set INCLUDE=%INCLUDE%;path_to_qt4\include\Qt
あなたがVisualStudioのExpressエディションを使っている場合、Pythonのkeyerror例外が起きるかもしれます。 その場合はPythonインストール位置にあるmsvccompiler.pyに若干の変更を加える必要があります。
122行目に移動し以下の行を
vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version
次の行で置き換えます。
vsbase = r"Software\Microsoft\VCExpress\%0.1f" % version
それが終わったらもう一度試してみてください。 次に示すようなエラーが再度起きた場合は
error: Python was built with Visual Studio 2003;...
128行目の以下の行を
self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1")
次の行で置き換えます。
self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0")
再度、試します。また次に示す様なエラーが起きる場合は
error: Python was built with Visual Studio version 8.0, and extensions need to be built with the same version of the compiler, but it isn't installed.
以下のコマンドで環境変数のDISTUTILS_USE_SDKとMSSDKを調べてみてください。
echo %DISTUTILS_USE_SDK% echo %MSSDK%
もしまだ設定されていないようであれば以下のコマンドの様にして1などを設定してください。
set DISTUTILS_USE_SDK=1 set MSSDK=1
また'char*'を'const char*'に変換できない、というコンパイルエラーが起きる場合があります。これを修正するためには該当する行に'const'を書き込む必要があります。修正ヶ所は6行あります。 ビルドが終わったら生成されたPivyディレクトリをFreeCADのPythonインタプリタが見つけられる場所にコピーしてください。
PivyでFreeCADのシーングラフにアクセスするには次のようにします:
from pivy import coin App.newDocument() # ドキュメントとビューを開きます view = Gui.ActiveDocument.ActiveView FCSceneGraph = view.getSceneGraph() # Coinシーングラフのメイン"コンテナ"であるSoSeparatorを保持したPivyのPythonオブジェクトを返します FCSceneGraph.addChild(coin.SoCube()) # シーンにボックスを追加します
これでdir()コマンドを使ってFCSceneGraphを調べることができるようになります。
残念なことにPivyについて書かれたものはネット上にはまだほとんどありません。ただしCoinドキュメントが利用できることにあなたは気がついたかもしれません。PivyはConiの関数、ノード、メソッドを純粋にPythonに移植したものだからです。名前とプロパティは全て同じままで、気をつける必要があるのはCとPythonの文法の違いだけです。
http://doc.coin3d.org/Coin/classes.html - Coin3DのAPIリファレンス
http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html - The Inventor Mentor - Inventorのシーン記述言語の"バイブル"です
またFreeCADのMod/DraftフォルダにあるDraft.pyファイルを参照してもいいでしょう。これはPivyを豊富に使っているからです。
pyColladaはプログラムでCollada (*.DAE)ファイルの読み書きを行うことができるようにするためのPythonライブラリです。pyColladaがあなたのシステムにインストールされている場合にはFreeCAD(available in version 0.13 )はそれを検出してColladaファイル形式のインポートとエクスポートを行うハンドルの追加を行います。
pyColladaは今のところLinuxディストリビューションのレポジトリでは利用できないことが多いですが、Pythonファイルだけで作成されていてコンパイルを必要としないのでインストールは簡単です。やり方は二通りあります。pyColladaの公式Gitレポジトリから直接インストールするか、easy_installツールを使うかのどちらかです。
どちらの場合でも以下のパッケージがあなたのシステムにインストールされている必要があります:
python-lxml python-numpy python-dateutil
git clone git://github.com/pycollada/pycollada.git pycollada cd pycollada sudo python setup.py install
Pythonは既に完全にインストールされているものとし、その場合、easy_installユーティリティが既に存在しているはずです。
easy_install pycollada
pyColladaが正しくインストールされたかどうか確認するためにはPythonコンソールで以下のコマンドを入力します:
import collada
何も返らなければ(エラーメッセージがでなければ)全てOKです。
ドキュメント作成予定
IFCOpenShellは現在開発中のライブラリでIndustry foundation Classes (*.IFC)のインポート(いずれはエクスポートも)を行えるようにするもので。IFCはSTEP形式の拡張でBIMワークフローでの標準形式になる予定です。あなたのシステムにIFCOpenShellが正しくインストールされている場合にはFreeCADの建築モジュール がそれを検出してIFCファイルのインポートに使用します。IFCOpenShellはFreeCAD同様、OpenCasCadeを基盤にしていてインポートの精度が非常に高く、高品質なソリッドジオメトリを生成します。
ホームページ: http://www.ifcopenshell.org
IFCOpenShellは非常に新しいものなので恐らく自分でコンパイルする必要があります。
IFCOpenShellをコンパイルするためにはシステムにいくつかの開発用パッケージをインストールする必要があります:
liboce-*-dev python-dev swig
ただしこれらは全てFreeCADでも必要な物なので、もしあなたがFreeCADをコンパイルできる状態なら他にIfcOpenShellをコンパイルするのに必要な物はありません。
以下から最新のソースコードを入手してください:
svn co https://ifcopenshell.svn.sourceforge.net/svnroot/ifcopenshell ifcopenshell
ビルド処理は非常に簡単です:
mkdir ifcopenshell-build cd ifcopenshell-build cmake ../ifcopenshell/cmake
あるいは、あなたがOpenCasCadeの代わりにoceを使っている場合は以下の様になります:
cmake -DOCC_INCLUDE_DIR=/usr/include/oce ../ifcopenshell/cmake
IfcOpenShellは元々はBlender用に作成されたのでデフォルトではpython3を使用します。FreeCAD内部で使用する場合にはFreeCADで使用されているものと同じバージョンのPythonに対してコンパイルを行う必要があります。従って以下のようにして追加のCMakeパラメータでPythonのバージョンを指定する必要があるでしょう(Pythonのバージョンを調整するのです)。
cmake -DOCC_INCLUDE_DIR=/usr/include/oce -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/python2.7.so ../ifcopenshell/cmake
その後で以下を実行します:
make sudo make install
IfcOpenShellが正しくインストールされたかどうか確認するためにはPythonコンソールで以下のコマンドを入力します:
import IfcImport
何も返らなければ(エラーメッセージがでなければ)全てOKです。
IfcOpenShellのREADMEファイルからの転載です
win/ folderにあるVisual Studioの.slnファイルを使用することをお勧めします。Windowsユーザー用ビルド済みバージョンのOpenCASCADEはウェブサイト http://opencascade.org から利用可能です。このバージョンをダウンロードしてインストールした後でOpenCASCADEのヘッダとライブラリのパスをMS Visual Studio C++に設定してください。
IfcPythonラッパーをビルドするためにはSWIGが必要になります。 http://www.swig.org/download.html から最新版のswigwinをダウンロードしてください。.zipファイルを展開したら、その展開したフォルダをPATH環境変数に追加してください。またPythonがインストールされている必要があります。そのインクルードとライブラリパスをVisualStudioに設定してください。