Introduce a new concept of transaction ID. Each transaction must be unique inside the document. Multiple transactions from different documents can be grouped together with the same transaction ID. This makes it possible to undo/redo single operation that contains changes from multiple documents due to external linking. Application: * get/set/closeActiveTransaction() is used to setup potential transactions with a given name. The transaction is only created when there is actual changes. If objects from multiple documents are changed under the same active transaction, they will have the same trasnaction ID, and can be undo/redo togtether later. * signalUndo/signalRedo, new signals triggered once after an undo/redo operation. Unlike signalUndo/RedoDocument, these signals will only be triggered once even if there may be multiple documents involved during undo/redo. * signal(Before)CloseTransaction, new signals triggered before/after an actual transaction is created or aborted. AutoTransaction: * Helper class to enable automatic management of transactions. See class document for more details. This class will be used by Gui::Command in later patches to allow better automation of transactions in command. Document: * open/commit/abortTransaction() are now redirected to call Application::get/set/closeActiveTransaction() instead. * _openTransaction() is added to do the real creation of transaction. * _checkTransaction() is modified to create transaction on actual change of any property. * getTransactionID() is used to find out the position of a transaction with a given ID. When triggering undo in external document, it may be necessary to perform multi-step undo/redo in order to match for the transaction ID. Transaction/TransactionObject: * Various changes for the new transaction ID concept. * Support undo/redo add/remove dynamic property
Your own 3D parametric modeler
Website • Documentation • Forum • Bug tracker • Git repository
Overview
-
Freedom to build what you want FreeCAD is an open-source parametric 3D modeler made primarily to design real-life objects of any size. Parametric modeling allows you to easily modify your design by going back into your model history and changing its parameters.
-
Create 3D from 2D & back FreeCAD allows you to sketch geometry constrained 2D shapes and use them as a base to build other objects. It contains many components to adjust dimensions or extract design details from 3D models to create high quality production ready drawings.
-
Designed for your needs FreeCAD is designed to fit a wide range of uses including product design, mechanical engineering and architecture. Whether you are a hobbyist, a programmer, an experienced CAD user, a student or a teacher, you will feel right at home with FreeCAD.
-
Cross platform FreeCAD runs on Windows, Mac and Linux
-
Underlying technology
- OpenCASCADE A powerful geometry kernel, the most important component of FreeCAD
- Coin3D library Open Inventor-compliant 3D scene representation model
- Python FreeCAD offers a broad Python API
- Qt Graphical User Interface built with Qt
Installing
Precompiled (installable) packages are available for Windows and Mac on the Releases page.
On most Linux distributions, FreeCAD is directly installable from the software center application.
Other options are described at the wiki Download page.
Build Status 
| Master | 0.18 | Translation |
|---|---|---|
Compiling
Compiling FreeCAD requires installation of several libraries and their development files such as OpenCASCADe, Coin and Qt, listed in the pages below. Once this is done, FreeCAD can be simply compiled with cMake. On Windows, these libraries are bundled and offered by the FreeCAD team in a convenient package. On Linux, they are usually found in your distribution's repositories, and on Mac OSX and other platforms you will usually need to compile them yourself.
The pages below contain up-to-date build instructions:
Usage & Getting help
The FreeCAD wiki contains documentation on general FreeCAD usage, Python scripting, and development. These pages might help you get started:
The FreeCAD forum is also a great place to find help and solve specific problems you might encounter when learning to use FreeCAD.
