Feature list

From FreeCAD Documentation
Revision as of 01:01, 1 January 2019 by Garya (talk | contribs) (capitalization tweak)
Jump to navigation Jump to search
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎hrvatski • ‎italiano • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎svenska • ‎čeština • ‎български • ‎русский • ‎українська • ‎中文 • ‎中文(中国大陆)‎ • ‎中文(台灣)‎ • ‎日本語 • ‎한국어

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

  • Feature3.jpg
    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.
  • Feature4.jpg
    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
  • Feature7.jpg
    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.
  • Feature9.jpg
    A Robot simulation module that allows you to study robot movements in a graphical environment.
  • Feature8.jpg
    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.
  • Feature-raytracing.jpg
    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.


General features:

  • FreeCAD is multi-platform. It runs and behaves exactly the same way on Windows, Linux and macOS platforms.
  • FreeCAD is a 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.
  • FreeCAD also runs as a command line application with a relatively low memory footprint. In command line mode, FreeCAD runs without its interface but with all its geometry tools. In this mode it can be used, for example, as a server to produce content for other applications.
  • FreeCAD can be imported as a Python module inside 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.
  • FreeCAD uses a 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.
  • FreeCAD uses a 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.
  • FreeCAD has 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.
  • FreeCAD has parametric primitive creation for primitive objects such as box, sphere, cylinder, etc..
  • FreeCAD has graphical modification operations such as translation, rotation, scaling, mirroring, offset (either trivial or as described in Jung/Shin/Choi) or shape conversion, in any plane of the 3D space.
  • FreeCAD has graphical creation of planar geometry such as lines, wires, rectangles, b-splines, and circular or elliptic arcs in any plane of the 3D space.
  • FreeCAD allows modeling with straight or revolved extrusions, sections and fillets.
  • FreeCAD has topological components like vertices, edges, wires and planes (also via Python scripting).
  • FreeCAD has testing and repairing tools for meshes: solid test, non-two-manifolds test, self-intersection test, hole filling and uniform orientation.
  • FreeCAD has annotations for text or dimensions.
  • FreeCAD has an Undo/Redo framework. Everything is undo/redoable, with user access to the undo stack. Multiple steps can be undone at one time.
  • FreeCAD is transaction oriented. The undo/redo stack stores document transactions, not single actions, allowing each tool to define exactly what must be undone or redone.
  • FreeCAD has a 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.
  • FreeCAD has a built-in Python 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.
  • FreeCAD mirrors user interaction 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.
  • FreeCAD has 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.
  • FreeCAD uses a 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.
  • FreeCAD has a 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.
  • FreeCAD includes a thumbnailer (currently only Linux systems). FreeCAD document icons show the contents of the file in most file manager applications such as Gnome's Nautilus.
  • FreeCAD has a modular MSI installer allowing flexible installations on Windows systems. Packages for Ubuntu systems are also maintained.

In development

  • Feature-assembly.jpg
    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.