# FreeCAD

FreeCAD est un logiciel libre et open source, de CAO 3D paramétrique$^,$, publié sous license LGPLv2+.
Il permet d'utiliser la modélisation volumique (ou CSG), la modélisation fonctionnelle (constituée par des fonctions (en) sous-jacentes), et depuis la v.0.17 la modélisation surfacique (ou B-Rep). Ces trois types de modélisation sont entièrement paramétrables.
D'abord destiné aux métiers du génie mécanique, avec la CMAO, FreeCAD s'est ensuite étendu à d'autres branches de l'ingénierie, comme l'architecture, grâce à son module BIM. Il supporte la MEF et peut être utilisé pour l'IAO, la FAO et la GCVP. FreeCAD possède une architecture modulaire et a vocation à devenir un logiciel de CFAO plus généraliste. Grâce à sa nature libre et open-source, les utilisateurs peuvent étendre ses possibilités en ajoutant divers plug-ins gratuits, ou en se servant du langage de programmation Python.

## Genèse du projet

L'histoire du logiciel commence en janvier 2001, lorsque Jürgen Riegel, un informaticien allemand, spécialiste des capteurs 3D et de la reconstruction de surface (des modèles 3D), commence à travailler sur le projet Cas.CADE$^,$. C'est un framework comprenant un noyau de modélisation géométrique. Publié en 2000, sous une licence open source et renommé Open CASCADE, puis Open CASCADE Technology ; ce framework a permis de réaliser un programme de CAO 3D open source, sans réécrire tout le code.
À partir de QSpect, un développement logiciel basé autour d'Open CASCADE, Jürgen Riegel le nomme tout d'abord : GOM ; pour Graphical Object Modeler, avec l'idée d'utiliser Python et Qt. Le 17 mars 2002, le logiciel est enregistré avec son nouveau nom : FreeCAD. Werner Meyer, l'un des collègues allemand qui participait au projet QSpect, est allé chez Imetric. C'est une société qui recherchait un nouveau logiciel pour ses capteurs 3D. En 2005, elle fait don de la majeure partie de son module de maillage, à la communauté Open Source et utilise FreeCAD, comme base logicielle pour son système de capteurs. Depuis ce temps, Werner Meyer est un développeur très actif de FreeCAD. En 2008, Yorik van Havre, un architecte belge, se joint au duo et commence à développer le module architecture, ainsi que la documentation. D'autres sont venus renforcer cette équipe par la suite$^,$.

## Caractéristiques générales

FreeCAD est un modeleur à conception paramétrique, qui propose des outils similaires à CATIA, NX, SolidWorks et Solid Edge. Pour l'instant, il n'est cependant pas possible d'utiliser l'ingénierie concourante, comme sur les gros logiciels de GCVP ; où plusieurs concepteurs travaillent simultanément sur le même document. C'est par contre possible pour la documentation collaborative, ou pour le développement du logiciel sur Github.
FreeCAD utilise des bibliothèques logicielles open-source dans le domaine des sciences numériques comme Open CASCADE Technology$^,$, un puissant noyau géométrique (c'est le kernel, le cœur de FreeCAD). Ce programme dispose aussi, d'un modèle de représentation de scènes 3D, conforme au format Open Inventor et fourni par Coin3D (en). L'interface graphique est bâtie sur Qt et FreeCAD fonctionne donc de façon identique sur les plateformes Windows, macOS et GNU/Linux.
L'architecture logicielle modulaire de FreeCAD, lui permet de se développer, sans devoir modifier les couches profondes de l'application ; les différents ateliers (ou modules) du programme étant situés à un niveau plus superficiel. Dans la version 0.18, ces différents ateliers sont une vingtaine et ils possèdent chacun des fonctions spécifiques.
Depuis 2015, FreeCAD intègre un module « OpenSCAD » toujours en développement, destiné justement à offrir une interopérabilité avec le logiciel libre OpenSCAD. Réciproquement, FreeCAD peut aussi être utilisé comme bibliothèque par d'autres programmes.
Comme de nombreux modeleurs CAO 3D modernes, FreeCAD possède un composant 2D pour faciliter la conversion de modèles 3D en dessin 2D ; l'atelier Tech Draw introduit avec la v.0.17 (auparavant l'atelier Drawing) se chargeant de cette fonction. Toutefois le dessin 2D direct (comme AutoCAD) n'est pas la raison d'être de ce logiciel, pas plus que l'animation ou la manipulation de modèles 3D, comme Blender, Maya ou Cinema 4D qui utilisent la modélisation polygonale. Le module Mesh (maillage) de FreeCAD lui permet cependant de s'adapter à de tels environnements.
Des efforts sont faits pour étendre FreeCAD dans des secteurs comme l'architecture, avec l'ajout de fonctionnalités BIM au module Arch, ou en direction de l'électrotechnique et de la construction.
FreeCAD intègre un module de calcul, utilisant la méthode des éléments finis, basée sur le logiciel Calculix.
Au-delà des fonctionnalités proposées par l'interface graphique, FreeCAD propose à ses utilisateurs avancés de piloter et de personnaliser le logiciel via un interpréteur et une API Python dédié. L'utilisation de la plateforme FreeCAD par ce biais nécessite des connaissances en programmation, mais la documentation officielle met à disposition un tutoriel de découverte du langage Python, ainsi que des exemples de scripts pour se familiariser avec cet environnement.
Depuis fin 2020, le moteur de recherche visuel (en) pour les modèles 3D de CADENAS, appelé 3DfindIT.com, est intégré à FreeCAD.

## Conception paramétrique
### Modélisation volumique

Dans la modélisation volumique traditionnelle (ou CSG), on utilise des primitives simples, comme les cubes, les sphères et les cylindres ; que l'on va transformer à l'aide d'opérations booléennes, pour créer des solides plus complexes. Dans l'animation de gauche, réalisée avec le module Part (atelier pièce) du logiciel, une sphère et un cube sont intersectés (common dans l'arborescence), ce qui produit un nouveau volume. A ce nouveau volume, on va soustraire (cut dans l'arborescence) trois cylindres précédemment fusionnés (fusion dans l'arborescence).
Les primitives doivent être placées précisément les unes par rapport aux autres pour obtenir le résultat escompté. Cependant du fait de la conception paramétrique, il est possible à tout moment, de modifier les positions relatives des primitives, en augmentant ou en diminuant l'interpénétration des volumes. On peut aussi faire varier les angles, ou les dimensions (longueur, largeur, profondeur) de ces primitives.
C'est d'ailleurs ce qui est fait avec les diamètres des trois cylindres, qui sont agrandis à deux reprises après leur fusion. Dans cette animation GIF, les rotations sont réalisées sur les solides (et non sur la vue 3D) par incrément successif, à partir de l'onglet « Propriété » qui permet d'éditer les paramètres (non visibles dans l'animation pour éviter la stroboscopie des images). On peut observer en haut à gauche, un onglet intitulé « Modèle » et en dessous un autre intitulé « Etiquettes & attributs ». C'est là que se trouve l'arbre de construction (ou arborescence), contenant les primitives et les opérations booléennes effectuées.

### Modélisation fonctionnelle

Dans la modélisation fonctionnelle ou modélisation directe, il n’est plus nécessaire de s’appuyer sur des opérations booléennes. En CAO, une fonction est une opération qui modifie la géométrie d’un objet. Des fonctions spécifiques sont déjà intégrées à certains modules ou ateliers. Nous avons par exemple les fonctions « chanfrein » et « congé » dans le module Part (l’atelier Pièce) qui permettent de travailler directement sur la pièce, comme si on l’usinait en temps réel.
Il existe toutes sortes de fonctions, elles peuvent être additive, soustractive, basée sur un profil ou sur des primitives géométriques (comme les solides de l’atelier Part utilisés en CSG), etc. Au fur et à mesure que de nouvelles fonctions sont ajoutées au modèle, chaque fonction s’appuie sur la fonction précédente. Là encore, on retrouve l’intérêt de la conception paramétrique, les fonctions étant listées de façon séquentielle dans l’arborescence du modèle, une modification en amont est répercutée en aval et finalement sur l’objet$^,$.
Dans l’animation GIF de droite, un support mécanique est réalisé d’après un tutoriel de HarryGeier ; en utilisant l'atelier PartDesign (conception de pièces) et Sketcher (esquisseur). Une esquisse « variationnelle » en 2D, constituant la fonction de base de notre objet (ou fonction sous-jacente) est d’abord dessinée, puis contrainte à l'aide de paramètres et enfin extrudée. Une nouvelle esquisse, créée sur la face arrière va permettre de réaliser une cavité ; puis nous allons rendre la pièce symétrique, grâce à une fonction de symétrie intégrée à l’atelier. Une autre esquisse va servir pour une extrusion et la pièce va à nouveau être rendue symétrique. Enfin une dernière cavité, créée à partir de deux nouvelles esquisses sur la face avant et arrière, va donner à ce support mécanique son aspect final.
La modélisation fonctionnelle (ou modélisation directe) permet de réaliser beaucoup plus rapidement que la modélisation volumique traditionnelle, des pièces relativement complexes. Il est aussi plus facile et plus direct de modifier ou d'éditer les paramètres qui contraignent les esquisses. Cependant, les corps créés avec l'atelier PartDesign, peuvent être soumis à un problème de dénomination topologique.

## Formats de fichiers pris en charge

FreeCAD utilise son propre format de fichier, le FreeCAD Standard file format (.FCStd). Il s'agit d'un fichier zip standard qui contient des fichiers dans une certaine structure. Les fichiers Document.xml contiennent des objets définis de manière géométrique et paramétrique mais sans leur représentation visuelle ; contrairement à ceux du type GuiDocument.xml qui sont leurs équivalents GUI et sont plus complets.
En plus du format développé par FreeCAD, les documents peuvent être exportés et importés dans les formats de fichier suivants : DXF, SVG, VRML, STEP, IGES, STL, OBJ, PLY, DAE (Collada), SCAD (OpenSCAD), IV (Inventor) et IFC.

### Prise en charge du DWG

La prise en charge par FreeCAD de l'important format de fichier DWG est problématique, en raison de l'incompatibilité des licences logicielles avec la bibliothèque GNU LibreDWG. Cette dernière a initié une véritable alternative libre, à la bibliothèque Open Design Alliance, à « code source disponible » (avec plus tard les convertisseurs de fichier Teigha et ODA) et avec une licence GPLv3. Comme FreeCAD (et aussi LibreCAD) ont des dépendances avec Open CASCADE Technology, qui avant la version 6.7.0 n'était compatible qu'avec la GPLv2, ils ne pouvaient pas utiliser la bibliothèque GNU LibreDWG car les licences GPLv2 et GPLv3 sont essentiellement incompatibles (en)$^,$. Open CASCADE Technology (OCCT) est contactée par l'équipe Debian en 2009 et en 2012, il est envisagé une double licence concernant la bibliothèque d'OCCT ; mais finalement le mouvement est reporté. Toujours en 2012, une demande est adressée à la FSF pour un renouvellement de licence (en) de GNU LibreDWG en GPLv2 ou LGPLv3, mais cette dernière est rejetée.
Depuis 2014 avec la version 0.14 de FreeCAD, incluant la nouvelle version LGPL d'Open Cascade, la version sous licence BSD de Coin3D et la suppression de PyQT, FreeCAD est désormais dépourvu de GPL. Cependant, LibreDWG n'est pas adopté. Le logiciel est capable d'importer et d'exporter un sous-ensemble limité du format DWG via le convertisseur ODA (l'ancienne bibliothèque OpenDWG).

## FAO

Un module de FreeCAD, l'atelier Path, est disponible pour produire des instructions en G-Code, pour les machines à commande numérique, comme les fraiseuses et les tours CNC, pour la technologie soustractive, ou les imprimantes 3D pour la technologie additive. Cet atelier offre une API de script Python étendue et permet d'étendre les possibilités de la FAO.
FreeCAD est testé et utilisé par des Fablabs, comme celui de Carrefour numérique$^2$ de la Cité des sciences et de l’industrie et différents sites de « culture maker », ou d'impression 3D, comme 3Dnatives.
Des services d'impression 3D en ligne, comme Sculpteo, mettent à disposition des tutoriels pour utiliser FreeCAD au sein de leurs services; ce qui permet dans le cas de Sculpteo, d'avoir accès à des pièces issues de l'impression 3D métal lors de procédés FSL, ou SLM.

## Modèle de développement

Le développement de FreeCAD repose sur un travail collaboratif, lancé à son origine par Jürgen Riegel en janvier 2001. L'équipe de base s'est ensuite sensiblement élargie, mais il n'y a sans doute pas plus d'une dizaine de développeurs en juin 2020 et aucun à plein temps sur le logiciel. Comme pour d'autres projets libre et Open source, chacun peut venir contribuer d'une manière ou d'une autre, en fonction de son temps et de ses compétences. Cela peut être la programmation, la documentation, la traduction ou des dons. Il n'existe pas en 2021 de fondation FreeCAD, à la différence de Blender qui en possède une, ou de libreOffice dont le développement est soutenu par The Document Foundation. Cependant, FreeCAD possède un compte Liberapay, sur lequel l'argent reçu est réparti équitablement entre les différents développeurs.
Depuis 2016, FreeCAD participe au Google Summer of Code, avec BRL-CAD, OpenSCAD, LibreCAD (les quatre étant des logiciels de CAO libres) et Slic3r (pour la FAO). Ces événements permettent un effort combiné et se déroulent au sein de l'organisation parapluie de BRL-CAD, spécialement conçue pour l'occasion. Cela renforce aussi, l’interopérabilité entre ces logiciels de CAO libre et open-source.
Une fondation ou une organisation parapluie permanente permettrait à ces logiciels de se développer de manière plus « industrielle ». Cela permettrait de décharger les développeurs, de toutes les tâches de maintenance administrative. Une organisation de ce type, peut en outre, collecter des fonds émanant d'entreprises et les redistribuer aux développeurs, suivant des schémas définis de manière transparente. Réciproquement, les entreprises peuvent intégrer les dons versés, à leurs bilans.
Depuis fin 2019, le site web de FreeCAD est hébergé par DigitalOcean (en)$^,$, tandis que le code source et les dépôts logiciels se trouvent sur GitHub. Cela permet lors du développement, d'utiliser une forme d'ingénierie concourante grâce au logiciel de gestion de versions Git. Le site officiel est traduit en plusieurs langues via la plateforme collaborative Crowdin (en), tout comme les menus déroulants du logiciel.

## Promotions lors d'évènements

FreeCAD est présenté lors du FISL16 (en) en 2015, à Porto Alegre, ainsi que lors du Libre Graphics Meeting de Londres en 2016. Ces deux salons peuvent regrouper à la fois des développeurs et des utilisateurs. En 2020, c'est lors du FOSDEM à Bruxelles, que deux de ces développeurs, Yorik Van Havre et Brad Collette effectuent la présentation.

## Popularité

Avec l'essor des imprimantes 3D bon marché auprès du grand public, FreeCAD s'est popularisé davantage au sein de la « culture maker ». La chose est facilitée par le côté libre et open source du logiciel. La personnalisation de l'interface, l'ergonomie, s'améliorant à chaque version, permettent une meilleure prise en main du logiciel par l'utilisateur final. La documentation officielle est importante et de nombreux tutoriels YouTube sont également à disposition.
Le logiciel est testé par des sites web du « monde Linux », comme Full Circle Magazine, linuxfr.org en 2017 ou Framboise 314 en 2019. FreeCAD est utilisé dans le monde universitaire par l'intermédiaire de France Université Numérique, lors du MOOC (le FUN) de l'EESAB de Rennes en 2020 et de l'IMT Atlantique.
En septembre 2020, la licence logicielle (d'utilisation personnelle) de Fusion 360 d'Autodesk, un logiciel de CAO propriétaire comparable à Inventor, change$^,$. Cela a rendu l'utilisation de Fusion moins avantageuse et aurait contribué à la migration d'utilisateurs frustrés vers FreeCAD.
D'après 3Dnatives, la communauté FreeCAD aurait compté en juillet 2020 plus de 25 000 membres. D'après SimilarWeb, entreprise qui fournit des services d'audience de site Web, le site officiel de FreeCAD aurait été visité 650 000 fois en juin 2020 et 865 410 fois en octobre 2020.

## Documentation

La documentation officielle de FreeCAD, est organisée sous forme de wiki, animé par le moteur MediaWiki. Ce qui implique qu'elle repose sur un travail collaboratif. C'est à partir de l'anglais qui est la langue source, que toutes les modifications sont effectuées. Tout ajout ou retrait doit d'abord être fait en anglais et c'est ensuite que l'on peut effectuer les traductions vers les autres langues. De cette manière, on évite d'avoir des documentations divergentes, entre les différentes langues, ce qui rendrait la compréhension du logiciel plus difficile. C'est une différence avec wikipédia ou chaque version linguistique de l'encyclopédie, peut évoluer de manière indépendante sans que cela ne pose de problèmes.
En mai 2021, ce wiki très fourni contient 1 459 pages pour la documentation utilisateurs. 97 pages supplémentaires sont destinés aux « utilisateurs expérimentés » et permettent notamment d'apprendre à utiliser des scripts Python$^,$. 124 autres pages sont consacrées plus spécifiquement aux développeurs.
Il existe aussi un manuel, sous forme de livre électronique, publié sous licence Creative Commons 4.0, qui peut être plus adapté aux débutants.
Dans la documentation, le français est une des langues les plus traduites et Yorik Van Havre un des principaux développeurs, est francophone.

## Historique des versions

* Section des fichiers GitHub sur : github.com/FreeCAD/FreeCAD.
* Section des anciens fichiers SourceForge sur : (sourceforge.net/projects/free-cad.)
| Versions | Date de sortie | Informations |
| Ancienne version, plus prise en charge : 0.0.1 | 29 octobre 2002 | Version initiale |
| Ancienne version, plus prise en charge : 0.1 | 27 janvier 2003 | |
| Ancienne version, plus prise en charge : 0.2 | 9 août 2005 | |
| Ancienne version, plus prise en charge : 0.3 | 31 octobre 2005 | |
| Ancienne version, plus prise en charge : 0.4 | 15 janvier 2006 | |
| Ancienne version, plus prise en charge : 0.5 | 5 octobre 2006 | |
| Ancienne version, plus prise en charge : 0.6 | 27 février 2007 | |
| Ancienne version, plus prise en charge : 0.7 | 24 avril 2009 |
| Ancienne version, plus prise en charge : 0.8 | 10 juillet 2009 | |
| Ancienne version, plus prise en charge : 0.9 | 16 janvier 2010 | |
| Ancienne version, plus prise en charge : 0.10 | 24 juillet 2010 | |
| Ancienne version, plus prise en charge : 0.11 | 3 mai 2011 | |
| Ancienne version, plus prise en charge : 0.12 | 20 novembre 2011 | |
| Ancienne version, plus prise en charge : 0.13 | 29 janvier 2013 | |
| Ancienne version, plus prise en charge : 0.14 | 1er juillet 2014 | Changement de License pour LGPLv2+ |
| Ancienne version, plus prise en charge : 0.15 | 8 avril 2015 | Support de l'Oculus Rift |
| Ancienne version, plus prise en charge : 0.16 | 18 avril 2016 | |
| Ancienne version, plus prise en charge : 0.17 | 6 avril 2018 | Roland |
| Ancienne version, plus prise en charge : 0.18 | 12 mars 2019 | |
| Ancienne version, plus prise en charge : 0.19 | 20 mars 2021 | Notes de version$^,$ |
| Ancienne version, plus prise en charge : 0.20 | 14 juin 2022 | Notes de version |
| Ancienne version, plus prise en charge : 0.21.1 | 31 août 2023 | Notes de version |
| Dernière version stable: 1.0 | 18 novembre 2024 | Notes de version |
| Légende :Ancienne versionAncienne version, toujours prise en chargeDernière version stableDernière version avancéeVersion future |||

## Galerie

* Moteur rotatif Clerget 9B par WilliamJ.III.
* Moteur par bejant.
* Train par wieszak.
* Arduino (import Eagle) par marmni.
* MEF sur un ouvre bouteille par Tux Lab.
* Vue extérieure d'une maison par rockn.

## Lecture complémentaire

* (en) Brad Collette, FreeCAD for Inventors, Ebook Rakuten Kobo, 2018, 78 p. par sliptonic un des membres de l'équipe principale de développeurs.