Technical logs - invisible yet indispensable -
出口の光が見えない - freecad + FEM workbench の計算結果エクスポート (2025-11-06)
freecad + FEM workbenchの構造計算がある程度できるようになってきたところで、計算結果の値を自分の扱いやすいフォーマットで書き出して特定の目的(私の場合はraytrace) に使用したい、という要望は多いだろう。
そう、要望は多いだろう…だから簡単に「エクスポート」できるだろうと思っていたが、複数のツール部隊の交錯する連合freecad村はそんなに甘い世界ではなかったのである。
試行錯誤の内容を全て書くと疲弊するので、ポイントだけ書いておく。なお、この「結果のエクスポート」でハマっていた間の試行錯誤で、freecadはflatpak 版から AppImage版 v1.0.2に変更している。 AppImage版 は、freeCAD の公式 webサイト https://www.freecad.org/downloads.php?lang=ja から入手できる(他の入手ルートもあるが、公式が一番安全かつ簡単)。
さて、物体の形状を指定し、材質・負荷・拘束条件を設定して、メッシュ切りを実行、ソルバーを動かして構造計算の結果がfreecad + FEM workbench で得られているとする。
モデルツリーの構造は下記のようになっているはずである。
計算結果は CCX_Resultsオブジェクトに入っているが、
- 「右クリック→エクスポート」の機能はv1.0.2 では存在しない
- 左クリックで選択した状態で、上部メニューから「ファイル→エクスポート」選択でエクスポートできるのか….というと “No FEM mesh for export selected” と怒られる。 メッシュデータと、ノード毎の変形vector などのデータは区分が別なのだ。
- では、 “CCX_Results_mesh”ならエクスポートできるのか?→できた。しかし「中身を見てみるとメッシュの座標だけで、構造計算の変位値などは入っていない」ということになる と、かように、簡単には計算結果のデータの「エクスポート」が活用できない。出口が見えぬ。
- CCX_Results を選んだ状態で
- 右クリックで「Pythoh Scriptに送る」を選択し
- Python ターミナルで
>>> import Fem >>> res =App.ActiveDocument.CCX_Results >>> Fem.writeResult(“/tmp/test.vtk”, res)を実行。 /tmp/test.vtk は自分の書き出したいファイルに挿し替えのこと。 -
さて、出力したVTK(Visualization Toolkit)ファイルはテキストファイルだが、それを可視化するツールとしてはひとまずparaview を使用することにする。
$ paraview /tmp/test.vtk
して、”Property” タブから “Apply” を選択(”Apply”しないとデータが読み込まれないので注意!)。
freecadで定義した物体の可視化表示タブの隣にもう一枚タブを開くと、どのような種類のデータ表示をするかの選択肢が多く与えられるので、”Speadsheet View” を選択。するとExcel調のスプレッドシートで、メッシュの座標、ベクトル(変位量)などが列挙されるのでこれをCSVで保存してしまえば扱いやすくなる。“…..直接 freecadからCSVで打ち出せ”って?仰るとおりですよ、私もそう思いますよ。でも paraview は可視化ツール, また計算後のデータ処理の容易という点では現状 freecad よりは上なので、手順短縮という意味では有用という観点からとりあえず採用。
しかし、簡単に計算結果がエクスポート、それもCSVエクスポートできるだろうと思うのは甘かった。それでもフリーウェアで皆さん努力しながら使いやすいように、精度が落ちないように開発を続けてらっしゃると思うと頭が下がる。自分もオープンソースのコミュニティの火を消さないように、貢献しないといけないんだけどね。