Aller au contenu

Améglioration Lisp de Gile "RENAMETAG" et "CATP" de Patrick_35


nen

Messages recommandés

Bonjour le forum,

J'aimerais solliciter vos connaissances sur deux points.

Tout d'abord, j'utilise actuellement un lisp "RENAMETAG" de Gile qui fonctionne très bien, mais je me demande s'il serait envisageable de l'améliorer. Actuellement, ce lisp me demande à la fois l'ancienne et la nouvelle étiquette. Cependant, dans la plupart des cas, mes blocs possèdent trois ou quatre attributs, ce qui nécessite entre 6 et 8 opérations de copier/coller.
Serait-il envisageable d'ajouter directement ces informations dans le lisp et de simplement sélectionner les blocs concernés ?

Ensuite, en ce qui concerne le lisp "CATP" de "Patrick_35", je me demandais s'il serait possible d'ajouter une fonctionnalité de sélection à la volée.
Cela éviterait d'avoir à le retaper la commande à chaque utilisation.

 

Je vous remercie d'avance pour vos suggestions et vos idées.

Capture.JPG

CatP.lsp RENAMETAG.lsp

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

Ceci n'est pas une amélioration mais une adaptation spécifique à ton besoin 😜
Essaye ceci (je ne l'ai pas testé) :

(defun c:RENAMETAGNEN (/ lst old new ss)
  (vl-load-com)
  (or *acad* (setq *acad* (vlax-get-acad-object)))
  (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
  (setq lst '(("XXXXXXXXXXXXXX" . "DESIGNATION") ("XX-X-XXXX" . "NUMERO") ("XXXX" . "SURFACE") ("XX-XX" . "DIVERS")))
  (if (ssget '((0 . "INSERT") (66 . 1)))
    (progn
      (vlax-for blk (setq ss (vla-get-ActiveSelectionSet *acdoc*))
        (foreach att (vlax-invoke blk 'GetAttributes)
          (if (setq old (assoc (strcase (vla-get-TagString att)) lst))
            (vla-put-TagString att (cdr old))
          )
        )
      )
      (vla-Delete ss)
    )
  )
  (princ)
)

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Luna,

Je te remercie pour ton aide👍.
Ton code fonctionne de manière optimale. Néanmoins, il présente un inconvénient en supprimant le texte de l'invite. Serait-il envisageable d'éviter cette suppression ?

En effet, cette problématique répond à un besoin spécifique. Je suis fréquemment amené à recevoir des plans au format DWG provenant de diverses entreprises, chacune ayant ses propres attributs spécifiques. À chaque fois que des corrections sont nécessaires, cela requiert des solutions spécifique. Il me semble qu'Autodesk aurait pu développer des commandes spécifique aux attributs pour faciliter notre travail, surtout lorsque les blocs avec attributs sont mal conçus.

@+
Meilleures salutations

Lien vers le commentaire
Partager sur d’autres sites

Coucou @nen,

Qu'entends-tu par

Il y a 14 heures, nen a dit :

Néanmoins, il présente un inconvénient en supprimant le texte de l'invite.

Quel texte de l'invite ? Veux-tu parler de ceci ?

(/= (setq old (strcase (getstring "\nAncienne étiquette: "))) "")
(/= (setq new (strcase (getstring "\nNouvelle étiquette: "))) "")

Si c'est le cas, comment dois-je l'intégrer pour que cela réponde bien à tes besoins ?

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Ohh, je vois ! Mais n'ayant fait que modifier le programme RENAMETAG, si le programme RENAMETAGNEN supprime l'invite alors RENAMETAG avait alors le même problème déjà, n'est-ce pas ? J'avoue ne jamais avoir eu à renommer les étiquettes donc je ne sais pas trop à quoi est liée l'invite d'un attribut. Je verrai ce que je peux faire et s'il y a moyen d'éviter ce genre de soucis.

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité