Renommer un bloc anonyme en AutoLISP, et qu'est-ce qu'un bloc anonyme ?

Bonjour, la routine AutoLISP ci-dessous vous servira à renommer un bloc anonyme AutoCAD® en bloc non anonyme. Destinée plutôt aux débutants puisqu’elle est abondamment commentée, et ceci explique la longueur du programme qui, sans commentaire, et destinée à des utilisateurs expérimentés, serait beaucoup plus courte.

RENOMMER_ANONYME_PEDAGO.lsp (2,6 Ko)

;;; ==========================================================================
;;; COMMANDE : RENOMMER_ANONYME_PEDAGO
;;; DESCRIPTION : Renomme un bloc anonyme (MInsert ou Classique).
;;; AUTEUR : Assistant IA Dessein-Tech https://dessein-tech.com/t/lassistant-expert-autocad-ia-pro-est-disponible-publiquement/9335
;;; VERSION : AutoCAD 2026 Compatible 
;;; ==========================================================================

(defun c:RENOMMER_ANONYME_PEDAGO ( / choix entite objetVLA typeObjet nomActuel defBloc nouveauNom erreur)
  
  (vl-load-com)

  ;; 1. SELECTION
  (setq choix (entsel "\n>>> Cliquez sur le bloc (MInsert ou Classique) : "))

  (cond
    ((null choix)
     (princ "\nAnnulation : Aucun objet sélectionné.")
    )

    (t
     (setq entite (car choix))
     (setq objetVLA (vlax-ename->vla-object entite))
     
     ;; 2. VERIFICATION DU TYPE D'OBJET 
     ;; On récupère le nom interne de l'objet
     (setq typeObjet (vla-get-ObjectName objetVLA))

     ;; On vérifie si c'est un Bloc OU un MInsert
     ;; La fonction 'and' vérifie si les deux conditions sont fausses.
     (if (and (/= typeObjet "AcDbBlockReference") 
              (/= typeObjet "AcDbMInsertBlock")) ; <--- Ajout du support MInsert
       
       ;; Si ce n'est ni l'un ni l'autre :
       (princ (strcat "\nErreur : L'objet est un " typeObjet ", pas un bloc."))
       
       ;; SI C'EST UN BLOC (Normal ou MInsert), ON CONTINUE :
       (progn
         (setq nomActuel (vla-get-name objetVLA))

         ;; 3. VERIFICATION SI ANONYME
         (if (/= (substr nomActuel 1 1) "*")
           (princ (strcat "\nInfo : Ce bloc n'est pas anonyme (" nomActuel ")."))
           
           (progn
             (princ (strcat "\nBloc anonyme détecté (" typeObjet ") : " nomActuel))
             
             ;; 4. DEMANDE DU NOM
             (setq nouveauNom (getstring T "\n>>> Entrez le NOUVEAU NOM : "))

             (if (/= nouveauNom "")
               (progn
                 ;; 5. ACCES A LA DEFINITION
                 (setq defBloc (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) nomActuel))

                 ;; 6. RENOMMAGE
                 (setq erreur (vl-catch-all-apply 'vla-put-name (list defBloc nouveauNom)))

                 (if (vl-catch-all-error-p erreur)
                   (princ "\nERREUR : Nom invalide ou existant.")
                   (princ (strcat "\nSUCCES ! Renommé en : " nouveauNom))
                 )
               )
               (princ "\nAnnulation.")
             )
           )
         )
       )
     )
    )
  )
  (princ)
)

Qu’est-ce qu’un bloc anonyme et à quoi sert-il?

Pour faire simple : un bloc anonyme est un bloc « fantôme » géré par le système, conçu pour ne pas être manipulé directement par l’utilisateur.

Voici les 3 points clés à retenir :

1. Comment le reconnaître ?

Contrairement à un bloc classique (ex: « PORTE_90 »), un bloc anonyme a un nom généré par AutoCAD® qui commence toujours par un astérisque (*).

  • Il n’apparaît pas dans la liste de la commande INSERER.

  • Il n’apparaît pas dans la commande RENOMMER.

  • On ne peut pas l’éditer avec MODIFBLOC.

2. Les différents types (Le secret des préfixes)

La lettre qui suit l’astérisque indique souvent son origine :

  • *D... (Dimensions) : Vos cotes sont en réalité des blocs anonymes ! C’est un assemblage de lignes, flèches et textes regroupés.

  • *X... (Hachures) : Les hachures complexes sont souvent gérées ainsi.

  • *T... (Tableaux) : Les tableaux AutoCAD®.

  • *U... (User / Unnamed) : Il est utilisé pour deux choses :

  • Les Blocs Dynamiques : Quand vous étirez un bloc dynamique, AutoCAD® crée une copie anonyme (*U123) pour afficher cette forme spécifique sans modifier la définition originale du bloc.

  • La Protection : Des développeurs (ou des petits malins) convertissent des blocs normaux en *U pour empêcher les utilisateurs de les modifier ou de les copier facilement, car ils deviennent invisibles dans les listes.

3. À quoi ça sert concrètement ?

  • Pour AutoCAD® (Usage légitime) : Cela permet de créer des milliers de variantes d’objets (comme des cotes de longueurs différentes) sans polluer la liste des blocs de votre dessin avec des noms comme « COTE_1 », « COTE_2 », etc.

  • Dans certains cas (Usage détourné) : La personne qui a créé un fichier peut combiner un Bloc Anonyme (*U) avec la propriété MInsert (Répétition).

  • Anonyme = Impossible à renommer/éditer via l’interface.

  • MInsert = Impossible à décomposer (Explode).

  • Résultat = Un objet « verrouillé » très difficile à modifier sans programmation.