以下はFreeCADに実装されている多くの機能のリストです。ただし機能が多いため全てが記載されているわけではありません。もし将来的な計画について知りたいのであれば開発ロードマップを見てください。機能を概観したいのであればスクリーンショットを見るとよいでしょう。
リリースノート
一般的な機能
基本アプリケーション
- FreeCADはマルチプラットフォームです。WIndows、Linux、Mac OSXで完全に同じように動作します。
- FreeCADは完全なGUIアプリケーションです。FreeCADは完全なグラフィカルユーザーインターフェースを持っています。このグラフィカルユーザーインターフェースはよく知られるQtフレームワークを基盤にしており、3DビューワーはOpen Inventorを元に作成されています。これによって高速な3Dシーン描画が可能になり、シーンのグラフィック表現の取り扱いが非常に容易になっています。
- FreeCADはコマンドラインアプリケーションとしても動作します。この場合にはメモリーの消費量を低くすることができます。コマンドラインモードでのFreeCADはインターフェイス無しで実行されますが、全てのジオメトリツールを使用することができます。これによって例えば他のアプリケーション用のデータを作成するためのサーバーとしてFreeCADを使用することが可能になります。
- FreeCADはPythonモジュールとしてインポートすることができます。pythonスクリプトを実行できる他のアプリケーション内部、あるいはpythonコンソールへインポート可能です。コンソールモードの場合と同様、FreeCADのインターフェイス部分を使用することはできませんが、全てのジオメトリツールを使用することができます。
- 機能/データタイプの遅延読み込みのためのプラグイン/モジュールフレームワーク。FreeCADはコアアプリケーションと必要な場合にのみロードされるモジュールに分割されています。ほとんど全てのツールとジオメトリータイプはモジュールとして保持されています。モジュールはプラグインのように動作し、既にインストールされたFreeCADに対して追加したり削除したりすることが可能です。
- 組み込みのスクリプトフレームワーク: FreeCADにはPythonインタープリターが組み込まれています。またアプリケーション、インターフェイス、ジオメトリー、3Dビューワー上のジオメトリー表現のほとんど全てを網羅したAPIを兼ね備えています。インタープリターは1つのコマンドから複雑なスクリプトまで実行でき、実質的には全モジュールを完全にPythonでプログラムすることさえ可能です。
- モジュール化されたMSIインストーラーによってWindowsシステム上への柔軟なインストールが可能です。Ubuntuシステム用のパッケージも整備されています。
ドキュメント構造
- アンドゥ/リドゥフレームワーク: アンドゥスタックにアスセスすることで全ての操作をアンドゥ/リドゥ可能です。一度に複数のステップをアンドゥすることができます。
- トランザクションマネージメント: アンドゥ/リドゥスタックは一つのアクションではなくドキュメントのトランザクションを保持します。これによって各ツールは何をアンドゥまたはリドゥするかを正確に定義することができます。
- パラメーター連想ドキュメントオブジェクト: FreeCADドキュメント上のオブジェクトは全てパラメーターによって定義することが可能です。このパラメーターは動的に変更することが可能でいつでも再計算を行えます。オブジェクトの間の関連付けを保持することも可能なので一つのオブジェクトを変更するとそれに依存したオブジェクトも変更されます。
- (ZIPベースの)複合ドキュメント保存フォーマット: FreeCADドキュメントは.fcstd拡張子で保存できます。これにはジオメトリー、スクリプト、サムネイルアイコンといったさまざまな種類の情報を保存することができます。
ユーザーインターフェイス
- 完全にカスタマイズ/スクリプト化可能なグラフィカルユーザーインターフェース。
QtベースのFreeCADのインターフェイスに対してはPythonインタープリターを介した完全なアクセスが可能です。FreeCAD自体がワークベンチに提供する単純な機能だけではなく、Qtフレームワーク全体にアクセスできます。これによってウィジットとツールバーに対して作成、追加、ドッキング、削除といった任意のGUI操作を行うことができます。
- ワークベンチというコンセプト: FreeCADのインターフェイスではツールはワークベンチによってグループ分けされます。これによってある作業を行うために必要なツールだけを表示し、作業スペースを整頓された使いやすい状態に保ち、アプリケーションの読み込みを高速にすることができます。
- 組み込みのPythonコンソールには構文ハイライト機能、自動補完機能、クラスブラウザーが備わっています。Pythonコマンドは直接FreeCADに発行され、結果は直ちに返されます。これによってスクリプト作成者は動的に機能をテストすることができ、モジュールの中身を調べてFreeCADの内部構造を簡単に学ぶことができます。
- コンソール上でのユーザー操作のミラーリング: ユーザーがFreeCADのインターフェイスを介して行った操作はPythonのコードによって実行できます。このPythonのコードはコンソール上に表示したり、マクロとして記録することができます。
- 完全なマクロ記録と編集: ユーザーがインターフェイスを操作するとPythonコマンドが発行され、必要な場合はそれを記録、編集して後で再現するために保存することができます。
- サムネイラー (今のところLinuxシステムのみ): GnomeのNautilusを始めとしたほとんどのファイルマネージャーアプリケーションでFreeCAD ドキュメントのアイコン上にファイルの内容を表示します。
アプリケーション固有の機能
FreeCADの機能はモジュールに分割されています。それぞれのモジュールは固有のデータタイプとアプリケーションを扱います:
- メッシュモジュールは3Dメッシュを扱います。主にサードパーティが作成したメッシュジオメトリーをFreeCADにインポートし、修正し、変換してエクスポートすることを目的としています。ただしFreeCAD自体にもメッシュに留まらないより高度なジオメトリータイプが備わっています。
- プリミティブの作成(直方体、球、円筒など)、オフセット (trivial or after Jung/Shin/Choi)、ブーリアン演算 (加算, 切断、交差)
- テストと修正をメッシュに行うためのツール: ソリッドかどうかのテスト、非2次元多様体かどうかのテスト、自己交差しているかどうかのテスト、穴埋めと向きの統一。
- 3D空間内の任意の面上でのライン、ワイヤー、長方形、円弧、円などの単純な平面ジオメトリーのグラフィカルな作成
- 3D空間内の任意の面上での移動、回転、拡大縮小、鏡像反転、オフセット、形状変換といったグラフィカルな変更操作
- インポートとエクスポート 以下の形式をサポート: AutodeskのDrawing Exchange Format (*.dxf)、Open Cad Format (*.oca, *.gcad)、SVG (*.svg)
- パラメトリックなプリミティブ形状 直方体、球、円筒、円錐、トーラスなど
- 頂点、辺、ワイヤーまた面といった幾何形状部品 (Pythonスクリプト経由)
- 直線、曲線の押し出し、分割、フィレットによるモデリング
- インポートとエクスポート 以下の形式をサポート: STEP パーツとアセンブリ (*.stp,*.step)、IGESモジュール (*.igs, *.iges) とBRep (*.brp)、私たちが使っているOpen CASCADE CADカーネルのネイティブフォーマット。
- レイトレーシングモジュールを使うとFreeCAD上のジオメトリーをエクスポートして高品質な画像作成するための外部のレンダリングソフトウェアで使うことができます。今のところサポートしているレンダリングエンジンはPOV-Rayだけです。現在のところこのモジュールはレンダーシートを作成し、POV-Rayファイルにエクスポートするためにジオメトリーをレンダーシートに追加することができます。
- 図化モジュールでは3Dジオメトリーの投影図を2D SVGドキュメントとしてエクスポートすることができます。このモジュールでは既存のSVGテンプレートを使った2Dシートとそのシートに対するジオメトリーの投影図を作成することができます。作成したシートはSVGファイルとして保存可能です。
- CAMモジュールはスライス加工など機械加工のために用意されています。このモジュールはまだ開発が始まったばかりで、今のところインクリメンタルなシート成形にもっとも力が注がれています。他にもいくつかの工具経路計画アルゴリズムがありますが今のところはエンドユーザーが使えるようにはなっていません。