Invité ingoenius Posté(e) le 25 janvier 2007 Posté(e) le 25 janvier 2007 voila le probleme tous mes fichier de travail cad sont nomme de cette facon nom_liieux_numero 6 ciffre_numero 4 ciffres_numero.dwg exemple pour un event qui s'appelle cad a lieu aun NY le 12 janvier 2007 e le plan je l'ai fait le 24 janvier 2007 ce fichier s'appeleraà cad_NY_120107_0107_25.dwg admetton que je veux fair il script du tipe commande et numero de 4 ciffre plus nummero de 2 cifre pour chercher sur le disque dur et ouvrir le fichier correspondant ex commande op pause 0107_25 "enter" et le script va chercher le plan sur le disque dur e l'ouvre comment si prendre?? PS peut etre je m'explique trés mal, excusé moi c'est le probleme de la langue merci d'avance
Bred Posté(e) le 25 janvier 2007 Posté(e) le 25 janvier 2007 Est ce que Tous les fichiers sont dans un seul répertoire, ou sont-il n'importe-où dans le disque dur ? Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Invité ingoenius Posté(e) le 25 janvier 2007 Posté(e) le 25 janvier 2007 pour l'instant sont dans le meme gros dossier, dans des sousrepertoires, mais considerons que je dois le chercher sur tout le disque F e regarder dans le repertoire /CAD avec tous ce sous repertoires [Edité le 25/1/2007 par ingoenius]
Bred Posté(e) le 25 janvier 2007 Posté(e) le 25 janvier 2007 mais considerons que je dois le chercher sur tout le disque Flà, j'avoue qu'en lisp je ne vois pas comment faire.... désolé.... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Tramber Posté(e) le 26 janvier 2007 Posté(e) le 26 janvier 2007 Tu veux dire que tu veux ouvrir les fichiers "se terminant par " ? *0107_25.dwg Par exemple : tortue0107_25.dwgitalie0107_25.dwgnulleenfoot0107_25.dwg mais pas : berlusconi0847_25.dwgrouleenfiatpnda0847_25.dwg C'est bien ça ? Question : tu veux faire un filtre avant de créer un script ou tu veux tout faire par le lisp ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Invité ingoenius Posté(e) le 26 janvier 2007 Posté(e) le 26 janvier 2007 je voudrait effectivement faire tout avec le lisp commesa quand on me demande d'ouvri le fichier Tarte etc_NY_ zasckzbej_010706_0107_12.dwg je peut a partir di lisp saisir seulement les element comme avec une rechereche avec les caractere jolly du DOS e autocad il va chercher et ouvrir le bon fichier ex pour un lisp ou la commende de lancement est OUVRE je saisirais ouvre *_0107_12* e lui va cherche sur le disque le file dwg correspondant pour l'ouvrir le fichier Tarte etc_NY_ zasckzbej_010706_0107_12.dwg oui je sais je suis faineant, mais la limite de la programmation est repousses toutjours plus loin par la quantité de faineantise non ??? ;-)
Bred Posté(e) le 26 janvier 2007 Posté(e) le 26 janvier 2007 citation extraite du message original:mais considerons que je dois le chercher sur tout le disque F là, j'avoue qu'en lisp je ne vois pas comment faire.... désolé.... ... je suis sur une piste... mais super compliqué pour moi.... :casstet: Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
ElpanovEvgeniy Posté(e) le 27 janvier 2007 Posté(e) le 27 janvier 2007 Cela non ce que vous cherchiez, mais un non mauvais exemple du traitement de tous les des directoires et les fichiers...Probablement cela vous intйressera! PS. Je regrette beaucoup, et n'a pas compris la tвche livrйe (je ne connais pas que le programme, qui vous est nйcessaire doit faire)... ;;------------------------------------------------- ;; la Commande : M_DWG_GEN ;; 2005-08-02 ;; ;; la Fonction pour la gйnйration du menu arboriforme sur la base ;; du catalogue avec les dwg-fichiers. Le catalogue peut ;; contenir les catalogues mis et les fichiers. ;; le Nom du point du POP-menu correspond au dernier nom ;; au chemin d'accиs vers le catalogue avec les fichiers du menu. ;; le Fichier du menu est crйй dans le catalogue, qui йtait indiquй ;; par l'utilisateur. C'est pourquoi il est nйcessaire d'avoir droit sur ;; l'enregistrement а ce catalogue. ;; le Bornage : ;; les Noms du catalogue, les sous-directoires et les dwg-fichiers ;; ne peuvent pas contenir les crochets. "[" "]" ;; ;; les Auteurs : ElpanovEvgeniy et Alexander Rivilis ;;------------------------------------------------- (defun C:M_DWG_GEN (/ f i flag_first dirbase mns_path) (vl-load-com) (setq i 1 flag_first t ) (setq dirbase (getenv "dir_base")) (setq dirbase (m_BrowseFolder)) (if dirbase (progn (setenv "dir_base" dirbase) (setq f (open (setq mns_path (strcat (m_bslash dirbase) (vl-filename-base dirbase ) ".mns" ) ) "w" ) ) (if f (progn (write-line (strcat "\n// Le menu de la base des blocs" "\n// Pour l'insertion au plan sans " "Les changements du montant" "\n***MENUGROUP=" (m_subst_blank (vl-filename-base dirbase ) ) "\n***POP1" "\n**" (m_subst_blank (vl-filename-base dirbase ) ) ) f ) (vl-catch-all-apply 'm_dir_base (list (vl-filename-base dirbase) (vl-filename-directory dirbase ) f ) ) (close f) (m_install_menu mns_path) ) ) ) ) (princ) ) ;;------------------------------------------------- ;; La fonction principale de la gйnйration du niveau du menu ;;------------------------------------------------- (defun m_dir_base (a p f / l_subdirs l_files n s_back i_back l n_dwg_sub ) (if (and a p f) (progn (setq i_back 0 n_dwg_sub 0 s_back "" ) (setq l_subdirs (m_Sort_Lex (cddr (vl-directory-files (strcat (m_bslash p) a) nil -1 ) ) ) ) (setq l_files (m_Sort_Lex (vl-directory-files (strcat (m_bslash p) a) "*.dwg" 1 ) ) ) (if (or l_subdirs l_files) (progn (cond (flag_first (write-line (strcat "ID_Mn" (strcat (m_subst_blank (vl-filename-base (getenv "dir_base" ) ) ) (itoa (setq i (1+ i) ) ) ) "\t\t[" (m_subst_blank a) "]" "\n\t\t[&Enlever le menu " (m_subst_blank (vl-filename-base dirbase) ) "]_.menuunload " (m_subst_blank (vl-filename-base dirbase ) ) " " ) f ) (setq flag_first nil) ) (T (write-line (strcat "ID_Mn" (strcat (m_subst_blank (vl-filename-base (getenv "dir_base" ) ) ) (itoa (setq i (1+ i) ) ) ) "\t\t[->" a "]" ) f ) (setq i_back (1+ i_back)) ) ) (foreach a1 l_subdirs (if (> (setq l (m_calc_dwg_files (strcat (m_bslash p) (m_bslash a) a1 ) ) ) 0 ) (progn (setq i_back (+ i_back (m_dir_base a1 (strcat (m_bslash p) (m_bslash a) ) f ) ) ) (setq n_dwg_sub (1+ n_dwg_sub)) ) ) ) (if (and l_subdirs l_files (> n_dwg_sub 0)) (progn (write-line (strcat "ID_" (strcat (m_subst_blank (vl-filename-base (getenv "dir_base") ) ) (itoa (setq i (1+ i))) ) "\t\t[--];" ) f ) ) ) (cond (l_files (while l_files (write-line (strcat "ID_" (strcat (m_subst_blank (vl-filename-base (getenv "dir_base") ) ) (itoa (setq i (1+ i))) ) "\t\t[" (if (> (length l_files) 1) "" (m_replicate_back i_back) ) (vl-filename-base (car l_files)) "]^C^C_.-insert \"" (m_subst_bslash (strcat (m_bslash p) (m_bslash a) (car l_files) ) ) "\" _s 1 " ) f ) (setq l_files (cdr l_files)) ) (setq i_back 0) ) (T (write-line (strcat "ID_" (strcat (m_subst_blank (vl-filename-base (getenv "dir_base") ) ) (itoa (setq i (1+ i))) ) "\t\t[" (m_replicate_back i_back) "--];" ) f ) (setq i_back 0) ) ) ) ) ) ) i_back ) ;;------------------------------------------------- ;; La fonction pour le choix du catalogue ;;------------------------------------------------- (defun m_BrowseFolder (/ ShlObj Folder FldObj OutVal) (vl-load-com) (setq ShlObj (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application" ) Folder (vlax-invoke-method ShlObj 'BrowseForFolder 0 "" 0) ) (vlax-release-object ShlObj) (if Folder (progn (setq FldObj (vlax-get-property Folder 'Self) OutVal (vlax-get-property FldObj 'Path) ) (vlax-release-object Folder) (vlax-release-object FldObj) OutVal ) ) ) ;;------------------------------------------------- ;; La fonction multiplie "<-" le nombre donnй de la fois. ;;------------------------------------------------- (defun m_replicate_back (n / s) (setq s "") (repeat n (setq s (strcat s "<-"))) s ) ;;-------------------------------------------------- ;; La fonction calcule la quantitй dwg - les fichiers dans cela ;; le catalogue et dans tous les catalogues mis dans lui. ;;------------------------------------------------- (defun m_calc_dwg_files (path / n) (setq n (length (vl-directory-files (m_bslash path) "*.dwg" 1 ) ) ) (foreach d (cddr (vl-directory-files path nil -1) ) (setq n (+ n (m_calc_dwg_files (strcat (m_bslash path) d ) ) ) ) ) n ) ;;------------------------------------------------- ;; La fonction ajoute а la ligne "\" s'il n'йtait pas. ;;------------------------------------------------- (defun m_bslash (p) (if (/= (substr p (strlen p) 1) "\\") (strcat p "\\") p ) ) ;;------------------------------------------------- ;; la Fonction pour le remplacement dans la ligne de toutes les lacunes et ;; des crochets pour les soulignements. "_" ;;------------------------------------------------- (defun m_subst_blank (s) (vl-string-translate " []" "___" s) ) ;;------------------------------------------------- ;; la Fonction pour le remplacement dans la ligne de tous "\" sur "/". ;;------------------------------------------------- (defun m_subst_bslash (s) (vl-string-translate "\\" "/" s) ) ;;------------------------------------------------- ;; la Fonction charge le menu ;; ajoute а la queue POP - le menu nouveau ;; le point, avec le dernier nom du nom du catalogue. ;;------------------------------------------------- (defun m_install_menu (mns_path) (if (menugroup (m_subst_blank (vl-filename-base (getenv "dir_base") ) ) ) (progn (vl-cmdf "_.menuunload" (strcat (m_subst_blank (vl-filename-base (getenv "dir_base") ) ) ) ) (vl-cmdf "_.menuload" mns_path) (menucmd (m_subst_blank (strcat "P99=+" (vl-filename-base (getenv "dir_base")) "." (vl-filename-base (getenv "dir_base")) ) ) ) ) (progn (vl-cmdf "_.menuload" mns_path) (menucmd (m_subst_blank (strcat "P99=+" (vl-filename-base (getenv "dir_base")) "." (vl-filename-base (getenv "dir_base")) ) ) ) ) ) ) ;;------------------------------------------------- ;; la Fonction du tri de la liste des lignes а lexicographique ;; l'ordre en dehors de la dйpendance du registre. ;;------------------------------------------------- (defun m_Sort_Lex (list_string) (vl-sort list_string '(lambda (s1 s2 / n) (setq n (- (strlen s1) (strlen s2))) (cond ((< n 0) (repeat n (setq s1 (strcat s1 " "))) ) ((> n 0) (repeat n (setq s2 (strcat s2 " "))) ) ) (< (strcase s1) (strcase s2)) ) ) ) Evgeniy
(gile) Posté(e) le 27 janvier 2007 Posté(e) le 27 janvier 2007 salut Ingoenius, Salut, Grace à GetFile une routine de ElpanovEvgeniy, ;;; GetFile -ElpanovEvgeniy- (defun GetFile (f p) (apply (function append) (cons (if (vl-directory-files p f) (mapcar (function (lambda (x) (strcat p "\\" x))) (vl-directory-files p f) ) ) ;_ if (mapcar (function (lambda (x) (GetFile f (strcat p "\\" x)))) (vl-remove ".." (vl-remove "." (vl-directory-files p nil -1)) ) ) ;_ mapcar ) ;_ cons ) ;_ apply ) tu peux te faire quelque chose du genre : (defun c:aprire (/ f p) (if (and (setq c (getstring "\nCode du fichier: ")) (setq f (Getfile (strcat "*" c ".dwg") "F:\\CAD")) ) (if (zerop (getvar "SDI")) (vla-put-ActiveDocument (vlax-get-acad-object) (vla-open (vla-get-Documents (vlax-get-acad-object)) (car f) :vlax-false ) ) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité ingoenius Posté(e) le 29 janvier 2007 Posté(e) le 29 janvier 2007 grand merci encore a Vous, j' y serais jamais arrivé, je dois me mettre a etudier ce langage, car de ce que je vois vous n'utilises plus le autolisp que j'avais un peu etudie, mais le VISUALLISP? je dois chercher quelque texte de reference en francais sur le sujet, ou en italien, vous avez des pistes??
Tramber Posté(e) le 29 janvier 2007 Posté(e) le 29 janvier 2007 http://www.cadnovation.com/fr/EU/uamj.asp LE seul vrai bouquin de notre ami Serge. Le chapitre sur Vlisp est excellent. Malheureusement, je ne sais pas si ce livre est encore disponible. Tu ne lis pas l'anglais ? car ici : http://discussion.autodesk.com/thread.jspa?threadID=452839 tu peux avoir un super document. [Edité le 29/1/2007 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Invité ingoenius Posté(e) le 29 janvier 2007 Posté(e) le 29 janvier 2007 j'ai cherche sur eyrolles, "definitivement indisponible" meme sur ebay j'ai pas trouvé, donc il me faut une solution, photocopie? scanner? reecriture a la main au pinceauxe a l'encre de chine ? tu as des pistes??
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