gepetto Posté(e) le 19 janvier 2017 Posté(e) le 19 janvier 2017 Hello, J'ai retrouver un dossier contenant une joile base de visserie, datant de quelque année mais encore assez à joursLe malheurs avec cette base c'est que les fichier possède des nom complètement illogique... donc pas idéal pour retrouver qui est quoi... Les bloc sont bien faits et y on tous des attributs. Il me faudrait arriver à renommer par lots le nom du fichier avec les attributs suivantsType , Dimensions, Matière Je vous ai mis quelque vis comme exemple.https://we.tl/hVLOCoxjJJ Je vous remercie de votre futur aide. Bonne soiréeGepetto
Patrick_35 Posté(e) le 20 janvier 2017 Posté(e) le 20 janvier 2017 Salut Par exemple(defun c:vis(/ bl dbx fic lst obj rep tab tx1 tx2 tx3 dirbox ouvrir_dessin_dbx) ;;;--------------------------------------------------------------- ;;; ;;; Choix du répertoire ;;; ;;;--------------------------------------------------------------- (defun dirbox(txt / cdl rep) (if (setq cdl (vlax-create-object "Shell.Application")) (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 "")) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) ) (vlax-release-object cdl) ) ) rep ) ;;;--------------------------------------------------------------- ;;; ;;; Ouvrir un dessin via ObjectDbx ;;; ;;;--------------------------------------------------------------- (defun Ouvrir_dessin_dbx(dwg / dbx doc lan rel) (and (setq dwg (findfile dwg)) (progn (vlax-for doc (vla-get-documents (vlax-get-acad-object)) (and (eq (strcase (vla-get-fullname doc)) (strcase dwg)) (setq dbx doc lan T) ) ) (and (not dbx) (setq dbx (vlax-create-object (if (< (setq rel (atoi (getvar "ACADVER"))) 16) "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa rel)) ) ) ) (vla-open dbx dwg) ) ) ) (list dbx lan) ) (vl-load-com) (and (setq rep (dirbox "Sélectionnez un répertoire à traiter")) (and (setq lst (vl-directory-files rep "*.dwg" 1)) (foreach fic lst (if (setq dbx (ouvrir_dessin_dbx (strcat rep "/" fic))) (progn (setq tx1 nil tx2 nil tx3 nil ) (vlax-for bl (vla-get-blocks (car dbx)) (vlax-for obj bl (and (eq (vla-get-objectname obj) "AcDbAttributeDefinition") (cond ((eq (strcase (vla-get-tagstring obj)) "TYPE") (setq tx1 (vla-get-textstring obj)) ) ((eq (strcase (vla-get-tagstring obj)) "DIMENSIONS") (setq tx2 (vla-get-textstring obj)) ) ((eq (strcase (vla-get-tagstring obj)) "MATIERE") (setq tx3 (vla-get-textstring obj)) ) ) ) ) ) (vlax-release-object (car dbx)) (and tx1 tx2 tx3 (setq tab (cons (cons fic (strcat tx1 " " tx2 " " tx3 ".dwg")) tab))) ) (princ (strcat "\nNe peut pas lire le fichier " fic)) ) ) ) ) (and tab (foreach fic tab (or (= (strcase (car fic)) (strcase (cdr fic))) (if (findfile (strcat rep "/" (cdr fic))) (princ (strcat "\nNe peux pas renommer le fichier \"" (car fic) "\" en \"" (cdr fic) "\" car celui-ci existe déjà.")) (and (vl-file-rename (strcat rep "/" (car fic)) (strcat rep "/" (cdr fic))) (princ (strcat "\nRenommer le fichier \"" (car fic) "\" en \"" (cdr fic) "\"")) ) ) ) ) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
gepetto Posté(e) le 24 janvier 2017 Auteur Posté(e) le 24 janvier 2017 Hello, Un ENORME MERCI pour ton aide.C'est exactement ce que je désirais.J'ai tester ton lisp et y marche a la perfections. J'ai l'impression que toi et quelques autre du forum, écrive des lisp, comme ca, simplement... J'imagine qu'il y a des année d'expérience. Je te remercie infiniment Amicalement Gepetto
Patrick_35 Posté(e) le 25 janvier 2017 Posté(e) le 25 janvier 2017 J'ai l'impression que toi et quelques autre du forum, écrive des lisp, comme ca, simplement... J'imagine qu'il y a des année d'expérience.Salut Oui, et une bibliothèque de routines dans laquelle on pioche, mixe et adapte une nouvelle mouture. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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