(defun) la mère de toutes les fonctions AutoLISP !

Voici le « Big Boss » des fonctions AutoLISP. C’est celle par qui tout commence.

Si vous avez compris (setq) pour les variables, alors (defun) est l’étape où vous passez de « Bricoleur » à « Inventeur ».

1. Le Concept : « Apprendre un nouveau tour à AutoCAD® »

AutoCAD® est comme un chien savant. Il connait « LIGNE », « CERCLE », « COPIER ».

Mais il ne connait pas la commande « DESSINE_MAISON » ou « CALCULE_TRUC ».

(defun) signifie DEfine FUNction (Définir Fonction).

C’est la commande qui vous permet de dire : « Écoute-moi bien AutoCAD®. À partir de maintenant, quand je tape ce mot magique, tu vas faire cette liste d’actions. »

2. La Syntaxe (La Recette de Cuisine)

Cela ressemble toujours à ça :

(defun c:MON_NOM_DE_COMMANDE ( / variables_locales )
   ;; Ici, on met les ingrédients (les actions)
   (action 1)
   (action 2)
   (princ) ;; Le petit dessert (pour finir proprement)
)

Il y a 3 zones critiques à comprendre :

  1. c: (Le Préfixe Magique) :
  • Si vous écrivez (defun c:TOTO ...) → Vous pourrez taper TOTO directement dans la ligne de commande AutoCAD®. C’est ce qu’on veut 99% du temps.

  • Si vous écrivez (defun TOTO ...) (sans le c:) → C’est une fonction « timide ». On ne peut pas l’appeler au clavier. Elle sert d’aide pour d’autres programmes.

  1. ( / ) (La Parenthèse Mystère) :
  • C’est la zone de « nettoyage ».

  • Tout ce que vous écrivez après le slash / sera oublié par AutoCAD® une fois la commande finie.

  • Analogy : C’est le flash des « Men in Black ». On utilise des variables pour travailler, mais à la fin, flash, on efface la mémoire pour ne pas polluer AutoCAD®.

  1. Le Corps : C’est là qu’on empile les commandes.

3. L’Exemple : Le « Super Zoom »

On va créer une commande qui n’existe pas. On va l’appeler ZTOP.

Elle va faire deux choses d’un coup :

  1. Faire un Zoom Étendu (tout voir).

  2. Sauvegarder le dessin (pour ne rien perdre).

Copiez ceci, chargez-le, et tapez ZTOP.

(defun c:ZTOP ( / ) ;; Pas de variables ici, donc parenthèses vides
  
  (prompt "\nAttention, je zoome et je sauvegarde...")
  
  ;; Action 1 : Zoom Étendu
  (command "_.ZOOM" "_E")
  
  ;; Action 2 : Sauvegarde Rapide
  (command "_.QSAVE")
  
  (alert "Dessin cadré et sauvegardé avec succès !")
  
  (princ) ;; Le "silence" final pour ne pas afficher de message bizarre
)

Résumé pour briller

  • (defun) : « Je crée une nouvelle commande ».

  • c: : « Je veux pouvoir la taper au clavier ».

  • ( / ) : « Je nettoie mes variables à la fin ».

Félicitations, vous venez de créer votre première commande AutoCAD® personnalisée !

  • Utile
  • Peut mieux faire
  • Inutile
0 votant

:right_arrow: Tous les tutos AutoLISP

Bonjour,

Je suis d’accord que les parenthèses ( / ) sont difficile à comprendre pour les débutant.
Mais elles ne sert pas uniquement à déclarée les variables.
Exemple : ( argument1 argument2 … / ma_fonction_locale ma_variable_locale …).
Les arguments sont utilisés par des fonctions déclarées sans le c:.
Si on déclare un defun dans un autre il peut etre locale ou globale comme les variables
C’est peut être à développer pour bien comprendre.
Pas le temps.

1 « J'aime »

Merci @Fraiddd pour tes commentaires, mais je vais rester dans la philosophie de ces mini-tutoriels qui sont destinés aux débutants. On pourrait dire bien d’autres choses à propos de ces fonctions, mais au risque de perdre et de lasser les bonnes volontés des débutants. :wink:

Je pense que tu peux en faire un article à part, je parle de (/), remplaçable par nil, si on déclare rien.
C’est la base du defun.
En tout cas, je tiens à dire que c’est une bonne initiative et je t’encourage à continuer.
J’aimerais t’aider dans cette tâche énorme, mais je ne suis pas encore à la retraite, encore 7ans pour arrivé à 67 et mon travail est vraiment hyper chronophage.

à plus

1 « J'aime »