laud69 Posté(e) le 19 octobre 2006 Posté(e) le 19 octobre 2006 Bonjour, Je cherche une astuce pour pouvoir renommer plusieurs blocs à la fois, en selectionnant des chaines de caracteres type, j'explique: J'utilise la commande par le menu Format\renommer\bloc Avec * j'arrive à renommer facilement les préfixe de mes blocs, mais je voudrais faire la meme chose n'importe quelle chaine de carateres. Exemples:des blocs qui s'appellent : Vanne-DN1-FAVanne-DN2-FA Avec Anicen nom : Vanne*nouveau nom Van* ça marche tous ce qui avant l'asterisque est modifiéet devient Van-DNx-Fa Moi je voudrais changer la fin càd remplacer FA par Vfaqd je metsancien nom : *FA les blocs sont bien mis en surbrillance (sélectionnés) dans liste nouveau nom : *Vfa ben il me change pas mon suffixe :( Ou bien encore remplacer tous les "DN" par "diametre" Est ce que quelqu'un aurait une façon faire ? Merci d'avance ! Nb: j'ai plusieurs centaines de blocs à renommer...
yalta Posté(e) le 20 octobre 2006 Posté(e) le 20 octobre 2006 ...peut-être avec [surligneur]Lupas Rename 2000[/surligneur] à téléchargeriçi....ou ailleurs... ;)
phil_vsd Posté(e) le 21 octobre 2006 Posté(e) le 21 octobre 2006 Hello, Va voir là : Accueil du Forum > LISP et Visual LISP > Routines LISP > Lisps de Patrick_35 Il y a le lisp Ren qui est super ! A+ "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
laud69 Posté(e) le 21 octobre 2006 Auteur Posté(e) le 21 octobre 2006 ...peut-être avec [surligneur]Lupas Rename 2000[/surligneur] à téléchargeriçi....ou ailleurs... ;) Merci de ton aide.Mais ce n'est pas ce que je cherche car en fait mes blocs sont des blocs internes dans un seul fichier. (Mais je le garde sous le coude il va m'être utile pour autre chose ;) )
laud69 Posté(e) le 21 octobre 2006 Auteur Posté(e) le 21 octobre 2006 Hello, Va voir là : Accueil du Forum > LISP et Visual LISP > Routines LISP > Lisps de Patrick_35 Il y a le lisp Ren qui est super ! A+ Salut, Merci à toi (et à Patrick_35)J'ai testé rapidement ça a l'air pas malsauf que pour le moment il renomme pas mes blocs...et une fois que je fais ok, il deplace le bloc sous le pointeur de la souris... Je me pencherais la dessus lundi. Merci !
phil_vsd Posté(e) le 21 octobre 2006 Posté(e) le 21 octobre 2006 Re ! T'es sûr de la fonction lisp, chez moi ça marche !! ren + espaceChoix des objetDemande du nouveau nomet on valide. J'ai peut-être confondu les lisp ! Teste ça : ;;; Renomme le bloc sélectionné avant ou après le lancement de la commande (defun c:ren (/ AcDoc ss ref name new) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (= 1 (getvar "pickfirst")) (setq ss (ssget "_I" '((0 . "INSERT")))) (eq 1 (sslength ss)) ) (sssetfirst nil nil) (progn (sssetfirst nil nil) (while (not (setq ss (ssget "_:S:E" '((0 . "INSERT"))))) ) ) ) (setq ref (vlax-ename->vla-object (ssname ss 0))) (if (vlax-property-available-p ref 'EffectiveName) (setq name (vla-get-EffectiveName ref)) (setq name (vla-get-Name ref)) ) (setq bloc (vla-item (vla-get-blocks AcDoc) name)) (while (not (and (setq new (getstring "\nSpécifiez le nouveau nom : ")) (not (tblsearch "BLOCK" new)) (/= new "") ) ) (if (tblsearch "BLOCK" new) (princ (strcat "\Le bloc \"" new "\" existe déjà.")) ) ) (vla-put-Name bloc new) (princ) ) C'est pas de moi, je suis une truffe en lisp... A++ "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
laud69 Posté(e) le 23 octobre 2006 Auteur Posté(e) le 23 octobre 2006 Re ! T'es sûr de la fonction lisp, chez moi ça marche !! ren + espaceChoix des objetDemande du nouveau nomet on valide. Alors j'ai ressayer sur un autre pc et ça marche pas... Il renomme pas le blocJ'ai bien la fenetre avec l'ancien nom du bloc à modifier, je change le nom et fais OKQuand je regarde dans propriété, ben le bloc n'a pas changé de nom... Teste ça : C'est pas de moi, je suis une truffe en lisp... A++ Celui là je l'avais déjà récupéré ;) mais je cherche qqchose pour traiter plusieurs blocs à la fois.. Merci de ton aide !
phil_vsd Posté(e) le 23 octobre 2006 Posté(e) le 23 octobre 2006 Salut, Ha non, ce lisp ne renomme que les blocs ayant le même nom... Sorry ! Amicalement. Philippe. "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
Patrick_35 Posté(e) le 23 octobre 2006 Posté(e) le 23 octobre 2006 SalutEssaye la commande _.rename @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
laud69 Posté(e) le 24 octobre 2006 Auteur Posté(e) le 24 octobre 2006 SalutEssaye la commande _.rename @+ J'ai essayé, c'est la commande normale ça non ?Celle dont je parle dans mon premier post. merci qd meme
Patrick_35 Posté(e) le 24 octobre 2006 Posté(e) le 24 octobre 2006 Ah oui, c'est exacte :red: Ca m'apprendra à tout lire :cool: Bon, du coup je vais me pencher sur ton problème et voir ce que je peux faire (pas avant demain soir) pour faire des chaînes de remplacements @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 24 octobre 2006 Posté(e) le 24 octobre 2006 Je viens de faire un test avec la commande _.rename et les * fonctionnentEx : *TOTO --> 45*TOTO et j'ai un 45 qui vient devant devant tout mes blocs se terminant par toto @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
laud69 Posté(e) le 24 octobre 2006 Auteur Posté(e) le 24 octobre 2006 Je viens de faire un test avec la commande _.rename et les * fonctionnentEx : *TOTO --> 45*TOTO et j'ai un 45 qui vient devant devant tout mes blocs se terminant par toto @+ Oui tout à fait, mais moi c'est l'inverse que je n'arrive pas à faire : modifier la fin du nom TOTO* -> TOTO*45 pour avoir 45 apres TOTO
(gile) Posté(e) le 24 octobre 2006 Posté(e) le 24 octobre 2006 Salut, Deux petits LISP, un pour les préfixes l'autre pour les suffixes. (defun c:change_pref (/ old new name) (vl-load-com) (if (and (setq old (getstring "\nEntrez le préfixe à changer: ")) (setq new (getstring "\nEntrez le nouveau préfixe: ")) ) (vlax-for b (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)) ) (setq name (vla-get-Name b)) (if (wcmatch name (strcat old "*")) (vla-put-Name b (vl-string-subst new old name)) ) ) ) (princ) ) (defun c:change_suff (/ old new name) (vl-load-com) (if (and (setq old (getstring "\nEntrez le suffixe à changer: ")) (setq new (getstring "\nEntrez le nouveau suffixe: ")) ) (vlax-for b (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)) ) (setq name (vla-get-Name b)) (if (wcmatch name (strcat "*" old)) (vla-put-Name b (vl-string-subst new old name (- (strlen name) (strlen old)) ) ) ) ) ) (princ) ) En l'état la casse est respectée pour choisir les blocs qui seront renommés (si le préfixe entré est Vanne, vanne ne sera pas retenu). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
laud69 Posté(e) le 24 octobre 2006 Auteur Posté(e) le 24 octobre 2006 gile : C'est PARFAIT !! Merci beaucoups :)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant