Au-delà de l'AutoLISP: pourquoi et comment passer à la programmation .NET (C#) sur AutoCAD®

Si vous êtes un utilisateur avancé d’AutoCAD® ou un gestionnaire CAO, vous avez probablement déjà croisé (ou écrit) des routines en AutoLISP. Ces scripts sont fantastiques pour automatiser des tâches répétitives. Mais il arrive un moment où le LISP atteint ses limites : lenteur sur les gros dessins, interfaces graphiques vieillottes, ou difficulté à communiquer avec Excel ou des bases de données.

C’est ici qu’entre en scène la « cour des grands » : l’environnement .NET.

Dans cet article, nous allons démystifier la programmation .NET pour AutoCAD®, comprendre le rôle du langage C# (C-Sharp) et voir pourquoi il pourrait bien être la prochaine étape logique de votre carrière.


1. Qu’est-ce que l’environnement .NET ?

Imaginez que vous êtes un menuisier.

  • Le langage de programmation (C#) est votre outil (le marteau, la scie).
  • L’environnement .NET est votre atelier tout équipé. Il fournit l’électricité, l’établi, les règles de sécurité et des milliers de gabarits préfabriqués.

Plus techniquement, .NET (dotNET) est un vaste framework créé par Microsoft. C’est une plateforme logicielle qui sert d’intermédiaire entre votre code, le système d’exploitation Windows et AutoCAD®.

Lorsque vous programmez pour AutoCAD® en .NET, vous n’écrivez pas juste des instructions pour le logiciel de dessin ; vous accédez à une bibliothèque gigantesque de fonctionnalités Windows (fenêtres, fichiers, réseau, sécurité) tout en pilotant le moteur interne d’AutoCAD®.

La place du C# (C-Sharp)

Le .NET n’est pas un langage, c’est l’atelier. Pour travailler dans cet atelier, vous devez parler une langue. Les deux plus courantes sont le VB.NET (Visual Basic) et le C#.

Aujourd’hui, le C# est le standard de l’industrie. C’est un langage moderne, puissant et structuré, utilisé par la grande majorité des développeurs Autodesk® professionnels.

Ci-dessous un exemple de la syntaxe du langage C#

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;

namespace MonPremierPlugin
{
    public class MaCommande
    {
        // On définit le nom de la commande que l'utilisateur tapera dans AutoCAD
        [CommandMethod("DISBONJOUR")]
        public void BonjourCommand()
        {
            // On accède à l'éditeur d'AutoCAD pour écrire un message
            var ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ed.WriteMessage("\nBonjour tout le monde depuis le monde .NET !");
        }
    }
}

2. AutoLISP vs .NET (C#) : Le choc des cultures

C’est la question que tout le monde se pose. Quelle est la vraie différence ?

AutoLISP / Visual LISP

  • Type : Langage de script interprété.
  • Philosophie : On écrit le code, on le charge, ça tourne. C’est immédiat.
  • Forces : Manipulation rapide des listes, très facile pour dessiner de la géométrie simple, pas besoin d’outils externes (l’éditeur est dans AutoCAD®).
  • Faiblesses : Lent sur les boucles complexes, création de boîtes de dialogue (DCL) archaïque, difficile à déboguer sur de gros projets.

C# / .NET

  • Type : Langage compilé (le code est transformé en fichier .dll avant d’être lu par AutoCAD®).
  • Philosophie : Programmation Orientée Objet (POO). On manipule des « objets » (une ligne est un objet avec des propriétés, une fenêtre est un objet).
  • Forces : Puissance de calcul brute, interfaces modernes, sécurité du code, accès à tout Windows.
  • Faiblesses : Courbe d’apprentissage plus raide, nécessite un logiciel externe (Visual Studio) et une étape de compilation.

3. Avantages et Inconvénients du C# pour AutoCAD®

Les Avantages (Pourquoi sauter le pas ?)

  1. Vitesse d’exécution : Le C# est compilé, ce qui le rend nettement plus rapide que le LISP pour les calculs lourds ou le traitement de milliers d’entités.
  2. Interfaces Graphiques (UI) : Avec C#, vous pouvez créer des palettes modernes, des fenêtres flottantes complexes, des barres de progression et des formulaires ergonomiques (via Windows Forms ou WPF).
  3. Interopérabilité : C’est le point fort. Votre plugin AutoCAD® peut lire un fichier Excel, envoyer un courriel via Outlook, se connecter à une base de données SQL ou lire un fichier JSON sur un serveur web. Tout cela est natif en .NET.
  4. Protection du code : Contrairement au LSP qui est un fichier texte lisible (sauf si compilé en VLX), une DLL .NET est plus difficile à « voler » ou modifier par un utilisateur lambda.

Les Inconvénients (Ce qu’il faut savoir)

  1. Complexité : « Hello World » en LISP prend 1 ligne. En C#, il en faut 10 pour configurer la structure de la classe. C’est plus verbeux.
  2. Maintenance : Il faut recompiler le code pour chaque changement. On ne peut pas « modifier et tester » aussi vite qu’en LISP.
  3. Versions : Il faut parfois gérer les versions des DLLs selon les années d’AutoCAD® (bien que cela se soit amélioré).

4. Ce qu’on peut faire en C# (et pas en LISP)

Voici quelques exemples concrets où le C# écrase le LISP :

  • La Palette Intelligente : Créer une palette latérale ancrable dans AutoCAD® avec des onglets, des champs de recherche, des images d’aperçu dynamiques qui changent selon la sélection. (Impossible ou très laid en DCL/Lisp).
  • Lien Base de Données : Un outil qui clique sur un bloc « Moteur », va chercher sa référence dans une base de données SQL d’entreprise, récupère le prix et le stock en temps réel, et met à jour les attributs du bloc.
  • Calcul Intensif : Analyser 50 000 polylignes pour trouver des intersections complexes. En Lisp, cela pourrait prendre 3 minutes et figer l’écran. En C#, cela peut prendre 5 secondes avec une barre de progression fluide.
  • Export Avancé : Générer un rapport PDF ou Excel formaté avec des graphiques et des images directement depuis les données du dessin, sans ouvrir Excel.

5. À qui s’adresse cette programmation ?

Le C# n’est pas pour tout le monde. Il s’adresse principalement :

  • Aux CAD Managers qui doivent déployer des outils robustes pour toute une équipe.
  • Aux utilisateurs passionnés qui se sentent limités par le Visual Lisp.
  • Aux développeurs de solutions qui veulent vendre ou distribuer des plugins professionnels.

Si vous voulez juste tracer une ligne rouge rapidement, restez au LISP. Si vous voulez construire un « logiciel dans le logiciel », passez au .NET.


6. FAQ : Se lancer dans l’aventure

Quel logiciel faut-il ?

Il vous faut un Environnement de Développement Intégré (IDE). Le standard absolu est Microsoft Visual Studio.

  • Bonne nouvelle : La version Visual Studio Community est gratuite pour les particuliers et les petites équipes. Elle contient tout ce qu’il faut.

Faut-il connaître le LISP avant de faire du C# ?

Non, absolument pas.

C’est même parfois un piège. La logique du LISP (procédurale) est très différente de la logique du C# (orientée objet). Avoir fait du LISP aide à comprendre comment AutoCAD® « pense » (les entités, les calques, les blocs), mais ce n’est pas un prérequis technique pour apprendre le langage C#. Vous pouvez commencer directement par le C#.

Comment se former ?

Voici les liens directs vers les ressources mentionnées pour vous lancer dans l’aventure .NET :

1. Le Guide Officiel (AutoCAD® .NET Developer’s Guide) C’est la documentation technique officielle hébergée sur l’aide en ligne d’Autodesk®. Elle contient les concepts de base et les références des commandes.

2. Through the Interface (Le blog de Kean Walmsley) Une mine d’or maintenue depuis des années. C’est en anglais, mais c’est incontournable. Utilisez la barre de recherche du blog pour trouver des exemples sur presque n’importe quel sujet.

3. Le Forum Autodesk® (.NET) L’endroit où poser vos questions. La communauté est très réactive (souvent plus rapide que le support officiel).

4. Le SDK ObjectARX (et .NET) C’est ici qu’il faut télécharger le kit de développement. Bien qu’il s’appelle « ObjectARX », ce téléchargement contient également les bibliothèques .NET nécessaires et surtout des dossiers « Samples » (exemples) remplis de code C# fonctionnel.

  • :link: Lien : AutoCAD Developer Center
    • Note : Sur cette page, descendez jusqu’à la section « ObjectARX » pour trouver le lien de téléchargement correspondant à votre version d’AutoCAD®.

5. Le site de Gilles Chanteau (.NET) L’expert en .NET AutoCAD®.


Conclusion

Passer au C# est un investissement en temps, mais il transforme AutoCAD® en une plateforme de développement illimitée. C’est la différence entre utiliser le logiciel et le dominer.

Prêt à compiler votre première commande ?