3.1. Exportar la Lista de Entidad


Las siguientes rutinas permiten escribir en pantalla (con salto de línea) o en fichero las listas definitorias de las entidades seleccionadas.
Para utilizar el código que sigue, selecciónelo en su browser, utilizando el ratón, desde la línea que dice -INICIO DEL PROGRAMA- hasta la línea -FIN DEL PROGRAMA-, copie el texto seleccionado (Ctrl+C), abra un editor (Notepad o Visual LISP) y péguelo allí (Ctrl+V). Guarde el fichero así creado con el nombre LISTENT.LSP en el subdirectorio SUPPORT . Para cargarlo teclee (load "listent")

Reinaldo Togores. Profesor Asociado.
Departamento de Ingeniería Geográfica y Técnicas de Expresión Gráfica
Universidad de Cantabria. Diciembre de 1996.

Se autoriza la utilización del código de estos programas, mencionando siempre su origen.


;;;----------------------INICIO DEL PROGRAMA------------------------------
;;;(c) Reinaldo Togores, Santander, 1997.
;;Listado de entidades
;;Salida por pantalla
;;Rutina DISP_L: Escribe lista de entidad en pantalla

(defun disp_l ( lis_e / )
(repeat (length lis_e)
(princ (nth cont lis_e))(terpri)
(setq cont (1+ cont))
)
)

;;Rutina PRN_L: Escribe lista de entidad en fichero de texto
(defun prn_l (lis_e / )
(repeat (length lis_e)
(print (nth cont lis_e) if_w)
(setq cont (1+ cont))
)
)

;;Rutina OPN_L: Abre fichero de texto para escribir lista de entidad
(defun opn_l ()
(if (null nomls)(setq nomls ""))
(if (setq nomls (getfiled "Lista de Entidad:" nomls "txt" 5))
(if (wcmatch nomls "*`.*")
(setq if_w (open nomls "w"))
(setq if_w (open (strcat nomls ".txt") "w")
)
)
)
)

;;;Programa Principal LISTX: Escribe la lista de entidad
;;;a un fichero de texto
(defun c:listx ( / n_e lis_e ctrl cont)
(if (setq s_set (ssget))
(progn
(opn_l)(setq s_c 0)
(repeat (sslength s_set)
(if (setq n_e (ssname s_set s_c))
(setq lis_e (entget n_e (list "*"))))
(setq cont 0)
(prn_l lis_e)
(if
(or
(= (cdr (assoc 0 lis_e)) "POLYLINE")
(= (cdr (assoc 0 lis_e)) "INSERT")
)
(progn
(setq ctrl t)
(while (and ctrl (setq n_e (entnext n_e)))
(setq cont 0)
(if (= (cdr (assoc 0 (setq lis_e
(entget n_e (list "*"))))) "SEQEND")
(progn (setq ctrl nil)(prn_l lis_e))
(prn_l lis_e)
)
)
)
)
(setq s_c (1+ s_c))
)
(close if_w)
)
)
)

;;Programa Principal LIS: Salida por pantalla
(defun c:lis ( / n_e lis_e ctrl cont)
(if (setq n_e (car (entsel)))(setq lis_e (entget n_e (list "*"))))
(setq cont 0)
(disp_l lis_e)
(setq ctrl t)
(while (and ctrl (setq n_e (entnext n_e)))
(setq cont 0)
(if (= (cdr (assoc 0 (setq lis_e (entget n_e (list "*"))))) "SEQEND")
(setq ctrl nil)
(disp_l lis_e)
)
)
)

(alert "Lista de Entidades\teclee LIS para salida por pantalla\n
Teclee LISTX para salida a fichero...")
;;;----------------------FIN DEL PROGRAMA----------------------------------