Présentation de FreeCAD

FreeCAD, un logiciel de conception assistée par ordinateur (CAD) paramétrique, a été compilé pour WebAssembly et peut désormais être exécuté dans un navigateur. Cette réalisation a nécessité environ 4 jours de travail et a été rendue possible grâce à l'utilisation de Fable, un outil de compilation pour WebAssembly.

Architecture et fonctionnement

FreeCAD est une plate-forme qui repose sur plusieurs composants, notamment OpenCASCADE (OCCT) pour la géométrie, Coin3D pour la visualisation 3D, CPython pour l'exécution de code Python, et PySide6 pour les liaisons Qt. La compilation statique de ces composants en un seul module WebAssembly de 196 Mo a été nécessaire pour permettre l'exécution de FreeCAD dans un navigateur.

Le processus de compilation a nécessité l'utilisation de Qt 6.11 compilé pour WebAssembly avec JSPI (JavaScript Promise Integration) et des exceptions WebAssembly natives, ainsi que des préfixes statiques pour OCCT, CPython, ICU, Boost, Xerces, {fmt} et yaml-cpp.

Implémentation technique

L'implémentation de FreeCAD dans le navigateur a nécessité la résolution de plusieurs problèmes techniques, notamment la gestion des dialogues modaux, la suspension de la pile WebAssembly, et la mise en œuvre d'un émulateur de fonctions fixes pour OpenGL.

WasmGLFixedFunc

est un exemple de code qui a été utilisé pour implémenter l'émulateur de fonctions fixes pour OpenGL.

Limites et perspectives

L'exécution de FreeCAD dans un navigateur ouvre de nouvelles perspectives pour la conception assistée par ordinateur en ligne, mais soulève également des questions sur les limites techniques et les performances. Les prochaines étapes consisteront à optimiser les performances et à résoudre les problèmes de compatibilité avec les différents navigateurs.