Lisp »Tips 'n Tricks 
»Come leggere un file-liste 
Ecco come fare per passare ad una lista il contenuto di un file TXT strutturato come un elenco di liste.
 Vincolo del lisp: il numero delle colonne (il numero degli elementi di ogni lista-riga) deve essere costante, cioè uguale per ogni lista-rigo del file dati TXT; e non deve essere minore di 3.
 Inoltre il file deve avere il seguente formato-dati:
 '(
 (n0 n1 n2 n3 nn)
 ...
 (n0 n1 n2 n3 nn)
 )
 cioè un elenco di liste con lo stesso numero di elementi racchiuso in una lista preceduta dal segno '. 
LFL (legge file-liste) 
LFL legge il file-liste DATI.TXT, salva il contenuto nella lista lista e quindi elabora la lista punto per punto.  
;|
   LFL.LSP (26 Giugno 2005)
   Copyright (C) 2005 Claudio Piccini.
   All rights reserved
   www.cg-cad.com
   Legge il file DATI.TXT
   '(
    (x y z)
    ...
    (x y z)
    )
    e ne disegna i punti (x y z)
|;
(defun c:lfl ( / snapp ndir nf 
                 NR NC
                 lista str 
                 i j e punto 
 )
 (setvar "cmdecho" 0)
 (setq nDir (getvar "dwgprefix"))
 (setq nf (strcat nDir "dati.txt"))
 (setq lista (load nf))
 (setq NR (length lista))
 (setq str (strcat "\nnumero righe file=" (itoa NR)))
 (princ str)
 (setq NC (length (car lista)))
 (setq str (strcat "\nnumero colonne file=" (itoa NC)))
 (princ str)
 (setq snapp (getvar "osmode"))
 (command "_osnap" "_non")
 (setq i 0)
 (while (< i NR)
  (setq j 0)
  (while (< j NC)
   (setq e (nth j (nth i lista)))
   (setq punto (append punto (list e)))
   (setq j (1+ j))
  )
  (if (= (length punto) 3)
   (command "_point" punto)
   (command "_point" (list (car punto)(cadr punto)(caddr punto)))
  )
  (setq punto nil)
  (setq i (1+ i))
 )
 (setvar "osmode" snapp)
 (command "_redraw")
 (setvar "cmdecho" 1)
 (princ)
)
;;;eof
 |   
Test del Lisp 
DATI.TXT:
 '(
 (0 1 2 4 0.3 0.1 "primo")
 (3 4 5 0.05 1 2 "secondo")
 (0 0 0 1 1 1 "ok")
 (1 1 1 0 0 0 "ko")
 (1 2 3 3 2 1 "e questo e' l'ultimo")
 )
 
 Command: lfl
 numero righe file=5
 numero colonne file=7 
 
Lisp »Tips 'n Tricks 
Ultimo Aggiornamento_Last Update: 26 Giugno 2005 
 |