# Langages de développement du logiciel AutoCAD **Category:** [AutoCAD](https://dessein-tech.com/c/autocad/9) **Created:** 2025-02-24 20:21 UTC **Views:** 77 **Replies:** 0 **URL:** https://dessein-tech.com/t/langages-de-developpement-du-logiciel-autocad/2951 --- ## Post #1 by @Patrick # Langages de développement du logiciel AutoCAD : une analyse technique approfondie Depuis sa création en 1982, l’architecture logicielle d’AutoCAD a été façonnée par des choix technologiques stratégiques, reflétant l’évolution des paradigmes de programmation et des contraintes matérielles. Contrairement aux langages de script destinés aux utilisateurs (AutoLISP, VBA), le développement du cœur d’AutoCAD repose sur des langages systèmes optimisés pour les performances et la portabilité. ![AutoCad_new_logo.svg|690x216](upload://gV6nst5fkR5dKW8LYaJGo8IwZR1.png) ## L’ère fondatrice : le langage C (1982–1990) ## L’architecture initiale en C pur Le code source originel d’AutoCAD a été intégralement écrit en **C**, un choix dicté par trois impératifs techniques des années 1980 : 1. **Portabilité** : devoir fonctionner sur 11 plateformes différentes (UNIX, DEC VAX, IBM PC, etc.) 2. **Performance** : exploitation optimale des ressources limitées des machines 16/32 bits 3. **Maintenabilité** : structuration modulaire facilitant les adaptations spécifiques à chaque OS Cette base C incluait des mécanismes bas niveau pour : * La gestion mémoire manuelle (allocations dynamiques via `malloc()`/`free()`) * L’abstraction des périphériques d’entrée/sortie (souris, tablettes numériques) * Le rendu graphique via des appels directs au matériel (sans API unifiée) Un exemple concret se trouve dans le traitement des entités graphiques, stockées sous forme de structures C imbriquées permettant un accès rapide aux coordonnées et attributs[3](https://fr.wikipedia.org/wiki/AutoCAD)[6](https://georezo.net/forum/viewtopic.php?pid=50977). ## Transition vers le C++ orienté objet (1990–2000) ## L’introduction progressive des classes C++ Avec AutoCAD R12 (1992), Autodesk entame une refonte architecturale majeure en intégrant le **C++**, notamment pour : * L’encapsulation des données via des classes (ex : `AcDbObject`) * L’héritage polymorphe pour les entités dérivées (lignes, cercles, blocs) * La gestion des exceptions via `try`/`catch` pour la stabilité Cette transition s’est opérée par étapes : 1. Compilation hybride C/C++ avec des wrappers objet autour des fonctions C 2. Réécriture complète des modules critiques (base de données DWG, moteur de rendu) 3. Adoption des templates STL pour les conteneurs de données post-1998 Le module **ObjectARX** (1997), écrit en C++, illustre cette évolution avec son système de classes runtime permettant l’extension dynamique via des DLL[4](https://geospatialfrance.typepad.com/geospatialfrance/2009/11/langage-developper-outils-autodesk.html)[6](https://georezo.net/forum/viewtopic.php?pid=50977). ## L’intégration du .NET Framework (2000–2010) ## Hybridation C++/C# pour l’interface utilisateur La version AutoCAD 2004 marque un tournant avec l’adoption du framework **.NET** pour : * L’interface graphique WPF (Windows Presentation Foundation) * L’interopérabilité COM entre composants C++ et C# * La gestion des événements via des délégués managés L’architecture devient alors hybride : * **Noyau** : 85% en C++ natif (optimisations SSE, multithreading) * **Couche UI** : 15% en C# (rubans, palettes d’outils, boîtes de dialogue) * **Pont interlangage** : Marshalling personnalisé pour les appels entre mondes managé/natif Cette période voit aussi l’apparition de compilateurs cross-platform (gcc, clang) pour les versions Linux/Mac, bien que le code reste majoritairement en C++ ISO[5](https://stackoverflow.com/questions/34597590/linking-and-communication-to-autocad-in-c). ## Modernisation et outils contemporains (2010–2025) ## Adoption de C++11/17/20 et outils associés Les récentes versions exploitent les avancées du C++ moderne : * **Smart pointers** (`unique_ptr`, `shared_ptr`) pour la gestion mémoire automatisée * **Lambda functions** dans le traitement asynchrone (calculs de rendu) * **Parallel STL** pour l’exploitation des multicœurs (opérations sur les pointclouds) Le build system a migré vers **CMake** (2018), permettant : * La compilation unifiée Windows/Linux/macOS * L’intégration de bibliothèques tierces (Boost, Qt, OpenCASCADE) * La génération de packages MSI/DEB/RPM via CPack Les outils d’analyse statique (Clang-Tidy, Coverity) et de profiling (VTune, Nsight) font désormais partie du pipeline CI/CD[3](https://fr.wikipedia.org/wiki/AutoCAD)[5](https://stackoverflow.com/questions/34597590/linking-and-communication-to-autocad-in-c). ## Perspectives futures et défis techniques ## Vers un noyau GPU-native avec SYCL/DPC++ Les développements en cours visent à : 1. **Déporter les calculs** sur GPU via SYCL (ray tracing, simulations physiques) 2. **Unifier les backends** graphiques (Vulkan, Metal, DirectX 12 Ultimate) 3. **Intégrer le machine learning** via TorchScript (optimisation de paramètres) Ces évolutions s’accompagnent d’une refonte des anciens modules C en C++23, avec adoption progressive de concepts comme : * Les coroutines pour le streaming de données * Les modules C++20 pour réduire les temps de compilation * Le pattern ECS (Entity-Component-System) pour la gestion des scènes 3D ## Conclusion : une base code historiquement ancrée en C/C++ L’examen du codebase AutoCAD révèle une fidélité remarquable au C/C++ malgré 40 ans d’évolution technologique. Ce choix s’explique par : * La criticité des performances dans le traitement de millions d’entités * L’investissement massif dans une base code mature (25+ millions de lignes) * La nécessité d’un contrôle précis sur l’allocation mémoire et le parallélisme Les langages de script (AutoLISP, Python) et environnements managés (.NET) restent cantonnés aux couches hautes du logiciel, le cœur restant résolument ancré dans les langages systèmes compilés. ### Citations: 1. https://forums.autodesk.com/t5/autocad-tous-produits-francais/les-langages-de-programmation-et-autocad/td-p/6378387 2. https://www.reddit.com/r/AutoCAD/comments/xjevqw/programming_in_autocad/ 3. https://fr.wikipedia.org/wiki/AutoCAD 4. https://geospatialfrance.typepad.com/geospatialfrance/2009/11/langage-developper-outils-autodesk.html 5. https://stackoverflow.com/questions/34597590/linking-and-communication-to-autocad-in-c 6. https://georezo.net/forum/viewtopic.php?pid=50977 7. https://search.worldcat.org/title/Autocad-programming-in-CC++/oclc/928145236 8. https://cadernos.proarq.fau.ufrj.br/public/docs/Proarq18_CadScripting_CelaniVaz.pdf 9. https://georezo.net/forum/viewtopic.php?pid=89202 10. https://www.keanw.com/2008/07/choosing-the-pr.html 11. https://stackoverflow.com/questions/779639/what-are-cad-apps-written-in-and-how-are-they-organized 12. https://dessein-tech.com/t/histoire-concise-de-la-programmation-dans-autocad/20 13. https://www.univ-chlef.dz/ft/wp-content/uploads/2024/01/COURS-PROGRAMMATION-Cpp-TAHRAOUI-Souad-Chlef-final-L3-Automatique-2018_compressed.pdf 14. https://cad-magazine.com/wp-content/uploads/2019/09/autocad__20_versions.pdf 15. https://www.cadtutor.net/forum/topic/47149-running-a-lisp-from-a-c-code/ 16. https://www.aplicit.com/developper-programme-autocad/ 17. https://www.cadida.de/fr/les-technologies/cao/cao-addons/autocao 18. https://stackoverflow.com/questions/19045894/is-autocad-and-adobe-software-written-in-c-or-in-net 19. https://www.autodesk.com/br/support/technical/article/caas/tsarticles/ts/4sI2GEnGmiwCYHh7hS4Nsx.html 20. https://www.autodesk.com/support/technical/article/caas/tsarticles/ts/6zcH4hmHofZMLbnaJkBly2.html 21. https://cadxp.com/topic/42740-avec-quel-langage-programmer-sur-autocad/ 22. https://forums.autodesk.com/t5/net/most-efficient-language-to-code-with-in-autocad/td-p/9425423 23. https://www.autodesk.com/support/technical/article/caas/tsarticles/ts/2edY5Oczsv93tDF1ugCKHU.html 24. https://forums.autodesk.com/autodesk/attachments/autodesk/127/80864/2/autocad-lt-auto-lisp-guide-A4-fr.pdf 25. https://forums.autodesk.com/t5/autocad-portugues/linguagens-de-programacao-em-autocad/td-p/6378634 26. https://www.infoq.com/presentations/autocad-webassembly/ 27. https://bimware.com/fr/societe/histoire.html 28. https://www.autodesk.com/support/technical/article/caas/tsarticles/ts/u5CP3BZNs2tQNEG6jeog3.html 29. https://dessein-tech.com/t/autocad-petite-histoire-d-un-grand-succes/22 30. https://www.youtube.com/watch?v=ddI_hh6fHSc 31. https://www.autodesk.com/support/technical/article/caas/tsarticles/ts/34IYhOWDfXtQl6h5gvTwB7.html 32. https://documentation.help/AutoCAD-Land-Desktop-ActiveX-VBA/idh_program_guide_c__.htm 33. https://www.editions-eyrolles.com/livre/programmer-autocad 34. https://fr.wikipedia.org/wiki/Lisp 35. https://www.betterworldbooks.com/product/detail/autocad-programming-in-c-c-9780471963363 36. https://hyperpics.blogs.com/beyond_the_ui/2017/03/autocad-developer-documentation-suvery-_-part-1.html 37. https://www.academia.edu/70802808/AutoCAD_Programming_in_C_C_ 38. https://www.cadtutor.net/forum/topic/76045-autocad-programming-in-cc-by-owen-ransen/ 39. https://help.autodesk.com/view/ACD/2024/PTB/?guid=GUID-17DB37A2-FA71-4351-B88B-61456570E767 40. https://rosa-cad.com/2019/05/12/evolucao-do-cad/ 41. https://softwareengineering.stackexchange.com/questions/77199/c-and-the-suitable-libraries-to-develop-autocad-autodesk-cad-applications 42. https://www.eyrolles.com/Informatique/Livre/autocad-2024-9782409043703/ 43. https://forums.autodesk.com/t5/inventor-programming-ilogic/would-you-use-c-or-c-for-a-new-project/td-p/10287412 44. https://www.eyrolles.com/Sciences/Theme/297/cao-autocad/ 45. https://www.youtube.com/watch?v=_hjJR2wcz84 46. https://adndevblog.typepad.com/autocad/2012/07/the-right-tools-for-the-job-autocad-part-2.html 47. https://framalibre.org/par-tag?tag=gestion+de+projet 48. https://forums.autodesk.com/t5/net/opening-autocad-and-autocad-electrical-simultaneouly-using-c/td-p/10587201 49. https://help.autodesk.com/view/OARX/2023/ENU/?guid=GUID-01354898-965C-4340-9A39-607B56DAB888 50. https://www.keanw.com/2007/11/metaprogramming.html 51. https://www.reddit.com/r/csharp/comments/16rafxp/why_is_c_used_instead_of_c/ 52. https://forum.bricsys.com/discussion/33384/examples-and-documentation-for-c-and-c-using-bricscad-v18-pro-sdks 53. https://www.academia.edu/107901323/AutoCAD_Programming_in_C_C_ --- **Canonical:** https://dessein-tech.com/t/langages-de-developpement-du-logiciel-autocad/2951 **Original content:** https://dessein-tech.com/t/langages-de-developpement-du-logiciel-autocad/2951