# Faire un Lisp sans connaissance, gratuitement et légalement

**URL:** https://dessein-tech.com/t/faire-un-lisp-sans-connaissance-gratuitement-et-legalement/327
**Category:** AutoLISP
**Tags:** lisp, programmation
**Created:** 2024-06-25T13:10:55Z
**Posts:** 14

## Post 1 by @loudard60730 — 2024-06-25T13:10:56Z

Allez sur cette adresse :  
[https://www.perplexity.ai/](https://www.perplexity.ai/)

dites lui que vous voulez créer un lisp pour AutoCAD®,  
faisant telle chose en n’oubliant pas d’être le plus précis possible

exemple : me créer un lisp pour AutoCAD®, me mettant tous les points du dessin à la taille 3% par rapport à l’écran avec la commande ddptype

sa réponse :  
[https://www.perplexity.ai/search/me-crer-un-Pm3aPZ18T2ubR2V4GkJ1WA](https://www.perplexity.ai/search/me-crer-un-Pm3aPZ18T2ubR2V4GkJ1WA)

---

## Post 2 by @Patrick — 2024-06-25T14:12:12Z

Pas possible de voir le résultat avec le lien fourni mais on peut relancer le prompt.

Merci, effectivement ces IA sont étonnantes, en gardant à l’esprit que :

> [@Les risques pour les développeurs liés à l'utilisation de l'IA pour générer du code](https://dessein-tech.com/t/les-risques-pour-les-developpeurs-lies-a-lutilisation-de-lia-pour-generer-du-code/321):
>
> L’intelligence artificielle est partout, ce n’est rien de le dire. Vous l’avez certainement remarqué également. Dans le domaine du développement informatique, elle aide les développeurs à générer du code et bien souvent elle aide les débutants en développement informatique à générer leur premier code, ce qui est problématique pour plusieurs raisons, qui sont identifiées ci-dessous. Augmentation de la charge de travail : Le code généré par l’IA pourrait tripler la charge de travail de…

---

## Post 3 by @Patrick — 2024-06-26T03:00:43Z

Par curiosité j’ai demandé à Claude Sonnet 3.5 de générer ce Lisp, voici le résultat :

Voici un script LISP pour AutoCAD® qui ajuste la taille de tous les points du dessin à 3% de la taille de l’écran en utilisant la commande DDPTYPE :

```
(defun C:SetPointSize3Percent ()
  (vl-load-com)
  (setq acadObj (vlax-get-acad-object))
  (setq doc (vla-get-ActiveDocument acadObj))
  
  ; Ouvrir la boîte de dialogue DDPTYPE
  (command "DDPTYPE")
  
  ; Calculer 3% de la hauteur de l'écran
  (setq screenHeight (getvar "SCREENSIZE"))
  (setq pointSize (* screenHeight 0.03))
  
  ; Définir la taille du point
  (setq ptypeObj (vla-get-PdMode doc))
  (vla-put-PdSize ptypeObj pointSize)
  
  ; Mettre à jour l'affichage
  (vla-Regen doc acAllViewports)
  
  (princ "\nTaille des points définie à 3% de la hauteur de l'écran.")
  (princ)
)

; Pour exécuter la fonction, tapez SetPointSize3Percent dans la ligne de commande AutoCAD
```

Pour utiliser ce script :

1. Copiez ce code dans un éditeur de texte.
2. Enregistrez-le avec une extension .lsp (par exemple «&nbsp;SetPointSize3Percent.lsp&nbsp;»).
3. Chargez le fichier dans AutoCAD® en utilisant la commande APPLOAD.
4. Tapez SetPointSize3Percent dans la ligne de commande AutoCAD® pour exécuter la fonction.

Ce script fait les choses suivantes :

1. Il ouvre la boîte de dialogue DDPTYPE.
2. Il calcule 3% de la hauteur de l’écran.
3. Il définit la taille des points à cette valeur.
4. Il met à jour l’affichage pour refléter les changements.

Notez que ce script utilise l’interface ActiveX d’AutoCAD® pour certaines opérations, ce qui le rend compatible avec les versions récentes d’AutoCAD®.

---

## Post 4 by @loudard60730 — 2024-08-10T22:12:07Z

Réponse

Voici un script AutoLISP qui met à jour la taille des points dans votre dessin AutoCAD® à 3 % par rapport à l’écran en utilisant la commande `DDPTYPE` :

lisp

```
(defun c:ResizePoints ()
  (setq screen-width (getvar "SCREENSIZE"))
  (setq point-size (* 0.03 screen-width)) ; 3% de la largeur de l'écran
  (command "DDPTYPE" point-size) ; Appliquer la nouvelle taille de point
  (princ (strcat "\nTaille des points mise à jour à : " (rtos point-size 2 2)))
)

(princ "\nTapez 'ResizePoints' pour ajuster la taille des points.")
(princ)
```

## Explication du Code

- **`(defun c:ResizePoints ()`** : Définit une nouvelle commande LISP nommée `ResizePoints`.
- **`(setq screen-width (getvar "SCREENSIZE"))`** : Récupère la taille de l’écran.
- **`(setq point-size (* 0.03 screen-width))`** : Calcule 3 % de la largeur de l’écran pour définir la taille des points.
- **`(command "DDPTYPE" point-size)`** : Exécute la commande `DDPTYPE` avec la nouvelle taille de point.
- **`(princ (strcat "\nTaille des points mise à jour à : " (rtos point-size 2 2)))`** : Affiche un message confirmant que la taille des points a été mise à jour.

## Utilisation

1. Copiez le code ci-dessus dans un fichier texte et enregistrez-le avec l’extension `.lsp`, par exemple `ResizePoints.lsp`.
2. Dans AutoCAD®, utilisez la commande `APPLOAD` pour charger le fichier LISP.
3. Tapez `ResizePoints` dans la ligne de commande pour exécuter le script et ajuster la taille des points.

Ce script vous permettra de modifier facilement la taille des points dans votre dessin AutoCAD® selon vos besoins.

---

## Post 5 by @loudard60730 — 2024-08-10T22:13:15Z

J’adore apprendre en lisant les explications :star_struck:

---

## Post 6 by @Patrick — 2024-08-11T00:23:45Z

Et n’oubliez pas de voter !

> [@L'Intelligence Artificielle et l'AutoLISP, votre avis ?](https://dessein-tech.com/t/lintelligence-artificielle-et-lautolisp-votre-avis/369):
>
> L’IA et l’[AutoLISP](https://www.da-code.fr/) peuvent être considérés comme un mariage de raison ou une évolution inévitable pour certains, en raison des nombreux avantages qu’ils offrent en termes d’efficacité, de précision et d’innovation. Cependant, pour d’autres, cette évolution peut être perçue comme un cauchemar en raison des implications sur l’emploi, le débogage, la complexité et les questions éthiques et de sécurité. Je vous propose de répondre à ce sondage pour avoir une…

---

## Post 7 by @serge.camire — 2024-09-09T16:18:52Z

Bonjour,  
Je comprends que le sujet est de montrer que l’IA s’immisce tranquillement dans nos vies. Il est cependant important de souligner les limites et dérapages possibles. Ce n’est pas la panacée, même si cela pourra servir de dépanneur.

Si l’IA avait été plus renseignée (car elle apprend tous les jours), elle aurait proposé :  
`(setvar "pdsize" -0.3)`

Voir la possibilité d’inscrire des valeurs négatives via PDSIZE ici :  
[https://help.autodesk.com/view/ACD/2025/ENU/?guid=GUID-826CA91D-704B-400B-B784-7FCC9619AFB9](https://help.autodesk.com/view/ACD/2025/ENU/?guid=GUID-826CA91D-704B-400B-B784-7FCC9619AFB9)

---

## Post 8 by @Patrick — 2024-09-09T16:22:40Z

Bien vu @serge.camire ! :wink:

---

## Post 9 by @Elian — 2025-05-27T14:24:57Z

Bonjour à tous,  
Le LISP est génial surtout si Perplexity fait le boulot.  
Je lui ai donc demandé de faire ce LISP : «&nbsp;Peux-tu faire un lisp qui ferait cela : Exploser un bloc en supprimant tous les paramètres de mise en forme et d’ajustement, ensuite purger le bloc puis le recréer en lui donnant un nouveau nom&nbsp;»  
Il m’a proposé une solution mais qui ne fonctionne pas correctement puisque, malgré 5 variantes proposées par Perplexity, la reconstitution du bloc ne fonctionne pas et les éléments restent décompsés.  
Le derniers script est le suivant :

## Solution recommandée

**Essaye ce script, qui force la sélection à chaque étape et demande explicitement le point d’insertion :**

lisp

```
(defun c:recreerBloc (/ bloc nom nvnom pt ss)
  (setq bloc (car (entsel "\nSélectionnez le bloc à retraiter : ")))
  (if (and bloc (eq (cdr (assoc 0 (entget bloc))) "INSERT"))
    (progn
      (setq nom (cdr (assoc 2 (entget bloc))))
      (command "_explode" bloc)
      (alert "Merci de sélectionner les objets issus de l'explosion")
      (setq ss (ssget))
      (if ss
        (progn
          (setq pt (getpoint "\nCliquez le point d'insertion pour le nouveau bloc : "))
          (command "-purge" "b" nom "n")
          (setq nvnom (getstring T "\nEntrez le nouveau nom du bloc : "))
          (command "-block" nvnom pt ss "")
          (command "-insert" nvnom pt "" "" "")
          (princ (strcat "\nBloc recréé sous le nom : " nvnom))
        )
        (princ "\nAucun objet sélectionné après explosion.")
      )
    )
    (princ "\nAucun bloc sélectionné ou objet non valide.")
  )
  (princ)
)
```

Bon, à ce stade je ne sais plus ce que je dois lui demander de corriger.  
Avez-vous une idée ?

Merci d’avance / Elian

---

## Post 10 by @Patrick — 2025-05-27T15:37:56Z

Voici les principales erreurs identifiées dans ce programme AutoLISP (analyse Claude):

## Erreurs critiques

**1. Gestion de la sélection après explosion**

```
(alert "Merci de sélectionner les objets issus de l'explosion")
(setq ss (ssget))
```

L’alert interrompt le flux et l’utilisateur doit cliquer OK avant de pouvoir sélectionner. Il faut utiliser `princ` à la place :

```
(princ "\nMerci de sélectionner les objets issus de l'explosion : ")
```

**2. Problème avec la commande PURGE**

```
(command "-purge" "b" nom "n")
```

Cette syntaxe est incorrecte. La bonne syntaxe est :

```
(command "_.purge" "_blocks" nom "_no")
```

**3. Erreur dans la commande BLOCK**

```
(command "-block" nvnom pt ss "")
```

On ne peut pas passer directement un selection set. Il faut convertir ou utiliser une approche différente :

```
(command "_.block" nvnom pt)
(command ss "")
```

## Erreurs mineures

**4. Gestion des erreurs incomplète**

- Pas de vérification si `pt` est valide
- Pas de vérification si `nvnom` est vide
- La commande `_explode` peut échouer

**5. Redondance dans l’insertion**

```
(command "-insert" nvnom pt "" "" "")
```

Les paramètres d’échelle et rotation vides peuvent poser problème selon la configuration AutoCAD®.

## Version corrigée suggérée

```
(defun c:recreerBloc (/ bloc nom nvnom pt ss)
  (setq bloc (car (entsel "\nSélectionnez le bloc à retraiter : ")))
  (if (and bloc (eq (cdr (assoc 0 (entget bloc))) "INSERT"))
    (progn
      (setq nom (cdr (assoc 2 (entget bloc))))
      (if (command "_explode" bloc)
        (progn
          (princ "\nSélectionnez les objets issus de l'explosion : ")
          (setq ss (ssget))
          (if ss
            (progn
              (setq pt (getpoint "\nCliquez le point d'insertion : "))
              (if pt
                (progn
                  (setq nvnom (getstring T "\nNouveau nom du bloc : "))
                  (if (and nvnom (/= nvnom ""))
                    (progn
                      (command "_.purge" "_blocks" nom "_no")
                      (command "_.block" nvnom pt)
                      (command ss "")
                      (command)
                      (command "_.insert" nvnom pt 1 1 0)
                      (princ (strcat "\nBloc recréé : " nvnom))
                    )
                    (princ "\nNom de bloc invalide.")
                  )
                )
                (princ "\nPoint d'insertion non spécifié.")
              )
            )
            (princ "\nAucun objet sélectionné.")
          )
        )
        (princ "\nErreur lors de l'explosion du bloc.")
      )
    )
    (princ "\nSélection invalide.")
  )
  (princ)
)
```

Les corrections principales portent sur la syntaxe des commandes AutoCAD® et l’amélioration de la gestion d’erreurs.

---

## Post 11 by @Elian — 2025-05-27T17:47:51Z

Bonjour Patrick,  
Merci de votre retour. C’est toujours épatant de ne pas être seul dans les difficultés :smiley:.  
J’ai chargé le nouveau script mais malheureusement, cela ne fonctionne toujours pas pour ce qui est de la reconstitution du bloc.  
Quand le LISP est appliqué sur le bloc, il l’explose tout simplement et le laisse en l’état.  
Je suis sur AutoCAD LT® 2026. Le problème vient-du fait qu’il s’agit de la version LT ?  
Merci d’avance pour le temps que vous consacré à mon problème.  
Bonne soirée / Elian

---

## Post 12 by @Patrick — 2025-05-27T18:01:20Z

Bonjour l’intelligence artificielle peut rendre de grands services surtout pour les programmeurs débutants d’ailleurs, en donnant la structure générale d’un programme et la logique comme c’est le cas ici.

Après pour déboguer correctement un programme et s’assurer que tout fonctionne bien il faut quand même avoir des connaissances suffisantes dans le langage et on ne peut pas éviter cette étape. Je ne suis moi-même plus trop dans le coup donc je ne vais pas pouvoir vous aider plus mais peut-être ceux qui passeront par ici le pourront.

---

## Post 13 by @system — 2025-10-16T08:00:22Z



---

## Post 14 by @Patrick — 2025-10-17T01:44:12Z

Bonjour, suite à cette discussion, je signale l’ **espace Perplexity pour AutoLISP** que j’ai mis en place, qui vous donnera des réponses plus adaptées:

> [@Perplexity AI pour AutoLISP est un moteur de recherche conversationnel IA gratuit !](https://dessein-tech.com/t/perplexity-ai-pour-autolisp-est-un-moteur-de-recherche-conversationnel-ia-gratuit/3367):
>
> [Perplexity AI pour AutoLISP](https://dessein-tech.com/autolisp-ia) est un moteur de recherche conversationnel IA qui révolutionne l’accès à l’information technique, particulièrement utile pour les professionnels experts AutoCAD® cherchant des réponses précises et sourcées sur la programmation AutoLISP et Vlisp. [[autolisp-autocad-perplexity-ai-ia]](https://dessein-tech.com/autolisp-ia) [!note] L’intelligence artificielle que nous vous proposons ici n’a pas pour but de remplacer l’expertise humaine dans le domaine de la programmation. Elle vise plutôt à guider le progra…
