Aller au contenu

nommer ficher avec nom d'attribut


Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

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é