Feature list: Difference between revisions

From FreeCAD Documentation
No edit summary
(61 intermediate revisions by 17 users not shown)
Line 1: Line 1:
<languages/>
This is an extensive, hence not complete, list of features FreeCAD implements. If you want to look into the future see the [[Development roadmap]] for a quick overview the [[Screenshots]] are a nice place to go.
<translate>
<!--T:37-->
{{docnav
|[[About FreeCAD|About FreeCAD]]
|[[Install on Windows|Install on Windows]]
}}


<!--T:1-->
== Release notes ==
This is an extensive, but not complete, list of features which FreeCAD implements. If you want to look into the future see the [[Development roadmap|Development roadmap]] for a quick overview of what's coming next. Also, the [[Screenshots|Screenshots]] are a nice place to go.


* [[Release notes 011|Release 0.11]]
== Release notes == <!--T:2-->


<!--T:3-->
== General features ==
* [[Release notes 011|Release 0.11]] - March 2011
* [[Release notes 012|Release 0.12]] - December 2011
* [[Release notes 013|Release 0.13]] - January 2013
* [[Release notes 0.14|Release 0.14]] - March 2014
* [[Release notes 0.15|Release 0.15]] - March 2015
* [[Release notes 0.16|Release 0.16]] - April 2016
* [[Release notes 0.17|Release 0.17]] - April 2018
* [[Release notes 0.18|Release 0.18]] - March 2019
* [[Release notes 0.19|Release 0.19]] - Month 2020


=== Base application ===
== Key features == <!--T:4-->


<!--T:5-->
[[Image:Freecad09-thumbnail.jpg|300px|right]]
* [[Image:Feature1.jpg|left]] A complete [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE Technology]-based '''geometry kernel''' allowing complex 3D operations on complex shape types, with native support for concepts like [https://en.wikipedia.org/wiki/Boundary_representation Boundary Representation] (brep), [https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline Non-uniform rational basis spline] (nurbs) curves and surfaces, a wide range of geometric entities, boolean operations and [https://en.wikipedia.org/wiki/Fillet_(mechanics) fillets], and built-in support of [https://en.wikipedia.org/wiki/ISO_10303 STEP] and [https://en.wikipedia.org/wiki/IGES IGES] formats {{clear}}
* [[Image:Feature3.jpg|left]] A full '''parametric model'''. All FreeCAD objects are natively parametric, meaning their shape can be based on [[Property|properties]] or even depend on other objects. All changes are recalculated on demand, and recorded by an undo/redo stack. New object types can be added easily, and can even be [[Scripted objects|fully programmed in Python]].{{clear}}
* [[Image:Feature4.jpg|left]] A '''modular architecture''' that allows plugin extensions (modules) to add functionality to the core application. An extension can be as complex as a whole new application programmed in C++ or as simple as a [[Power users hub|Python script]] or self-recorded [[macros|macro]]. You have complete access to almost any part of FreeCAD from the built-in '''Python''' interpreter, macros or external scripts, be it [[Topological data scripting|geometry creation and transformation]], the 2D or 3D representation of that geometry ([[scenegraph]]) or even the [[PySide|FreeCAD interface]] {{clear}}
* [[Image:Feature5.jpg|left]] Import/export to '''standard formats''' such as [http://en.wikipedia.org/wiki/ISO_10303 STEP], [http://en.wikipedia.org/wiki/IGES IGES], [http://en.wikipedia.org/wiki/Obj OBJ], [http://en.wikipedia.org/wiki/STL_%28file_format%29 STL], [http://en.wikipedia.org/wiki/Dxf DXF], [http://en.wikipedia.org/wiki/Svg SVG], [http://en.wikipedia.org/wiki/STL_(file_format) STL], [http://en.wikipedia.org/wiki/COLLADA DAE], [http://en.wikipedia.org/wiki/Industry_Foundation_Classes IFC] or [http://people.sc.fsu.edu/~jburkardt/data/off/off.html OFF], [http://en.wikipedia.org/wiki/NASTRAN NASTRAN], [http://en.wikipedia.org/wiki/VRML VRML] in addition to FreeCAD's native {{FileName|[[File Format FCStd|FCStd]]}} file format. The level of compatibility between FreeCAD and a given file format can vary, since it depends on the module that implements it.{{clear}}
* [[Image:Feature7.jpg|left]] A [[Sketcher Workbench|Sketcher]] with integrated constraint-solver, allowing you to sketch geometry-constrained 2D shapes. The constrained 2D shapes built with Sketcher may then be used as a base to build other objects throughout FreeCAD.{{clear}}
* [[Image:Feature9.jpg|left]] A [[Robot Workbench|Robot simulation]] module that allows you to study robot movements in a graphical environment.{{clear}}
* [[Image:Feature8.jpg|left]] A [[TechDraw_Module|technical drawing module]] with options for detail views, cross sectional views, dimensioning and others, allowing you to generate 2D views of existing 3D models. The module then produces ready-to-export SVG or PDF files. An older [[Drawing Module|Drawing module]] with sparse Gui-commands but a powerful Python functionality also exists.{{clear}}
* [[Image:Feature-raytracing.jpg|left]] A [[Raytracing Module|Rendering]] module that can export 3D objects for rendering with external renderers. It currently only supports [http://en.wikipedia.org/wiki/POV-Ray povray] and [http://en.wikipedia.org/wiki/LuxRender LuxRender], but is expected to be extended to other renderers in the future.{{clear}}
* [[Image:Feature-arch.jpg|left]] An [[Arch Module|Architecture]] module that allows [http://en.wikipedia.org/wiki/Building_Information_Modeling Building Information Modeling] (BIM)-like workflow, with [http://en.wikipedia.org/wiki/Industry_Foundation_Classes Industry Foundation Classes] (IFC) compatibility.{{clear}}
* [[Image:Feature-CAM.jpg|left]] A [[Path Workbench|Path module]] dedicated to mechanical machining for [https://en.wikipedia.org/wiki/Computer-aided_manufacturing Computer Aided Manufacturing] (CAM). Using the Path module you may output, display and adjust the [http://en.wikipedia.org/wiki/G-code G code] used to control the target machine.{{clear}}
* [[Image:Feature_spreadsheet.png|left]] An [[Spreadsheet_Workbench|Integrated Spreadsheet]] and an [[Expressions|expression parser]] which may be used to drive formula-based models and organize model data in a central location.{{clear}}


== General features: == <!--T:6-->
*'''FreeCAD is multi-platform'''. It runs and behaves exactly the same way on Windows Linux and Mac OSX platforms.


<!--T:7-->
* '''FreeCAD is a full GUI application'''. FreeCAD has a complete Graphical User Interface based on the famous [http://www.qtsoftware.com/ Qt] framework, with a 3D viewer based on [http://en.wikipedia.org/wiki/Open_Inventor Open Inventor], allowing fast rendering of 3D scenes and a very accessible scene graph representation.
* '''multi-platform'''. FreeCAD runs and behaves exactly the same way on Windows, Linux, macOS and other platforms.


<!--T:8-->
* '''FreeCAD also runs as a command line application''', with low memory footprint. In command line mode, FreeCAD runs without its interface, but with all its geometry tools. It can be, for example, used as server to produce content for other applications.
* '''full GUI application'''. FreeCAD has a complete Graphical User Interface based on the [http://www.qtsoftware.com/ Qt] framework, with a 3D viewer based on [http://en.wikipedia.org/wiki/Open_Inventor Open Inventor]; allowing fast rendering of 3D scenes and a very accessible scene graph representation.


<!--T:9-->
* '''FreeCAD can be imported as a [[Embedding FreeCAD|Python module]]''', inside other applications that can run python scripts, or in a python console. Like in console mode, the interface part of FreeCAD is unavailable, but all geometry tools are accessible.
* '''runs as a command line application'''. In command line mode, FreeCAD runs without its interface but with all its geometry tools. In this mode it has a relatively low memory footprint and can be used, for example, as a server to produce content for other applications.


<!--T:10-->
* '''Plugin/Module framework for late loading of features/data-types'''. FreeCAD is divided into a core application and modules, that are loaded only when needed. Almost all the tools and geometry types are stored in modules. Modules behave like plugins, and can be added or removed to an existing installation of FreeCAD.
* '''can be imported as a [[Embedding FreeCAD|Python module]]''' FreeCAD can be imported into any application that can run Python scripts. As in command line mode, the interface part of FreeCAD is unavailable, but all geometry tools are accessible.


<!--T:11-->
* '''Built-in [[Scripting|scripting]] framework''': FreeCAD features a built-in [http://www.python.org/ Python] interpreter, and an API that covers almost any part of the application, the interface, the geometry and the representation of this geometry in the 3D viewer. The interpreter can run single commands up to complex scripts, in fact entire modules can even be programmed completely in Python.
* '''workbench concept'''. In the FreeCAD interface, tools are grouped by [[workbenches|workbenches]]. This allows you to display only the tools used to accomplish a certain task, keeping the workspace uncluttered and responsive, and allowing the application to load rapidly.


<!--T:12-->
* '''a modular MSI installer''' allows flexible installations on Windows systems. Packages for Ubuntu systems are also maintained.
* '''plugin/module framework for late loading of features/data-types'''. FreeCAD is divided into a core application with modules that are loaded only when needed. Almost all tools and geometry types are stored in modules. Modules behave like plugins; in addition to delayed loading, individual modules can be added to or removed from an existing installation of FreeCAD.


<!--T:13-->
=== Document structure ===
* '''parametric associative document objects'''. All objects in a FreeCAD document can be defined by parameters. Those parameters can be modified and recomputed at any time. Since object relationships are maintained, the modification of one object will automatically propagate to any dependent objects.


<!--T:14-->
[[Image:Freecad-vista01.jpg|300px|right]]
* '''parametric primitive creation'''. Primitive objects such as box, sphere, cylinder, etc. can be created by specifying their geometry constraints.


<!--T:15-->
* '''Undo/Redo framework''': Everything is undo/redoable, with access to the undo stack, so multiple steps can be undone at a time.
* '''graphical modification operations'''. FreeCAD can perform translation, rotation, scaling, mirroring, offset (either trivial or as described in [https://www.researchgate.net/publication/240754626_Self-intersection_Removal_in_Triangular_Mesh_Offsetting Jung/Shin/Choi]) or shape conversion, in any plane of the 3D space.


<!--T:16-->
* '''Transaction management''': The undo/redo stack stores document transactions and not single actions, allowing each tool to define exactly what must be undone or redone.
* '''[http://en.wikipedia.org/wiki/Constructive_solid_geometry constructive solid geometry] (boolean operations)'''. FreeCAD can do constructive solid geometry operations (union, difference, intersect).


<!--T:17-->
* '''Parametric associative document objects''': All objects in a FreeCAD document can be defined by parameters. Those parameters can be modified on the fly, and recomputed anytime. The relationship between objects is also stored, so modifying one object also modifies its dependent objects.
* '''graphical creation of planar geometry'''. Lines, wires, rectangles, b-splines, and circular or elliptic arcs can be created graphically in any plane of the 3D space.


<!--T:18-->
* '''Compound (ZIP based) document save format''': FreeCAD documents saved with .[[fcstd file format|fcstd]] extension can contain many different types of information, such as geometry, scripts or thumbnail icons.
* '''modeling with straight or revolved''' '''extrusions''', '''sections''' and '''fillets'''.


<!--T:19-->
=== User Interface ===
* '''topological components''' like '''vertices''', '''edges''', '''wires''' and '''planes'''.


<!--T:20-->
* '''Fully customizable/scriptable Graphical User Interface'''. The [http://www.qtsoftware.com Qt]-based interface of FreeCAD is entirely accessible via the python interpreter. Aside from the simple functions that FreeCAD itself provides to workbenches, the whole Qt framework is accessible too, allowing any operation on the GUI, such as creating, adding, docking, modifying or removing widgets and toolbars.
* '''testing and repairing'''. FreeCAD has tools for testing meshes (solid test, non-two-manifolds test, self-intersection test) and for repairing meshes (hole filling, uniform orientation).


<!--T:21-->
* '''Workbench concept''': In the FreeCAD interface, tools are grouped by [[workbenches]]. This allows to display only the tools used to accomplish a certain task, keeping the workspace uncluttered and responsive, and the application fast to load.
* '''annotations'''. FreeCAD can insert annotations for text or dimensions.


<!--T:22-->
* '''Built-in Python console''' with syntax highlighting, autocomplete and class browser: Python commands can be issued directly in FreeCAD and immediately return results, permitting scriptwriters to test functionality on the fly, explore the contents of the modules and easily learn about FreeCAD internals.
* '''Undo/Redo framework'''. Everything in FreeCAD is undo/redoable, with user access to the undo stack. Multiple steps can be undone at one time.


<!--T:23-->
* '''User interaction mirroring on the console''': Everything the user does in the FreeCAD interface executes python code, which can be printed on the console and recorded in macros.
* '''transaction oriented'''. The undo/redo stack stores document transactions, not single actions, allowing each tool to define exactly what must be undone or redone.


<!--T:24-->
* '''Full macro recording & editing''': The python commands issued when the user manipulates the interface can then be recorded, edited if needed, and saved to be reproduced later.
* '''built-in [[Scripting|scripting]] framework'''. FreeCAD features a built-in [http://www.python.org/ Python] interpreter, with an API that covers almost any part of the application, the interface, the geometry and the representation of this geometry in the 3D viewer. The interpreter can run complex scripts as well as single commands; entire modules can be programmed completely in Python.


<!--T:25-->
* '''Thumbnailer''' (Linux systems only at the moment): The FreeCAD document icons show the contents of the file in most file manager applications such as gnome's nautilus.
* '''built-in Python console'''. The Python interpreter includes a console with syntax highlighting, autocomplete and a class browser. Python commands can be issued directly in FreeCAD and immediately return results, permitting script writers to test functionality on the fly, explore the contents of FreeCAD's modules and easily learn about FreeCAD internals.


<!--T:26-->
== Application specific features ==
* '''mirrors user interaction'''. Everything the user does in the FreeCAD interface executes Python code, which can be printed on the console and recorded in macros.


<!--T:27-->
The functionality of FreeCAD is separated in modules, each one dealing with special data types and applications:
* '''full macro recording and editing''' capabilities. The Python commands issued when the user manipulates the interface can be recorded, edited if needed, and saved to be reproduced later.


<!--T:28-->
===[[Image:Workbench_Mesh.png]] [[Mesh Module|Meshes]] ===
* '''compound (ZIP based) document save format'''. FreeCAD documents are saved with a {{FileName|.[[File Format FCStd|FCStd]]}} extension. The document can contain many different types of information such as geometry, scripts or thumbnail icons. The {{FileName|.FCStd}} file is itself a zip container; a saved FreeCAD file has already been compressed.


<!--T:29-->
[[Image:Screenshot_mesh.jpg|300px|right]]
* '''fully customizable/scriptable Graphical User Interface'''. The [http://www.qtsoftware.com Qt]-based interface of FreeCAD is entirely accessible via the Python interpreter. Aside from simple functions FreeCAD itself provides to workbenches, the entire Qt framework is accessible. The user may perform any operation on the GUI such as creating, adding, docking, modifying or removing widgets and toolbars.


<!--T:30-->
* The [[Mesh Module]] deals with 3D meshes. It is intented primarily for import, healing and conversion of third-party generated mesh geometry into FreeCAD, and export of FreeCAD geometry into mesh formats. But FreeCAD itself also features much more advanced geometry types than meshes.
* '''thumbnailer'''. (currently only Linux systems) FreeCAD document icons show the contents of the file in most file manager applications such as Gnome's Nautilus.


<!--T:31-->
* '''Primitive creation''' (box, sphere, cylinder, etc), '''offset''' (trivial or after Jung/Shin/Choi) or '''boolean operations''' (add, cut, intersect)
* '''modular MSI installer'''. FreeCAD's installer allows flexible installations on Windows systems. Packages for Ubuntu systems are also maintained.


==In development== <!--T:32-->
* '''Import''' of the following formats: ASCII or binary [http://en.wikipedia.org/wiki/STL_%28file_format%29 STL (Stereo lithography format)] ('''*.stl, *.ast'''), the [http://en.wikipedia.org/wiki/Obj OBJ format] ('''*.obj'''), limited [http://en.wikipedia.org/wiki/NASTRAN NASTRAN] support ('''*.nas'''), [http://en.wikipedia.org/wiki/Open_Inventor Open Inventor] meshes ('''*.iv'''), and FreeCAD native mesh kernel ('''*.bms''')


<!--T:33-->
* '''Export''' of the following formats: ASCII or binary [http://en.wikipedia.org/wiki/STL_%28file_format%29 STL (Stereo lithography format)] ('''*.stl, *.ast'''), the [http://en.wikipedia.org/wiki/Obj OBJ format] ('''*.obj'''), limited [http://en.wikipedia.org/wiki/NASTRAN NASTRAN] support ('''*.nas, *.brl'''), [http://en.wikipedia.org/wiki/VRML VRML] meshes ('''*.wrl'''), FreeCAD native mesh kernel ('''*.bms'''), mesh as Python module ('''*.py''')
* [[Image:Feature-assembly.jpg|left]] An [[Assembly project|Assembly]] module that allows one to work with multiple projects, multiple shapes, multiple documents, multiple files, multiple relationships... This module is currently in the planning state.{{clear}}


==Extra Workbenches == <!--T:36-->
* '''Testing and repairing''' tools for meshes: solid test, non-two-manifolds test, self-intersection test, hole filling and uniform orientation.
Power users have created various custom [[external workbenches|external workbenches]].


* '''Extensive [[Mesh Scripting|Python scripting API]]'''.


<!--T:34-->
===[[Image:Workbench_Draft.png]] [[Draft Module|2D Drafting]] ===
{{docnav

|[[About FreeCAD|About FreeCAD]]
* Graphical creation of '''simple planar geometry''' like lines, wires, rectangles, arcs or circles in any plane of the 3D space
|[[Install on Windows|Install on Windows]]

}}
* '''Annotations''' like texts or dimensions

* Graphical '''modification operations''' like translation, rotation, scaling, mirroring, offset or shape conversion, in any plane of the 3D space

* '''Import''' and '''Export''' of the following formats: Autodesk's Drawing Exchange Format ('''*.dxf'''), Open Cad Format ('''*.oca, *.gcad''') e SVG ('''*.svg''')

===[[Image:Workbench_Part.png]] [[Part Module|CAD]] ===

[[Image:Part_BooleanOperations.png|300px|right|An example of union, intersection and difference]]

* The [[Part Module]] deals with everything around CAD modeling and the CAD data structures. The CAD functionality is under heavy development (see the [[PartDesign_project]] and [[Assembly_project]] in the [[Development_roadmap]]). The [[Part Module]] works with high-level [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE] geometry.

* '''Parametric primitive shapes''' like box, sphere, cylinder, cone or torus.

* Topological components like '''vertices, edges, wires''' and '''planes''' (via python scripting).

* Modeling with straight or revolution '''extrusions''', '''sections''' and '''fillets'''.

* '''[http://en.wikipedia.org/wiki/Constructive_solid_geometry Boolean operations]''' like '''union''', '''difference''' and '''intersection'''.

* '''Extensive [[Topological_data_scripting|Python scripting API]]'''.

* '''Import''' and '''Export''' of the following formats: [http://en.wikipedia.org/wiki/Standard_for_the_Exchange_of_Product_model_data STEP] parts and assemblies ('''*.stp,*.step'''), [http://en.wikipedia.org/wiki/IGES IGES] models ('''*.igs, *.iges''') and BRep ('''*.brp'''), the native format of our [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE] CAD kernel.

=== [[Raytracing Module|Raytracing]] ===

* The [[Raytracing Module]] permits the export of FreeCAD geometry to '''external renderers''' for generation of high-quality images. Currently, the only supported render engine is [http://en.wikipedia.org/wiki/POV-Ray POV-Ray]. The module currently permits the creation of a render sheet, and adding geometry to that render sheet for export to a POV-Ray file.

=== [[Drawing Module|Drawing]] ===

* The [[Drawing Module]] allows to export projected views of your 3D geometry to a '''2D SVG document'''. It allows the creation of a 2D sheet with an existing svg template, and the insertion of projected views of your geometry in that sheet. Then the sheet can be saved as a SVG file.

=== [[Cam Module|CAM]] ===

* The [[Cam Module]] is dedicated to mechanical machining like milling. This module is at the very beginning and at the moment mostly dedicated to [http://en.wikipedia.org/wiki/Incremental_sheet_forming Incremental Sheet Forming]. Although there are some algorithms for toolpath planing they are not usable for the end-user at the moment.


{{docnav|About FreeCAD|Install on Windows}}

{{languages | {{pl|Feature list/pl}} {{fr|Feature list/fr}} {{se|Feature list/se}} {{ru|Feature list/ru}} {{de|Feature list/de}} }}


<!--T:35-->
[[Category:User Documentation]]
[[Category:User Documentation]]
</translate>

Revision as of 17:25, 6 December 2019

This is an extensive, but not complete, list of features which FreeCAD implements. If you want to look into the future see the Development roadmap for a quick overview of what's coming next. Also, the Screenshots are a nice place to go.

Release notes

Key features

  • A complete Open CASCADE Technology-based geometry kernel allowing complex 3D operations on complex shape types, with native support for concepts like Boundary Representation (brep), Non-uniform rational basis spline (nurbs) curves and surfaces, a wide range of geometric entities, boolean operations and fillets, and built-in support of STEP and IGES formats
  • A full parametric model. All FreeCAD objects are natively parametric, meaning their shape can be based on properties or even depend on other objects. All changes are recalculated on demand, and recorded by an undo/redo stack. New object types can be added easily, and can even be fully programmed in Python.
  • A modular architecture that allows plugin extensions (modules) to add functionality to the core application. An extension can be as complex as a whole new application programmed in C++ or as simple as a Python script or self-recorded macro. You have complete access to almost any part of FreeCAD from the built-in Python interpreter, macros or external scripts, be it geometry creation and transformation, the 2D or 3D representation of that geometry (scenegraph) or even the FreeCAD interface
  • Import/export to standard formats such as STEP, IGES, OBJ, STL, DXF, SVG, STL, DAE, IFC or OFF, NASTRAN, VRML in addition to FreeCAD's native FCStd file format. The level of compatibility between FreeCAD and a given file format can vary, since it depends on the module that implements it.
  • A Sketcher with integrated constraint-solver, allowing you to sketch geometry-constrained 2D shapes. The constrained 2D shapes built with Sketcher may then be used as a base to build other objects throughout FreeCAD.
  • A Robot simulation module that allows you to study robot movements in a graphical environment.
  • A technical drawing module with options for detail views, cross sectional views, dimensioning and others, allowing you to generate 2D views of existing 3D models. The module then produces ready-to-export SVG or PDF files. An older Drawing module with sparse Gui-commands but a powerful Python functionality also exists.
  • A Rendering module that can export 3D objects for rendering with external renderers. It currently only supports povray and LuxRender, but is expected to be extended to other renderers in the future.
  • An Architecture module that allows Building Information Modeling (BIM)-like workflow, with Industry Foundation Classes (IFC) compatibility.
  • A Path module dedicated to mechanical machining for Computer Aided Manufacturing (CAM). Using the Path module you may output, display and adjust the G code used to control the target machine.
  • An Integrated Spreadsheet and an expression parser which may be used to drive formula-based models and organize model data in a central location.

General features:

  • multi-platform. FreeCAD runs and behaves exactly the same way on Windows, Linux, macOS and other platforms.
  • full GUI application. FreeCAD has a complete Graphical User Interface based on the Qt framework, with a 3D viewer based on Open Inventor; allowing fast rendering of 3D scenes and a very accessible scene graph representation.
  • runs as a command line application. In command line mode, FreeCAD runs without its interface but with all its geometry tools. In this mode it has a relatively low memory footprint and can be used, for example, as a server to produce content for other applications.
  • can be imported as a Python module FreeCAD can be imported into any application that can run Python scripts. As in command line mode, the interface part of FreeCAD is unavailable, but all geometry tools are accessible.
  • workbench concept. In the FreeCAD interface, tools are grouped by workbenches. This allows you to display only the tools used to accomplish a certain task, keeping the workspace uncluttered and responsive, and allowing the application to load rapidly.
  • plugin/module framework for late loading of features/data-types. FreeCAD is divided into a core application with modules that are loaded only when needed. Almost all tools and geometry types are stored in modules. Modules behave like plugins; in addition to delayed loading, individual modules can be added to or removed from an existing installation of FreeCAD.
  • parametric associative document objects. All objects in a FreeCAD document can be defined by parameters. Those parameters can be modified and recomputed at any time. Since object relationships are maintained, the modification of one object will automatically propagate to any dependent objects.
  • parametric primitive creation. Primitive objects such as box, sphere, cylinder, etc. can be created by specifying their geometry constraints.
  • graphical modification operations. FreeCAD can perform translation, rotation, scaling, mirroring, offset (either trivial or as described in Jung/Shin/Choi) or shape conversion, in any plane of the 3D space.
  • constructive solid geometry (boolean operations). FreeCAD can do constructive solid geometry operations (union, difference, intersect).
  • graphical creation of planar geometry. Lines, wires, rectangles, b-splines, and circular or elliptic arcs can be created graphically in any plane of the 3D space.
  • modeling with straight or revolved extrusions, sections and fillets.
  • topological components like vertices, edges, wires and planes.
  • testing and repairing. FreeCAD has tools for testing meshes (solid test, non-two-manifolds test, self-intersection test) and for repairing meshes (hole filling, uniform orientation).
  • annotations. FreeCAD can insert annotations for text or dimensions.
  • Undo/Redo framework. Everything in FreeCAD is undo/redoable, with user access to the undo stack. Multiple steps can be undone at one time.
  • transaction oriented. The undo/redo stack stores document transactions, not single actions, allowing each tool to define exactly what must be undone or redone.
  • built-in scripting framework. FreeCAD features a built-in Python interpreter, with an API that covers almost any part of the application, the interface, the geometry and the representation of this geometry in the 3D viewer. The interpreter can run complex scripts as well as single commands; entire modules can be programmed completely in Python.
  • built-in Python console. The Python interpreter includes a console with syntax highlighting, autocomplete and a class browser. Python commands can be issued directly in FreeCAD and immediately return results, permitting script writers to test functionality on the fly, explore the contents of FreeCAD's modules and easily learn about FreeCAD internals.
  • mirrors user interaction. Everything the user does in the FreeCAD interface executes Python code, which can be printed on the console and recorded in macros.
  • full macro recording and editing capabilities. The Python commands issued when the user manipulates the interface can be recorded, edited if needed, and saved to be reproduced later.
  • compound (ZIP based) document save format. FreeCAD documents are saved with a .FCStd extension. The document can contain many different types of information such as geometry, scripts or thumbnail icons. The .FCStd file is itself a zip container; a saved FreeCAD file has already been compressed.
  • fully customizable/scriptable Graphical User Interface. The Qt-based interface of FreeCAD is entirely accessible via the Python interpreter. Aside from simple functions FreeCAD itself provides to workbenches, the entire Qt framework is accessible. The user may perform any operation on the GUI such as creating, adding, docking, modifying or removing widgets and toolbars.
  • thumbnailer. (currently only Linux systems) FreeCAD document icons show the contents of the file in most file manager applications such as Gnome's Nautilus.
  • modular MSI installer. FreeCAD's installer allows flexible installations on Windows systems. Packages for Ubuntu systems are also maintained.

In development

  • An Assembly module that allows one to work with multiple projects, multiple shapes, multiple documents, multiple files, multiple relationships... This module is currently in the planning state.

Extra Workbenches

Power users have created various custom external workbenches.