Bien Victor. Aun no me quedo claro lo del tipo de entidad porque dentro de autocad no existe una entidad que se llame poligono. Los poligonos que ves pueden estar formados por polilineas livianas (LWPOLYLINE), polilineas 3d (POLYLINE) u sucesiones de lineas (LINE). En este caso yo voy a proporcionarte una herramienta que trabaja con LWPOLYLINE, que son las que se crean desde los comandos "_rectangle", "_polygon", "_pline". Si tus entidades fueran diferentes te tocara, ante de usar la herramienta convertirlas a polilineas livianas.
La rutina crea un archivo .csv, que es un archivo de excel delimitado por comas. Hay dos simbolos que pueden variar entre computadoras, que dependen de la configuracion regional. El archivo csv puede ser delimitado por comas "," o por punto y comas ";" y el punto decimal puede ser por punto "." o por coma ",". Como mi excel trabaja con ';' para el primero y ',' para el segundo asi esta la rutina, pero si en tu caso no funciona bien tendras que cambiar esos valores en la parte de la rutina que dice:
delim ";"
ptodec ","
Ahi sustituyes lo que esta entrecomillado y listo.
Ok, Como funciona?: la rutina es un archivo con extension lsp, el cual yo no puedo adjuntar aqui porque el foro no me da la opcion, asi es que te copio el texto. Tu debes copiar este texto exacto a como esta en un archivo de texto, guardarlo con extension .LSP, por ejemplo "poligonos a excel.lsp" o "victor.lsp", despues lo cargas en autocad ya sea desde el comando "_appload" o arrastrando el icono del archivo sobre la pantalla grafica del cad. Cuando ejecutes el comando "pol2excel" se creara automaticamente el archivo csv
;;;;;;;;;;;; INICIA TEXTO DE LA RUTINA ;;;;;;;;;;;;;;;
(vl-load-com)
(defun c:pol2excel ( / ss i file delim ptodec nent lent pt1 X Y obj area peri Z name linea)
(setq ss (ssget "_X" '((0 . "LWPOLYLINE")))
i 0
name (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname")) ".csv")
file (open name "w")
delim ";"
ptodec ","
)
(write-line "Coordenada X;Coordenada Y;Coordenada Z;Area;Perimetro;
" file)
(repeat (sslength ss)
(setq nent (ssname ss i)
lent (entget nent)
i (1+ i)
pt1 (cdr (assoc 10 lent))
)
(if (or (= (logand 1 (cdr (assoc 70 lent))) 1) (zerop (distance pt1 (cdr (assoc 10 (reverse lent))))))
(progn
(setq X (car pt1)
Y (cadr pt1)
obj (vlax-ename->vla-object nent)
area (vlax-get-property obj 'Area)
peri (vlax-get-property obj 'Length)
Z (if (assoc 38 lent) (cdr (assoc 38 lent)) 0)
linea (strcat (rtos X 2 4) delim (rtos Y 2 4) delim (rtos Z 2 4) delim (rtos area 2 4) delim (rtos peri 2 4) delim)
)
(write-line (vl-list->string (subst (ascii ptodec) 46 (vl-string->list linea))) file)
)
)
)
(close file)
(princ (strcat "
Se creo el archivo: " name))
(princ)
)
(princ "
Rutina cargada: "pol2excel"
Por Gerardo Calvo -
[email protected]
")
(textscr)
;;;;;;;;;;;; FIN DE TEXTO DE LA RUTINA ;;;;;;;;;;;;;;;