Bonjour,
Je vais vous donner le contexte. Aujourd'hui, je dois mettre à jour des plans réalisés par un autre bureau d'études. J'utilise la version 2021 d'AutoCAD.
Étant habitué à travailler avec des blocs et des attributs, j'utilise les commandes ATTOUT et ATTIN pour extraire, intégrer et mettre à jour mes données.
Je me trouve aujourd'hui confronté à l'implantation d'une grande quantité d'objets nommés avec des TextMult totalement détachés. Selon un document Excel, je dois renommer chacun de ces textes en suivant une nouvelle codification. Au cas par cas, la fonction "RECHERCHER" n'est donc pas viable, vu la quantité de textes à mettre à jour.
Je recherche donc un programme en LISP capable de mettre à jour tous les textes de mon fichier en se référant à une liste d'anciens et de nouveaux noms.
Voici où j'en suis dans mes recherches :
(defun c:UpdateCameraNamesTest ()
(setq oldNewNames
'(("CAM-3-01" . "CAM-SAS-N3-01")
("CAM-3-02" . "CAM-SAS-N3-02")
("CAM-3-03" . "CAM-UVL-N3-03")
("CAM-3-04" . "CAM-SAS-N3-04")
("CAM-3-05" . "CAM-PRP-N3-05")
("CAM-3-06" . "CAM-DJT-N3-06")
("CAM-3-07" . "CAM-UHR-N3-07")
("CAM-3-08" . "CAM-PAL-N3-08")
("CAM-3-09" . "CAM-PAL-N3-09")
; Ajoutez d'autres correspondances ici
)
)
(vl-load-com)
(setq ss (ssget "_M"))
(if ss
(progn
(setq i 0)
(while (< i (sslength ss))
(setq text (vlax-ename->vla-object (ssname ss i)))
(setq oldText (vla-get-textstring text))
(setq newText (assoc oldText oldNewNames))
(if newText
(vla-put-textstring text (cdr newText))
)
(setq i (1+ i))
)
)
)
(princ "Mise à jour des noms des caméras effectuée.")
)
Une fois le programme chargé dans mon fichier, je le lance, et un message s'affiche : "Mise à jour des noms des caméras effectuée", m'assurant ainsi que le LISP a effectué son travail. Cependant, aucun texte n'a été modifié.
J'ai l'impression qu'il y a un problème lors de la phase de sélection, et que les critères ne tiennent pas compte des textes dont j'ai besoin. C'est pourquoi aucun texte correspondant à ceux de ma liste n'est trouvé, et le LISP se termine. Malheureusement, malgré mes efforts pour résoudre le problème, je n'arrive pas à atteindre mon objectif.
J'espère avoir été clair dans ma description. J'espère également qu'une personne pourra m'aider et que ce post sera utile à d'autres à l'avenir.
Cordialement,
Lucas