KERLOM Samuel Johnson
Qu'est-ce que le langage VBA ?
Comment développer en VBA sous AutoCAD ?
Où trouver des exemples VBA pour AutoCAD ?

Langage VBA

Le langage VBA (Visual Basic for Applications) se développe "à l'intérieur" d'une application (comme son nom l'indique !). Il s'agit d'un langage plutôt simple et donc adapté aux débutants en programmation. On peut développer en VBA sous Excel, Word, AutoCAD, ...
Le VBA sous Excel est l'exemple le plus courant : on trouve de nombreux sujets sur Internet qui vous explique comment développer vos propres fonctions (comme par exemple EXCEL-PRATIQUE). Je vous conseille d'ailleurs de commencer sous Microsoft Excel avant de vous lancer sous AutoCAD !

VBA pour AutoCAD

ATTENTION ! Le module VBA est en train d'être abandonné par Autodesk !
VBA n'est plus installé par défaut sous AutoCAD depuis la version 2010 incluse, mais il est possible de le télécharger en complément : Module VBA pour AutoCAD.
Par exemple : Module VBA pour AutoCAD 2012 en 64 bits

L'éditeur VBA dans AutoCAD peut être appelé par la commande _vbaide.
Après avoir saisi son code, il est possible d'enregistrer son projet sous un fichier DVB (externe à AutoCAD).

Ce fichier DVB peut être chargé dans un dessin par un glisser-déposer ou avec la commande _VBALOAD ou CHARGVBA. Il est ensuite nécessaire d'utiliser la commande _VBARUN ou EXECVBA pour exécuter la macro.

Vous trouverez ci-dessous quelques fonctions VBA propre à AutoCAD :

Récupérer les coordonnées d'un point

Dim Point As Variant
Point = ThisDrawing.Utility.GetPoint(, "Cliquer le point : ")
Dim X As Double
X = Point(0)
Dim Y As Double
Y = Point(1)
Dim Z As Double
Z = Point(2)

Sélectionner un objet

Dim ent As AcadEntity
Dim pt As Variant
ThisDrawing.Utility.GetEntity ent, pt, "Sélectionner l'objet : "

Écrire un message dans la ligne de commande

Dim Message As String
Message = "HelloWord"
ThisDrawing.Utility.Prompt Message & vbCrLf

Exécuter une commande AutoCAD

Dim Commande As String
Commande = "apropos" & " "
ThisDrawing.SendCommand Commande

Demander un mot à l'utilisateur

Dim Mot As String
Mot = ThisDrawing.Utility.GetString(1, "Quel est le mot ? ")

Récupérer la valeur d'une variable AutoCAD

Dim Valeur As String
Dim Variable As String
Variable = "dwgname"
Valeur = ThisDrawing.GetVariable(Variable)

Simuler la touche ECHAP

ThisDrawing.SendCommand Chr(27)

Exemples

Vous trouverez ci-dessous quelques commandes VBA réalisant une action concrète dans AutoCAD :
Exemples de macros VBA pour AutoCAD.

Pour aller plus loin...

Quelques sources sur le blog "AutoCAD et VBA"
Cours VBA-AutoCAD sur le site de Maxence Delannoy
Un cours complet sur le VBA pour AutoCAD (en anglais)
"HOW TO AUTOCAD" (en anglais)
"AutoCAD .NET Developer's Guide" (en anglais)

Déverrouiller un fichier VBA protégé

Cette manipulation semble marcher sur tous les fichiers VBA quelque soit l'application (Access, Excel, Word, ...) et donc plus particulièrement sur un fichier DVB (VBA sous AutoCAD). Si le code VBA est protégé par un mot de passe, je vous conseille de suivre la méthodologie suivante :
- Faire une copie de sauvegarde de votre fichier
- Ouvrir votre fichier avec un éditeur (Notepad++ par exemple)
- Rechercher le mot "DPB=" qui est suivie d'une série de chiffres et de lettres entre guillemets
- Remplacer "DPB=" par "DPx="
- Enregistrer le fichier
- Ouvrir ce nouveau fichier dans l'application
- Ignorer tous les messages d'erreur
- Aller dans les options du projet et REDEFINIR le mot de passe comme bon vous semble !
(ne pas chercher à le supprimer dans un premier temps, seulement à le redéfinir)
=> Vous avez désormais accès au code VBA !

▲ Haut