New homepage

Welcome!
This is the documentation website of FreeCAD. It is written by the community of FreeCAD users and developers, and is continuously being updated and extended. It might therefore contain errors, inaccuracies, or articles that describe functionality that is not yet available on the version you have installed. We try our best to fix these and make this documentation better, don't hesitate to help and contribute!

Discovering FreeCAD


FreeCAD is an open-source general purpose parametric 3D CAD modeler, made for product design, that is, anything you plan to build in the real world. It is mainly made for two categories of users: Professional users from the fields of mechanical engineering and product design but also from a wider range of uses around engineering, such as architecture or other engineering specialties, and also hobbyist and casual users who need a tool to model objects they want to build or 3D print. It can also be used by developers who wish to build their own application using FreeCAD as a base.

Modeling for product design is usually a complex task, where precision is important. FreeCAD is therefore also a complex tool with a fair learning curve. This documentation will hopefully help to make this learning phase an interesting and enjoyable experience.

Discovering and installing FreeCAD

 * About FreeCAD: A better and deeper description of the FreeCAD project and application
 * Features list: A list of the main features you will find in FreeCAD CLEANUP
 * Screenshots: A collection of screenshots showing how the FreeCAD application looks like CLEANUP
 * Download instructions, or the best ways to get or update FreeCAD depending on your platform
 * Detailed installation instructions for Windows, Linux and Mac
 * FAQ: The most frequent asked questions. This will help you with frequent problems and questions

First steps

 * Getting started: A quick overview of the FreeCAD application and its typical workflows
 * Navigating in the 3D space: A complete description of the different ways to use the mouse in FreeCAD
 * Working with parametric objects CLEANUP
 * Import / Export: How importing and exporting to different file formats work in FreeCAD

Working with workbenches
The FreeCAD interface is based on the concept of workbenches. Workbenches are sets of tools typically designed for a specific task. Switching between these workbenches changes several parts of the FreeCAD interface such as toolbars and menus. Most of the tasks you will do in FreeCAD will take place inside one or more of these workbenches.

[[Image:Workbench_Part.png|16px]] Part workbench
The Part Workbench provides basic tools for working with solid parts: primitives, such as cube and sphere, and simple geometric operations and boolean operations. The Part workbench provides the foundation of FreeCAD's geometry system, and is used by almost all other workbenches.

[[Image:Workbench_Draft.png|16px]] Draft workbench
The Draft Workbench provides tools to do basic 2D CAD drafting tasks: lines, circles, etc... and also provides generic handy tools that work with all FreeCAD objects, such as move, rotate or scale. It also provides several drawing aids, such as grid and snapping.

[[Image:Workbench_Mesh.png|16px]] Mesh workbench
The Mesh workbench is dedicated to working with triangular meshes. Although these are not the primary type of geometry to work with in FreeCAD, meshes have a lot of uses, and are fully supported. This workbench contain many tools to work with, fix and analyze meshes.

[[Image:Workbench_Sketcher.png|16px]] Sketcher workbench
The Sketcher contains tools to build and edit constraint-driven 2D sketches. These are the base blocks on which you can build complex parametric geometry.

[[Image:Workbench_PartDesign.png|16px]] Part design workbench
The Part design workbench contains advanced tools to build solid parts from sketches. It also contains all the tools from the sketcher, and only produces solid geometry.

[[Image:Arch.png|16px]] Arch workbench
The Arch workbench contains tools to work with BIM projects (civil engineering and architecture). It also contains all the tools from the Draft workbench.

[[Image:Workbench_Drawing.png|16px]] Drawing workbench
The Drawing workbench handles the creation and manipulation of 2D drawing sheets, used for displaying views of your 3D work in 2D. These sheets can then be exported to 2D applications or printed.

[[Image:Raytracing.png|16px]] Raytracing workbench
The Raytracing workbench offers tools to interface with external renderers such as povray or luxrender. Right from inside FreeCAD, this workbench allows you to produce high-quality renderings from your models.

[[Image:Workbench_Mesh.png|16px]] FEM workbench
The Fem workbench permits the performing of pre- and post-processing FEM calculations and display the results graphically

[[Image:Workbench_OpenSCAD.png|16px]] OpenSCAD workbench
The OpenSCAD workbench offer tools for interoperability with OpenSCAD and repairing CSG model history

[[Image:Workbench_Image.png|16px]] Image workbench
The Image workbench features tools to work with bitmap images, and import bitmap images as planes in the FreeCAD document, so they can be used for tracing over.

[[Image:Workbench_Robot.png|16px]] Robot workbench
The Robot workbench provides a complete interface to simulate and study robot movements

FreeCAD-Ship-Ico.png Ship workbench
The Ship workbench is a suite of tools to create and work with ship hulls.

Plot_Save.png Plot workbench
The Plot workbench allows to edit and save output plots created from other modules and tools.

Spreadsheet Create.png Spreadsheet workbench
The Spreadsheet workbench permits the creation and manipulation of spreadsheet data, that can be extracted from FreeCAD models.

Customizing FreeCAD
The workbench system is not to be considered as a limitation to your freedom, but simply a way to organize large quantities of tools and offer different workflows inside a single application. They are however extensively customizable, so you can tailor your interface to your preferences and needs.


 * Interface Customization: How to customize the interface, workbench toolbars and keyboard shortcuts.
 * User preferences: Understand how those are organized CLEANUP
 * Macros: How to create your own tools in FreeCAD
 * Macros recipes: Add tools created by FreeCAD users to your installation

Python scripting
Strong support to python scripting is one of the main strengths of FreeCAD. Almost any part of the FreeCAD application is accessible to python scripting: the core application, the interface, the 3D view, and almost all of the modules functionality. Python scripting can be used from the FreeCAD python console, from macros, from external scripts or even from external applications, FreeCAD being importable as a python module.

The basics

 * Introduction to Python: See also other Python tutorials at the bottom of this page
 * The FreeCAD Document: Description of the FreeCAD document structure CLEANUP
 * FreeCAD Scripting Basics: The base concepts of FreeCAD scripting
 * Gui Command: Adding custom commands to the GUI
 * Using mixed Units in FreeCAD
 * The Coin/Inventor scenegraph: How the FreeCAD scene representation works
 * Pivy: How to access and modify the scenegraph
 * PyQt: How to access the interface, and modify its contents
 * Using the FreeCAD GUI in another Qt application with PyQt
 * Scripted objects: How to make 100% Python-scripted objects in FreeCAD

Modules

 * Python API reference: The auto-generated python API reference of FreeCAD
 * The Builtin modules contain the general functionality such as opening and saving files
 * Mesh Scripting: How to interact with the Mesh Module
 * Part scripting: How to interact with the Part Module
 * PythonOCC: How to unleash the whole Open CASCADE power
 * Mesh to Part: Converting between object types
 * Drawing Module: Automating the 3D-to-2D process

Examples

 * Code snippets : A collection of pieces of FreeCAD Python code, to serve as ingredients in your scripts...
 * Line drawing function: How to build a simple tool to draw lines
 * Dialog creation: How to construct dialogs with Qt designer, and use them in FreeCAD
 * Embedding FreeCAD: How to import FreeCAD as a Python module in other applications
 * FreeCAD vector math library : A couple of handy functions to manipulate FreeCAD vectors. This library is part of the Draft module.

Development
The following articles will be useful to you if you wish to look deeper into the FreeCAD source code, modify it, compile FreeCAD yourself on your machine, or start developing another application using FreeCAD as a base.

Development documentation

 * Source code management
 * Find assistance when you have a problem or think you may have found a bug
 * Compiling on Windows
 * Compiling on Unix
 * Compiling on Mac
 * Licence details about the FreeCAD licences
 * Third Party Libraries
 * Third Party Tools
 * Start up and Configuration
 * Source documentation
 * The FreeCAD Build Tool
 * Adding an application module to FreeCAD
 * Debugging FreeCAD
 * Testing FreeCAD
 * Add Features to FreeCAD or a Workbench
 * Branding or how to give FreeCAD a unique look
 * Artwork we made for FreeCAD, that you can freely reuse
 * Translating FreeCAD
 * Extra python modules, or how to extend python functionality within FreeCAD

Reference

 * Commands reference: The complete list of FreeCAD commands
 * Tutorials: All available FreeCAD tutorials
 * Python API reference: The auto-generated python API reference of FreeCAD
 * Macro recipes