# Le jour du poisson 🐟

**URL:** https://dessein-tech.com/t/le-jour-du-poisson/10220
**Category:** AutoLISP
**Tags:** lisp, programmation
**Created:** 2026-04-01T14:40:05Z
**Posts:** 1

## Post 1 by @Patrick — 2026-04-01T14:40:05Z

:sparkles: Bonjour Patrick,

Joyeux 1er avril ! :fish:

 ![image](https://dessein-tech.com/uploads/default/original/2X/0/0d98fbab886e8a3099e576bff67ce5961237dc82.jpeg)

Puisque vous êtes sur AutoCAD 2027, voici une petite routine AutoLISP sur mesure pour l’occasion. Ce code va dessiner un poisson géométrique simple en utilisant une POLYLIGN pour le corps et la queue, et un CERCLE pour l’œil.

Il prend également soin de désactiver temporairement la variable système OSMODE (l’accrochage aux objets) pour éviter que votre poisson ne se déforme en s’accrochant à d’autres éléments de votre dessin.

Voici le code à copier :

```
(defun c:POISSON ( / p1 p2 p3 p4 p5 p6 eye old_osmode)
  (setq p1 (getpoint "\nOù voulez-vous placer le bout du nez du poisson ? "))
  (if p1
    (progn
      ;; Sauvegarde de l'accrochage aux objets actuel
      (setq old_osmode (getvar "OSMODE"))
      (setvar "OSMODE" 0) ; Désactivation temporaire
      
      ;; Calcul des points du poisson
      (setq p2 (list (+ (car p1) 4) (+ (cadr p1) 2)))
      (setq p3 (list (+ (car p1) 8) (cadr p1)))
      (setq p4 (list (+ (car p1) 11) (+ (cadr p1) 2.5)))
      (setq p5 (list (+ (car p1) 11) (- (cadr p1) 2.5)))
      (setq p6 (list (+ (car p1) 4) (- (cadr p1) 2)))
      (setq eye (list (+ (car p1) 2) (+ (cadr p1) 0.5)))

      ;; Dessin avec les commandes AutoCAD
      (command "_.PLINE" p1 p2 p3 p4 p5 p3 p6 "_C")
      (command "_.CIRCLE" eye 0.3)
      
      ;; Restauration de l'accrochage aux objets
      (setvar "OSMODE" old_osmode)
      (princ "\nJoyeux 1er avril ! Poisson dessiné avec succès. 🐟")
    )
  )
  (princ)
)
```

Comment l’utiliser :

Tapez la commande VLISP pour ouvrir l’éditeur (ou copiez simplement ce code dans un fichier texte que vous nommerez poisson.lsp).  
Chargez la routine dans votre dessin avec la commande APPLOAD.  
Tapez POISSON dans la ligne de commande et cliquez n’importe où sur votre écran !  
Amusez-vous bien ! Avez-vous un «&nbsp;vrai&nbsp;» projet AutoLISP sur lequel vous aimeriez qu’on se penche ensuite ?

## Je te remercie pour le poisson. Peux-tu me faire un poisson un peu plus évolué, avec une forme plus arrondie et des écailles ?

Bonjour Patrick,

C’est parti pour une version «&nbsp;Premium&nbsp;» de notre poisson d’avril ! :tropical_fish:

Pour lui donner une forme plus organique et arrondie, nous allons utiliser la commande POLYLIGN en exploitant son option d’arc pour le corps, et des segments droits pour la queue. Pour les écailles, nous allons générer plusieurs fois la commande ARC, et nous ajouterons un double CERCLE pour lui faire un œil plus expressif.

Voici le nouveau code AutoLISP à tester :

```
(defun c:SUPERPOISSON ( / pt p_top_mid p_tail p_tail_top p_tail_bot p_bot_mid p_eye old_osmode draw-scale)
  (setq pt (getpoint "\nCliquez pour placer le bout du nez du super poisson : "))
  (if pt
    (progn
      ;; Sauvegarde et désactivation de l'accrochage
      (setq old_osmode (getvar "OSMODE"))
      (setvar "OSMODE" 0)

      ;; Calcul des points principaux du corps
      (setq p_top_mid (list (+ (car pt) 5.0) (+ (cadr pt) 3.0)))
      (setq p_tail (list (+ (car pt) 10.0) (cadr pt)))
      (setq p_tail_top (list (+ (car pt) 13.0) (+ (cadr pt) 3.0)))
      (setq p_tail_bot (list (+ (car pt) 13.0) (- (cadr pt) 3.0)))
      (setq p_bot_mid (list (+ (car pt) 5.0) (- (cadr pt) 3.0)))
      (setq p_eye (list (+ (car pt) 2.0) (+ (cadr pt) 1.0)))

      ;; Dessin du corps et de la queue avec POLYLIGN (alternance Arc / Ligne)
      (command "_.PLINE" pt "_A" "_S" p_top_mid p_tail "_L" p_tail_top p_tail_bot p_tail "_A" "_S" p_bot_mid pt "")

      ;; Dessin de l'oeil et de la pupille
      (command "_.CIRCLE" p_eye 0.4)
      (command "_.CIRCLE" (list (+ (car p_eye) 0.1) (cadr p_eye)) 0.15)

      ;; Sous-fonction locale pour dessiner une écaille avec la commande ARC
      (defun draw-scale (dx dy)
        (command "_.ARC"
                 (list (+ (car pt) dx) (+ (cadr pt) dy))
                 (list (+ (car pt) dx 0.5) (+ (cadr pt) dy -0.5))
                 (list (+ (car pt) dx) (+ (cadr pt) dy -1.0))
        )
      )

      ;; Dessin des rangées d'écailles
      ;; Première rangée
      (draw-scale 4.0 1.5)
      (draw-scale 4.0 0.5)
      (draw-scale 4.0 -0.5)

      ;; Deuxième rangée
      (draw-scale 6.0 2.0)
      (draw-scale 6.0 1.0)
      (draw-scale 6.0 0.0)
      (draw-scale 6.0 -1.0)

      ;; Troisième rangée
      (draw-scale 8.0 1.5)
      (draw-scale 8.0 0.5)
      (draw-scale 8.0 -0.5)

      ;; Restauration de l'accrochage
      (setvar "OSMODE" old_osmode)
      (princ "\nEt voilà, un poisson tout en rondeur avec des écailles ! 🐠")
    )
  )
  (princ)
)
```

Pour l’utiliser :

Remplacez l’ancien code par celui-ci dans votre fichier .lsp.  
Rechargez-le avec la commande APPLOAD.  
Tapez SUPERPOISSON dans la ligne de commande.  
J’ai inclus une petite sous-fonction draw-scale dans le code pour éviter de répéter les calculs de la commande ARC à chaque écaille.

Le résultat vous plaît-il ? Si vous souhaitez que nous passions à un outil de production plus sérieux pour votre travail quotidien, n’hésitez pas à m’en faire part !
