ggpompom Posté(e) le 27 décembre 2011 Posté(e) le 27 décembre 2011 Bonjour à tous, j'ai un fichier avec plein de blocs et je souhaite renommer les blocs en changeant les espaces par des _. existe t-il une routine LISP??? merci, cela me dépannerai bien.
FormaBois Posté(e) le 27 décembre 2011 Posté(e) le 27 décembre 2011 Salut,Avec la commande RENOMMER et l'utilisation astucieuse du caractère générique * ou du point d'interrogation ? 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"
ggpompom Posté(e) le 28 décembre 2011 Auteur Posté(e) le 28 décembre 2011 tout d'abord merci pour ta réponse. J'ai essayé, mais je ne sais pas trop ou mettre le * ou le ? voici un exemple de ce que je veut faire aaaaa bbbccccc dddeeeee fff et je voudrais aaaaa_bbbccccc_dddeeeee_fff que faut il rentrer comme caractère générique dans la fenêtre renommer??
FormaBois Posté(e) le 28 décembre 2011 Posté(e) le 28 décembre 2011 Un sujet assez complet sur cette même fonction.Voir aussi la conclusion Je suppose que tu as dû trouver, c'est :?????_??? 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"
(gile) Posté(e) le 28 décembre 2011 Posté(e) le 28 décembre 2011 Salut, C'est Noël et je ne supporte pas les noms de blocs (mais aussi de calques, styles, etc.) avec des espaces ou des caractères spéciaux. Pour remplacer les espaces par des sous-tirets (underscore) dans les noms de blocs (defun c:respa () (vl-load-com) (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-put-Name b (vl-string-translate " " "_" (vla-get-Name B))) ) (princ) ) J'avais fait un truc un peu plus complet pour "normaliser" les noms dans les différentes tables.La commande rtable ouvre une boite de dialogue dans la quelle on peut choisir les types de formatages et les tables à normaliser. Pour une utilisation dans un script, on peut appeler la sous routine NormalizeName qui requiert 2 arguments le format et les tables à traiter. Ces arguments sont la somme des codes binaires représentant les options choisies : format- minuscules en majuscules = 1- espaces en underscores = 2- tirets en underscores = 4 tableNoms de Calques = 1Noms de Blocs = 2Noms de Styles de texte = 4Noms de Vues = 8Noms de Styles de cotation = 16Noms de Styles de tableau = 32 (si version >= 2005)Noms de Presentations = 64 ;|NormalizeName (gile) Normalisation des noms. La routine NormalizeName requiert 2 arguments qui sont une somme de codes binaires : format - minuscules en majuscules = 1 - espaces en underscores = 2 - tirets en underscores = 4 table Noms de Calques = 1 (Defaut = Oui) Noms de Blocs = 2 (Defaut = Oui) Noms de Styles de texte = 4 (Defaut = Oui) Noms de Vues = 8 (Defaut = Non) Noms de Styles de cotation = 16 (Defaut = Non) Noms de Styles de tableau = 32 (Defaut = Non si version >= 2005) Noms de Presentations = 64 (Defaut = Non) |; (defun NormalizeName (format table / normalize lst new inc) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (defun normalize (col format textstyle / old tmp new inc lst) (vlax-for x col (setq old (vla-get-Name x) tmp old) (if (= 1 (logand 1 format)) (setq tmp (strcase tmp)) ) (if (= 2 (logand 2 format)) (setq tmp (vl-string-translate " " "_" tmp)) ) (if (= 4 (logand 4 format)) (setq tmp (vl-string-translate "-" "_" tmp)) ) (setq new tmp inc 1 ) (while (assoc new lst) (setq new (cond ((< inc 10) (strcat tmp "_00" (itoa inc))) ((< inc 100) (strcat tmp "_0" (itoa inc))) (T (strcat tmp "_" (itoa inc))) ) inc (1+ inc) ) ) (if textstyle (setq lst (cons (cons new old) lst)) (setq lst (cons (cons new x) lst)) ) ) (if textstyle (progn (setvar "cmdecho" 0) (foreach n (vl-remove '("" . "") lst) (vl-cmdf "_.rename" "_style" (cdr n) (car n)) ) (setvar "cmdecho" 1) ) (foreach n lst (vl-catch-all-apply 'vla-put-Name (list (cdr n) (car n))) ) ) ) (if (= 1 (logand 1 table)) (normalize (vla-get-Layers *acdoc*) format nil) ) (if (= 2 (logand 2 table)) (normalize (vla-get-Blocks *acdoc*) format nil) ) (if (= 4 (logand 4 table)) (normalize (vla-get-TextStyles *acdoc*) format T) ) (if (= 8 (logand 8 table)) (normalize (vla-get-Views *acdoc*) format nil) ) (if (= 16 (logand 16 table)) (normalize (vla-get-DimStyles *acdoc*) format nil) ) (if (and (= 32 (logand 32 table)) (< 16.1 (atof (getvar "ACADVER"))) ) (normalize (vla-item (vla-get-Dictionaries *acdoc*) "ACAD_TABLESTYLE") format nil ) ) (if (= 64 (logand 64 table)) (normalize (vla-get-Layouts *acdoc*) format nil) ) ) ;;; RTABLE (gile) ;;; Fonction d'appel (boite de dialogue) (defun c:rtable (/ tmp file format table dcl_id) (setq tmp (vl-filename-mktemp "Tmp.dcl") file (open tmp "w") format 0 table 0 ) (write-line "NormalizeName:dialog{label=\"Normalistion des nom\"; :row{:column{:boxed_column{label=\"Format\"; :toggle{label=\"Minuscules -> Majuscules\";key=\"01\";value=\"1\";} :toggle{label=\"Espaces -> Underscore\";key=\"02\";value=\"1\";} :toggle{label=\"Tiret -> Underscore\";key=\"04\";value=\"1\";}} spacer;ok_cancel;} :boxed_column{label=\"Tables à traiter\"; :toggle{label=\"Calques\";key=\"1\";value=\"1\";} :toggle{label=\"Blocs\";key=\"2\";value=\"1\";} :toggle{label=\"Styles de texte\";key=\"4\";value=\"1\";} :toggle{label=\"Vues\";key=\"8\";} :toggle{label=\"Styles de cote\";key=\"16\";} :toggle{label=\"Styles de tableau\";key=\"32\";} :toggle{label=\"Présentations\";key=\"64\";}}}}" file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "NormalizeName" dcl_id)) (exit) ) (action_tile "accept" "(foreach k '(\"01\" \"02\" \"04\") (if (= (get_tile k) \"1\") (setq format (+ format (atoi k))) ) ) (foreach k '(\"1\" \"2\" \"4\" \"8\" \"16\" \"32\" \"64\") (if (= (get_tile k) \"1\") (setq table (+ table (atoi k))) ) ) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) (NormalizeName format table) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 28 décembre 2011 Posté(e) le 28 décembre 2011 Bonjour à toutes et tous, Excellent outil, une fois de plus,...:) Merci Gilles, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
ggpompom Posté(e) le 28 décembre 2011 Auteur Posté(e) le 28 décembre 2011 un grand Merci à vous et surtout à Gilles. superbe routine LISP qui je pense pourra aider pas mal de monde. Encore merci
PHILPHIL Posté(e) le 15 septembre 2014 Posté(e) le 15 septembre 2014 hello Gile ca date comme Lisp mais aurais tu du temps pour améliorer ton lisp je cherche un lisp pour renommer des calques en masseun bout de nom "*aaaa*" remplacer par "*bbb*" aussi bien dans un fichier, que dans plusieurs fichiers de differents sous répertoire mais ca pourrait servir aussi pour les blocks et autres puis le mettre sur exchange ensuite merci Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Steven Posté(e) le 15 septembre 2014 Posté(e) le 15 septembre 2014 Je n'avais pas vu ce post et je viens de le découvrir.Ce lisp est énorme!Maintenant, je peux recevoir autant de fichiers que je veux avec des espaces dans les noms de blocs ou calques ou autre.Même pas mal :D Encore un grand bravo et merci à Gile http://smiley-online.com/images/gif/bravo/vignette/thumbnails/chinese_gif.gif Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
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