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.