Aller au contenu

open file


Invité ingoenius

Messages recommandés

Invité ingoenius
Posté(e)

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

 

Posté(e)

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)

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]

Posté(e)

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é....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Tu veux dire que tu veux ouvrir les fichiers "se terminant par " ?

 

*0107_25.dwg

 

Par exemple :

 

tortue0107_25.dwg

italie0107_25.dwg

nulleenfoot0107_25.dwg

 

mais pas :

 

berlusconi0847_25.dwg

rouleenfiatpnda0847_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)

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 ??? ;-)

 

 

 

 

Posté(e)

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...

Posté(e)

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

Posté(e)

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)

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??

 

 

 

Posté(e)

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)

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??

 

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é