Newsgroup: it.comp.software.cad
Titolo: Lista layer

Ho un file con circa 60 70 layer che Secos (prg per i canali d'aria)
mi crea per le varie tipologie vorrei stamparne un elenco
anche perchè ho creato una decina di gruppi filtro e vorrei
tenerlo come base per i prossimi lavori
ciao e grazie

 wrote in message
news:5XJ8e.1251173$
35.45...@news4.tin.it

La funzione seguente salva su un file l'elenco dei layer con i seguenti
dati:
Nome, Colore,Tipolinea, Stato
Se il colore è uno che ha un nome, viene indicato il nome altimenti il
numero del colore.
Lo stato indica solo se il layer è attivo o disattivato.
Questa è la routine:
--- INIZIO COPIA ---
;
; LAY-FILE.LSP
; COPYRIGHT 2001 CADLandia
;
; Questo Lisp stampa un file testo in formato CSV (con separatore
elenco)
; con l'elenco e gli attributi dei layer nel disegno corrente.
; Il file lista il Nome, il Colore, il Tipolinea e lo Stato dei layer.
; Compariranno i nomi dei colori, se lo hanno, altrimenti il numero.
; Per lo stato si indica SOLO se è attivo o disattivo.
;
; P.S. Il file CSV viene letto da Excel che riconosce i campi.
;
; 31/12/2001 Aniello Annunziata - CADLandia
; 
aniello.a...@cadlandia.com
; 
www.cadlandia.com
(defun C:lay-file ()
;definisce la funzione
  (setq listacolori '("Vuoto" "Rosso" "Giallo" "Verde" "Ciano" "Blu"
"Magenta" "Bianco"))
  ;Lista dei colori. Il primo elemento è inutile
  ; quindi s'è usato il nome "Vuoto"
  (setq fname (getstring "\nInserisci il nome del file: "))
  ;ottiene il nome del file
  (setq fn (open fname "w"))
  ;lo apre in scrittura
  (princ "Nome;Colore;TipoLinea;Stato" fn)
  (princ "\n" fn)
  ;mette l'header del testo
  (setq f 1)
  ;imposta il flag ad 1
  (while
  ;inizia il ciclo while
    (setq t1 (tblnext "Layer" f))
    ;ottiene il nuovo layer
    (setq f nil)
    ;resetta il puntatore
    (setq nome (cdr (assoc 2 t1)))
    ;ottiene il nome del layer
    (setq codcolore (cdr (assoc 62 t1)))
    (if (AND (< codcolore 8) (> codcolore -8))
      (setq colore (nth (abs codcolore) listacolori))
      (setq colore (strcat "Colore " (itoa (abs codcolore))))
    );fine if
    ;ottiene il colore del layer
    (setq tipolinea (cdr (assoc 6 t1)))
    ;ottiene il tipolinea del layer
    (princ nome fn)
    ;stampa il nome
    (princ ";" fn)
    ;stampa uns eparatore elenco
    (princ colore fn)
    ;stampa il colore
    (princ ";" fn)
    ;stampa un separatore elenco
    (princ tipolinea fn)
    ;stampa il tipolinea
    (princ ";" fn)
    ;stampa un separatore elenco
    (if (/= codcolore (abs codcolore))
      (princ "Layer disattivato" fn)
      (princ "Layer attivo" fn)
    );fine if
    ;stampa lo stato del layer
    (princ "\n" fn)
    ;va a capo
  );fine repeat
  (close fn)
  ;chiude il file
  (alert (strcat "Esportati le specifiche dei layer nel file: \n"
         (strcase fname))
  );fine alert
  (princ)
  ;informa l'utente
);fine defun
(princ "\nLAY-FILE.LSP caricato. ")
(princ "Digita LAY-FILE per avviare il comando.")
(princ)
--- FINE COPIA ---
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ciao Aniello
Grazie per la dritta ma ho copiato il listato
ho caricato il file ma digitando lay-file mi
dice comendo errato.
Dove ho sbagliato ciao  e grazie ancora

 Dove ho sbagliato ciao  e grazie ancora
Hai sbagliato nel copiare il file, o meglio ho sbagliato io.
Il problema è che nel copiare su newsgroup, il file sarà andato a capo
da solo.
Il LISP è un linguaggio stupido, ed interpreta male le andate a capo.
O meglio, è un linguaggio rigido, e quindi si deve rispettare la sua
sintassi.
E' possibile che qualche riga di commento (quelle che iniziano con ;)
sia troppo lungo e sia andata a capo, creando l'errore.
Se continua ad esserci il problema, controlla che non ci siano errori di
questo tipo.
Questo è il listato che funziona:



