Aller au contenu

renommer bloc


philsogood

Messages recommandés

hello

sujet hyper rabattu mais j'ai pas trouvé dans notre encyclopédie (cadXP) ce que je cherchais.

j'ai fait un superflatten sur des blocs contenus dans un fichier et tous les blocs qui ont été modifiés se tapent un suffixe -flat-1 (on se demande à quoi ça sert...)

je souhaite supprimer ce suffixe par rien du tout

remplacer -flat-1 par une suite de caractères aurait été facile (commande RENOMMER) mais je sais pas comment faire pour ne rien mettre

merci pour vos lumières

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

NB : ces rajouts de -flat-1 se font en suffixe si ça peut aider

 

Au temps pour moi, j'avais mal lu...

 

(defun c:removesuffix (/ cnt0 cnt1 name)
 (vl-load-com)
 (setq cnt0 0
cnt1 0
)
 (vlax-for b (vla-get-Blocks
	(vla-get-ActiveDocument
	  (vlax-get-acad-object)
	)
      )
   (setq name (vla-get-Name B))
   (if	(wcmatch name "*-flat-1")
     (progn
(if (vl-catch-all-error-p
      (vl-catch-all-apply 'vla-put-Name (list b (substr name 1 (- (strlen name) 7))))
    )
  (setq cnt0 (1+ cnt0))
  (setq cnt1 (1+ cnt1))
)
     )
   )
 )
 (princ
   (cond
     ((zerop cnt1) "\nAucun bloc n'a été renommé")
     ((= 1 cnt1) "\n1 bloc a été renommé")
     (T (strcat "\n" (itoa cnt1) " blocs ont été renommés"))
   )
 )
 (if (< 0 cnt1)
   (princ
     (cond
((zerop cnt0) " (soit tous les blocs à traiter).")
((= 1 cnt0) " (1 bloc n'a pu être renommé).")
(T (strcat " (" (itoa cnt0) " blocs n'ont pu être renommés)."))
     )
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

pffff

je suis tellement nul en lisp que je ne comprends pas pk ça ne marche pas!!

j'ai un message d'erreur

Commande: removesuffix ; erreur: Erreur Automation Nom d'enregistrement dupliqué 

Phil

PS : à la rentrée je fais enfin une formation sur le lisp... je vais peut être égaler certains maîtres de ce forum.... OK je sors!

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

Ça semble vouloir dire que le LISP essaye de donner à une définition de bloc un nom déjà existant dans la table des blocs. C'est la raison pour la quelle SuperFlatten ajoute un suffixe aux blocs "aplatis".

 

Imaginons qu'avant le lancement de SuperFlaten tu aies 2 blocs nommés "Toto", un bien à plat sur XY, l'autre non. SuperFlatten aplatit le second (en fait crée un nouveau bloc avec résultat de la projection des composants du bloc source sur le plan XY). Ce nouveau bloc ne peut pas s'appeler "Toto" parce qu'il est différent de "Toto", SuperFlatten le nomme donc "Toto-flat-1" pour ne pas provoquer l'erreur que tu as eu.

Si ensuite su lances RemoveSuffix (que j'ai écrit un peu vite et sans réfléchir) RemoveSuffix va tenter de renommer "Toto-flat-1" en "Toto" et provoquera cette erreur parce que "Toto" existe déjà dans la table des blocs.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

hello

Merci (gile)

sans même avoir utiliser ton nouveau lisp j'ai tout simplement purger mon fichier de tous les anciens blocs et j'ai ensuite lancé ton isp, ça marche à merveille

Phil

Ps: je n'avais pas remarqué que tous les blocs avaient été renommés lors de superflatten

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

hello

toujours embéte par le "renommage" des blocs...

dans mon cas j'ai un bloc et je souhaite lui ajouter un suffixe, problème lorsque je tape :

renommer

bloc

ancien nom : *

nouveau nom : *-a

Rien en se passe

Aucun élément n'a été renommé.

 

en gros j'ai la problématique inverse à celle que j'avais la dernière fois, partir d'un nom de bloc sans suffixe pour lui en ajouter un

 

J'ai regardé le lisp de (gile) du lien http://cadxp.com/index.php?/topic/11999-renommer-plusieurs-blocs/page__view__findpost__p__62042 mais ça ne marche pas non plus

Commande: CHANGE_SUFF

 

Entrez le suffixe à changer: *

 

Entrez le nouveau suffixe: *-a

 

Commande:

 

Pas très ergonomique cette fonction renommer...

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

extraordinaire ce ???

et dire que j'étais apssé par un lisp la dernière fois alors qu'il suffisait d'un truc aussi bête (en même temps j'ai pas essayé cette solution sur mon ancien problème)

Merci Formabois

Au fait sur le post j'ai cru comprendre que tu étais un "ancien" (je cite)

tu approches les combien sans indiscrétion?

(tu peux répondre en PM ;)

Phil

Bonne soirée

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

  • 6 mois après...

eRf...

encore en galère avec mes blocs...

pfiouuuu

comment rajouter un suffixe a mes blcos?

renommer et * marche pas

Aucun élément n'a été renommé.

j'ai essa&yé le lisp de (gile) change_suff mais ça marche aps non plus...

je veux juste rajouter _v à mes blocs en sachant que la longueur du nombre de caractères de mes blocs peut varier (donc la solution avec le ? n'est pas valable)

comment faire?

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

comment rajouter un suffixe a mes blcos?

Salut,

 

- Ancien nom : *

- Nouveau nom : autant de ? que le nom de calque le plus long

et à la suite des point d'interrogation noter _V

et le tour est joué ;)

Studio Gfilm - Agence de communication par l'image

 

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"

Lien vers le commentaire
Partager sur d’autres sites

  • 10 mois après...

hello

même problème de suppression de suffixe suite à une erreur de manip (j'ai jeté le .bak depuis le temps)

j'ai des blocs qui se terminent pas *_cach

je pensais pourvoir utiliser le lisp de (gile) en modifiant le _flat-1 par _cach mais ça ne fonctionne pas

comment faire pour supprimer ces suffixes?

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Il ne suffit pas de remplacer "_flat-1" par "_cach". Il faut aussi modifier le nombre de lettres à supprimer à la fin du nom du bloc (7 par 5) dans :

(substr name 1 (- (strlen name) 7))

 

Un routine plus polyvalente qui demande d'entrer le suffixe à supprimer :

(defun c:removesuffix (/ suff cnt0 cnt1 sufLen name)
 (if (setq suff (getstring "\nEntrez le suffixe à supprimer: "))
   (progn
     (vl-load-com)
     (setq cnt0   0
    cnt1   0
    sufLen (strlen suff)
     )
     (vlax-for	b (vla-get-Blocks
	    (vla-get-ActiveDocument
	      (vlax-get-acad-object)
	    )
	  )
(setq name (vla-get-Name B))
(if (wcmatch name (strcat "*" suff))
  (progn
    (if	(vl-catch-all-error-p
	  (vl-catch-all-apply
	    'vla-put-Name
	    (list b (substr name 1 (- (strlen name) sufLen)))
	  )
	)
      (setq cnt0 (1+ cnt0))
      (setq cnt1 (1+ cnt1))
    )
  )
)
     )
     (princ
(cond
  ((zerop cnt1) "\nAucun bloc n'a été renommé")
  ((= 1 cnt1) "\n1 bloc a été renommé")
  (T (strcat "\n" (itoa cnt1) " blocs ont été renommés"))
)
     )
     (if (< 0 cnt1)
(princ
  (cond
    ((zerop cnt0) " (soit tous les blocs à traiter).")
    ((= 1 cnt0) " (1 bloc n'a pu être renommé).")
    (T
     (strcat " (" (itoa cnt0) " blocs n'ont pu être renommés).")
    )
  )
)
     )
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é