Translations:Embedding FreeCAD/3/ja

まずはじめに思いつく直接的で簡単で便利な応用はFreeCADドキュメントをあなたのプログラムにインポートすることです. 次の例ではFreeCADドキュメントのPartジオメトリーをblenderにインポートしています. スクリプトはこれで全てです. このシンプルさにあなたが感動してくれるといいのですが：

FREECADPATH = '/opt/FreeCAD/lib' # FreeCAD.soファイルまたはFreeCAD.dllファイルのパス import Blender, sys sys.path.append(FREECADPATH) def import_fcstd(filename): try: import FreeCAD except ValueError: Blender.Draw.PupMenu('Error%t|FreeCAD library not found. Please check the FREECADPATH variable in the import script is correct') else: scene = Blender.Scene.GetCurrent import Part doc = FreeCAD.open(filename) objects = doc.Objects for ob in objects: if ob.Type[:4] == 'Part': shape = ob.Shape if shape.Faces: mesh = Blender.Mesh.New rawdata = shape.tessellate(1) for v in rawdata[0]: mesh.verts.append((v.x,v.y,v.z)) for f in rawdata[1]: mesh.faces.append.append(f) scene.objects.new(mesh,ob.Name) Blender.Redraw def main: Blender.Window.FileSelector(import_fcstd, 'IMPORT FCSTD',                        Blender.sys.makename(ext='.fcstd')) if __name__=='__main__': main
 * 1) This lets you import the script without running it

まず重要なのはPythonがちゃんとFreeCADライブラリを見つけ出しているかの確認です. それが済めば私たちが使っているPartなどFreeCADモジュール全てを自動的に利用できるようになります. そこでまずPythonがモジュールを検索する位置を示すsys.path変数を取り、そこにFreeCADのlibのパスを追加しています. ここで行った変更は一時的なものでPythonインタプリタの終了時に消えます. これとは別にFreeCADライブラリをPythonの検索パスの一つにリンクさせることもできます. 今回のスクリプトではパスを定数（FREECADPATH）に入れています. こうしておけば他のユーザーが自分のシステム用にスクリプトを調整するのが簡単になるでしょう.

いったんライブラリのロード（try/except部分）が行われれば、いよいよFreeCADを使って作業を行うことができます. やり方はFreeCAD独自の内部Pythonインタプリタの時と同じです. main関数を使って渡されたFreeCADドキュメントを開き、そのオブジェクトのリストを作成しています. それから関心のあるPartジオメトリーだけを選び出すために各オブジェクトのTypeプロパティに "Part"が入っているかどうか確認し、それをモザイク構造（tessellate）に変換します.

このモザイク構造から頂点のリストと頂点をインデックスとして定義された面のリストが作成されます. これで完璧です. 何しろblenderがメッシュを定義するのと全く同じ方法なのですから. やっていることは馬鹿馬鹿しいほど単純です. ただ両方のリストの内容をblenderのmeshのvertsとfacesに追加するだけです. 全て終わったら画面を再描画して終わりです！

もちろんこのスクリプトは非常に簡単なものなので（実を言うともっと応用的なものも作ってあります）、あなたはこれを拡張したくなるでしょう. 例えばメッシュオブジェクトのインポート、面の無いPartジオメトリーのインポート、FreeCADで読める他のファイルフォーマットのインポートといったものが考えられます. またジオメトリーをFreeCADドキュメントとしてエクスポートしたいと思うかもしれません. 同じようにしてできます. あるいはダイアログを使ってユーザーが何をインポートするか選べるようにしたいと思うかも. 他にもあるでしょう. 実際の所、これら全てに共通して言える利点はあなたが選んだプログラムの結果出力用にFreeCADに基礎となる作業をさせることができる、ということなのです.