Ma première routine VB .Net

Bonsoir,

Nous allons écrire notre première routine VB  .Net pour AutoCAD. Comme la tradition le veut, le programme ne fera qu’afficher le message « Bonjour le monde » (Hello World). Ce programme sera réalisé pour la version 2012. Je n’ai pas choisi 2013, car de petites différences sont apparues avec la dernière version et j’y reviendrai dans un article ultérieur.

Contrairement aux langages Autolisp et VBA dont les éditeurs sont intégrés avec AutoCAD (d’ailleurs pour Autolisp nous n’aurions besoin que d’un éditeur de texte tel Notepad), l’écriture de programmes VB (ou C# ou C++ pour ObjectARX) requiert l’utilisation d’un compilateur externe. Nous devons absolument utiliser Visual Studio de Microsoft. Voici un lien vers la page d’accueil http://www.microsoft.com/visualstudio/fr-ca/products.

Vous remarquerez un onglet «PRODUITS EXPRESS». En effet des versions Express sont disponibles tel Visual Basic 2010 Express et elles sont gratuites. Pour le développement de routine avec AutoCAD, elles sont suffisantes. Je n’énumèrerai pas les différences ici et je n’ai pas trouvé sur le WEB un tableau détaillant explicitement ces différences. Avec AutoCAD, la principale lacune se situe au niveau du débogage. Les versions Express ne permettent pas de «tracer» un programme dans AutoCAD, ce que la version professionnelle permet. Par contre, j’ai trouvé un article sur le bloque de Kean Walmsley qui indique une méthode pour le faire (Debugging AutoCAD .NET projects using Express Editions). Je ne l’ai pas essayé car j’utilise la version Professionnelle mais libre à vous de tenter votre chance. Sinon, le débogage peut s’avérer laborieux: compiler le DLL, démarrer AutoCAD, charger le DLL, tester. Si ça ne fonctionne pas vous devez laisser des traces manuellement ce qui peut être très très laborieux. Des versions d’essai de  90 jours de la version professionnelle sont aussi disponibles.

Pour créer un programme VB .Net compatible avec AutoCAD 2012, vous devez absolument utiliser une version 2010 de Visual Studio. Je reviendrai dans un prochain article sur la compatibilité entre les différentes versions.

Démarrer maintenant Visual Studio 2010 (au premier démarrage l’on vous demandera quelle langage par défaut vous voulez utiliser, choisissez Visual Basic).

  • À partir de la page de démarrage, choisissez «Nouveau projet…»

  • Choisissez «Bibliothèque de classes» comme type de projet et assurez-vous que «.Net Framework 4» est sélectionné. C’est le choix par défaut.

  • Dans le bas de la fenêtre, inscrivez «HelloWorld» pour le nom puis cliquez OK.

Dans l’Explorateur de solutions, à droite, vous remarquerez le nom du projet HelloWorld puis sous le projet les deux éléments suivants:

  • My Project: Dossier comprenant les fichiers de paramètres du projet
  • Class1.vb: Le fichier contenant le code de la classe.

Pour plus de clarté, renommez le fichier MyFirstACADClass en utilisant les méthodes habituelles pour renommer un fichier.

Vous remarquerez que dans la fenêtre de gauche, la classe a aussi été automatiquement renommée. J’utilise souvent des noms anglais pour la nomenclature des classes, fonctions et variables. L’anglais étant le langage universel en informatique, il est plus facile d’échanger avec la communauté internationale.

Pour pouvoir communiquer avec AutoCAD nous devons ajouter deux références.

  •  À partir de l’Explorateur de solutions, double-cliquez sur My Project. La fenêtre de gauche affichera les paramètres du projet.
  • Choisissez Références.

  • Cliquez ensuite le bouton «Ajouter…»
  • À partir de la boîte de dialogue Ajouter une référence, cliquez l’onglet Parcourir.
  • Naviguer jusqu’au dossier où se situe le fichier ACAD.exe d’AutoCAD 2012 puis sélectionnez les deux fichiers suivant: acdbmgd.dll et acmgd.dll. Vous pouvez utiliser la touche «CTRL» pour sélectionner les deux fichiers.
  • Cliquez ensuite le bouton «OK».

Les deux références ont été ajoutées. Remarquez la colonne «Copie locale». Les deux valeurs sont à True.

Il est très important de les modifier pour False. Les deux nouvelles références étant déjà en surbrillance vous pouvez changer la valeur en utilisant le Tableau des propriétés sous l’Explorateur de solutions à droite.

Pour permettre le débogage:

  • Cliquez la section Déboguer
  • Sélectionnez «Démarrer le programme externe:»
  • Puis à l’aide du bouton parcourir, sélectionnez le fichier ACAD.exe permettant de démarrer AutoCAD 2012.

  • Fermez l’onglet MyProjet (HelloWorld).

De retour dans le fichier de la classe MyFirstACADClass, nous devons ajouter les instructions suivantes dans l’entête du fichier.

Avant d’aller plus loin, enregistrez votre projet.

  • À partir de la boîte de dialogue Enregistrer un projet, utilisez le bouton Parcourir puis créer un dossier «Blogue» à l’endroit de votre choix sur un disque local (très important). Sous «Blogue», créez un autre dossier nommé «HelloWorld».
  • Assurez-vous que la case à cocher «Créer le répertoire pour la solution» est bien cochée, puis cliquez le bouton Enregistrer.

De retour dans le fichier de la classe MyFirstACADClass, ajoutez le code suivant:

<CommandMethod(« ADCHW »)> _
Public Sub ADC_HelloWorld()

End Sub

La première ligne définit la commande à utiliser à partir d’AutoCAD soit dans ce cas-ci «ADCHW». Tout de suite sous cette définition (remarquez le trait souligné suivant la première ligne, il est très important) suit la procédure associée à la commande. Celle-ci se nommera «ADC_HelloWorld».

Ajoutez ensuite les trois déclarations suivantes à l’intérieur de la procédure:

Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
Dim acDocEd As Editor = acDoc.Editor

  • acDoc permettra d’accéder au document (dessin) courant.
  • acCurDb permettra d’accéder à la base de données du document courant (définition des calques, des blocs, etc).
  • acDocEd permetra d’interagir avec AutoCAD (demande à l’usager et affichage de message)

Ajoutez après les déclarations le bloc suivant:

Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()

End Using

Avec AutoCAD, il est fortement recommandé de regrouper les opérations à l’intérieur d’une transaction.

Ajoutez à l’intérieur de ce bloc la ligne suivante:

acDocEd.WriteMessage(« Bonjour le monde » & vbLf)

Cette ligne fera s’afficher à la ligne de commande, le texte «Bonjour le monde» suivi d’un retour à la ligne.

Enregistrez votre projet et démarrez le débogage.

Après le démarrage d’AutoCAD, inscrivez à la ligne de commande NETLOAD puis naviguer jusqu’au dossier Debug de l’application que vous venez de créer (ex. D:\Blogue\HelloWorld\HelloWorld\HelloWorld\bin\Debug) et choisissez le fichier HelloWorld.dll.

De retour à la ligne de commande inscrivez «ADCHW», le message «Bonjour le monde s’affichera à la ligne de commande».

Voilà! Votre premier programme. Maintenant, vous pouvez compiler votre version officielle.

  • Fermez AutoCAD.
  • De retour à Visual Studio, sélectionnez Générer HelloWorld à partir du menu Générer.

Ceci créera une version optimisée du fichier HelloWorld.dll et le placera dans le sous-dossier Release de l’application (ex. D:\Blogue\HelloWorld\HelloWorld\HelloWorld\bin\Release). C’est cette version que vous devriez distribuer et utiliser pour le chargement dans AutoCAD.

Bravo!!!

Ceci est un bref aperçu mais cela vous indique les ajustements de base à effectuer pour créer une bibliothèque de classe avec AutoCAD. Ces opérations doivent être effectuées à chaque démarrage de projet.

Dans mon prochain article, j’essaierai de faire le point concernant la compatibilité des routines .Net entre les différentes versions d’AutoCAD et nous convertirons le projet que nous venons de faire pour la version 2013 d’AutoCAD.

Bonne programmation!!!

André

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *