DIESEL (acronyme de Direct Interpretively Evaluated String Expression Language) est un langage de script très spécifique et léger intégré à AutoCAD®.
Bien qu’il soit assez ancien (il existe depuis le début des années 90), il reste utilisé aujourd’hui pour des tâches très précises où des langages plus lourds comme AutoLISP ou .NET ne sont pas nécessaires ou applicables.
Voici une explication détaillée de son fonctionnement, de son utilité et des exemples concrets.
1. Qu’est-ce que le langage DIESEL ?
C’est un langage conçu pour la manipulation de chaînes de caractères (texte).
Contrairement à d’autres langages qui manipulent des objets géométriques ou des bases de données, DIESEL prend une chaîne de texte en entrée, l’évalue, et renvoie une autre chaîne de texte.
Sa syntaxe est facilement reconnaissable car toutes les expressions commencent par un signe dollar et une parenthèse : $(fonction, argument).
2. À quoi sert-il ?
Son utilisation est aujourd’hui assez nichée, mais il reste l’outil de référence pour deux choses principales dans l’interface d’AutoCAD® :
- Personnaliser la barre d’état (Status Bar) : C’est son utilisation la plus courante. Via la variable système
MODEMACRO, vous pouvez utiliser DIESEL pour afficher des informations personnalisées en bas de votre écran (comme le nom du calque actuel, l’échelle d’annotation, ou le style de texte actif). - Les Macros de Menus (Ruban/Barres d’outils) : DIESEL est utilisé pour modifier l’apparence des boutons dans l’interface.
- Exemple : Griser un bouton si une commande n’est pas disponible.
- Exemple : Mettre une petite coche à côté d’un élément de menu pour indiquer qu’une option est activée (comme une bascule On/Off).
3. Est-ce un « vrai » langage de programmation ?
La réponse courte est : Non, pas vraiment.
C’est plutôt un langage d’évaluation d’expressions ou un langage de macro. Voici pourquoi il ne peut pas être comparé à AutoLISP, C# ou Python :
- Pas de boucles : Il n’y a pas de fonctions
forouwhile. Vous ne pouvez pas itérer sur une sélection d’objets. - Pas de variables : DIESEL ne peut pas stocker d’informations en mémoire (sauf via une astuce consistant à écrire dans les variables système
USERS1àUSERS5d’AutoCAD®). Il ne fait que lire des variables système existantes. - Limité au texte : Il ne peut pas dessiner une ligne, créer un calque ou modifier une géométrie. Il ne sert qu’à afficher du texte ou conditionner l’interface.
Cependant, il possède une logique conditionnelle de base (Si/Alors/Sinon), ce qui le rend « intelligent ».
4. Exemples concrets
Pour tester ces exemples, vous pouvez copier le code et le coller directement dans la ligne de commande d’AutoCAD® pour définir la variable MODEMACRO.
Exemple A : Afficher le calque courant dans la barre d’état
C’est l’utilisation la plus basique. On utilise la fonction getvar pour récupérer une variable système.
Code :
$(getvar, clayer)
Si vous tapez MODEMACRO dans AutoCAD®, puis collez ce code, le nom de votre calque actuel apparaîtra en bas à gauche de la fenêtre.
Exemple B : Logique conditionnelle (If/Else)
Disons que vous voulez savoir si le mode « Ortho » est activé. La variable ORTHOMODE vaut 0 (désactivé) ou 1 (activé).
Syntaxe : $(if, condition, alors, sinon)
Code :
$(if, $(eq, $(getvar, orthomode), 1), Ortho ON, Ortho OFF)
Ce code vérifie si orthomode est égal à 1. Si oui, il écrit « Ortho ON », sinon « Ortho OFF ».
Exemple C : Calcul mathématique simple
DIESEL peut faire des maths simples, mais le résultat est toujours converti en texte.
Code :
$(+, 2, 5)
Retourne la chaîne de caractères « 7 ».
Exemple D : Une barre d’état complexe (Affichage personnalisé)
Voici un exemple que vous pouvez tester pour voir la puissance de DIESEL. Cela affichera le style de texte actuel et la valeur du rayon de raccord (Fillet Radius).
Code à coller dans MODEMACRO :
Style: $(getvar, textstyle) | Rayon Raccord: $(rtos, $(getvar, filletrad), 2, 2)
Note : rtos convertit un nombre réel (Real) en chaîne de caractères (String) pour l’affichage.
Résumé
| Caractéristique | DIESEL | AutoLISP |
|---|---|---|
| Complexité | Très faible | Moyenne à Haute |
| Vitesse | Très rapide (car simple) | Rapide |
| Capacités | Manipulation de texte, UI | Dessin, modification, calculs complexes |
| Utilisation | Barre d’état (MODEMACRO) |
Automatisation de tâches |
Aide en ligne: Help