Aller au contenu

Commander le lancement d\'un lisp Autocad depuis Excel


Messages recommandés

Posté(e)

Bonjour,

 

J'ai environ 900 fichiers concernant un projet. On me demande de faire le listing de ce projet en ayant pour chaque fichier la date de création, la date de dernière modification, le nom des présentations et le temps passé (enregistré par Autocad).

Pour cela, j'ai suivi les conseils donnés sur ce forum :

1 - utiliser un listeur de répertoire type PCCATALOG

2 - mettre cette liste sous EXCEL

3 - réaliser un LISP sous AUTOCAD me permettant d'extraire les données recherchées

4 - lancer depuis EXCEL un traitement pour chaque fichier

a) ouverture du fichier par AUTOCAD

b) execution du lisp

c) fermeture du fichier AUTOCAD

cela crée à chaque fichier .dwg un fichier qui porte le meme nom avec une extension supplémentaire .ctl dans le meme répertoire que le fichier .dwg

5 - lancer depuis EXCEL un traitement pour chaque fichier crée afin de traiter le contenu et de l'intégrer dans le tableau excel

 

Pour information, voici le code LISP que j'ai fait :

 

(defun c:dateagu ()

(setvar "cmdecho" 0)

 

(princ "\nTraitement en cours...")

(setq f (open (strcat (getvar "dwgprefix")(getvar "dwgname") ".ctl") "w"))

(princ "Fichier dessin: " f)

(princ "\n" f) (princ (getvar "dwgname") f)

(princ "\n" f) (princ "Taille :" f)

(princ "\n" f) (princ (vl-file-size (strcat (getvar "dwgprefix")(getvar "dwgname"))) f)

(princ "\n" f) (princ "Date de création : " f)

(princ "\n" f) (princ (menucmd "M=$(edtime,$(getvar,TDCREATE), DD/MO/YY - HH:MM:SS)")f)

(princ "\n" f) (princ "Date du dernier enregistrement : " f)

(princ "\n" f) (princ (menucmd "M=$(edtime,$(getvar,tdupdate), DD/MO/YY - HH:MM:SS)")f)

(princ "\n" f) (princ "Temps passé :" f)

(princ "\n" f) (princ (menucmd "M=$(edtime,$(getvar,tdindwg), HH:MM)")f)

(princ "\n" f) (princ "Présentations :" f)

(princ "\n" f) (princ (layoutlist) f)

(close f)

(princ "\nFin du traitement.")

(princ (strcat "\nLe fichier d'information se nomme: " (getvar "dwgname") ".CTL"))

 

(princ)

 

(princ "\n==> DATEAGU")

(princ)

)

 

Et voici le contenu du fichier (.ctl) construit par le LISP :

Fichier dessin:

Relevé du 9-03-06.dwg

Taille :

1723126

Date de création :

24/10/05 - 14:57:35

Date du dernier enregistrement :

16/03/06 - 10:33:13

Temps passé :

07:57

Présentations :

(Layout1 Présentation1 Présentation2 Présentation3)

 

Merci de toute l'aide que vous pourriez m'apporter pour faire avancer tout ou partie de ce projet.

Si par ailleurs, vous avez d'autres solutions, je veux bien en être informé afin d'en explorer les pistes.

 

Cordialement

 

Wallas

Posté(e)

Et pourquoi ne pas utiliser un script de commandes "fichier.scr" pour ouvrir, faire ton traitement lisp et quitter dans tous les dessins.

copie ta liste de tes dessins dans un bloc-notes que tu enregistres sous travail.scr tapes tes commandes autocad en faisant attention aux espaces :

 

SAUVERAP

CMDDIA 0 FILEDIA 0

OUVRIR DESSIN1 (load "fonction") NOM-DE-TA-FONCTION SAUVERAP

OUVRIR DESSIN2 (load "fonction") NOM-DE-TA-FONCTION SAUVERAP

etc...

OUVRIR DERNIERDESSIN (load "fonction") NOM-DE-TA-FONCTION SAUVERAP

CMDDIA 1 FILEDIA 1

 

Dans un fichier script.dwg avec dans les options se mettre en SDI pour n'avoir qu'un dessin ouvert à chaque fois et tu lances ce fichier via la fonction script ou par glisser-deposer

 

 

 

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é