Aller au contenu

nommer ficher avec nom d'attribut


gepetto

Messages recommandés

Hello,

 

J'ai retrouver un dossier contenant une joile base de visserie, datant de quelque année mais encore assez à jours

Le 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 suivants

Type , Dimensions, Matière

 

 

Je vous ai mis quelque vis comme exemple.

https://we.tl/hVLOCoxjJJ

 

Je vous remercie de votre futur aide.

 

Bonne soirée

Gepetto

Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é