Professional Documents
Culture Documents
es>
Arquitecto. Profesor Asociado de Tcnicas de Expresin Grfica, Universidad de
Cantabria (Santander, Espaa). Consultor en temas CAD y GIS. Miembro del Autodesk
Developers Network
Pgina WEB Personal: http://personales.unican.es/togoresr
Antecedentes
En el nmero 61 describamos la manera de acceder a una hoja de clculo EXCEL
desde AutoCAD y llenar los campos de una tabla con los datos de una lista de
asociacin LISP.
En el siguiente nmero examinamos una funcin capaz de extraer la informacin de
los atributos y otros datos asociados a las referencias de bloque.
Contamos con que el lector ya dispondr de las siguientes funciones organizadas en
dos archivos1:
Achivo fuente:
Funciones:
Propsito:
ListaExcel.LSP apl-err
Gestin de errores.
Establece la comunicacin.
(CadXpress 61) IniciaExcel
TerminaExcel
Libera la aplicacin.
DatoCelda
Inserta una valor en una celda
Excel.
ProcesaFila
Escribe los campos de una fila.
ProcesaTabla
Escribe la fila de ttulos y llena
la tabla.
Lista->Excel
Recibe la lista e invoca las
funciones anteriores
LeeAttribX.LSP LeeAtribX
Extrae datos a partir de un objeto
(CadXpress 62)
Referencia de Bloque
Procesa
Lee el identificador y el valor de
un atributo
Los artculos mencionados incluyen adems funciones diseadas con el objeto de
probar el funcionamiento de los programas. De una de esas funciones podemos
ahora prescindir, la funcin TablaCirculos. Otra la utilizaremos con pequeas
modificaciones:
Artculo:
Funciones:
Propsito:
CadXpress 61
TablaCirculos
No se utilizar
C:TABLA
No se utilizar
CadXpress 62
SelBloque
Se modifica para que reciba el
nombre de un bloque seleccionado de
un Cuadro de Dilogo en lugar de
teclearlo el usuario
A estos dos archivos aadiremos en esta entrega el archivo con la definicin del
Cuadro de Dilogo y otro con las funciones Visual LISP necesarias para gestionarlo
y que explicaremos ms abajo:
Achivo fuente:
ExtrATT.LSP
CadXpress 63
Funciones:
CargaDialogo
CompruebaAtributos
ExtrATT
ListaNombres
TieneAtributos
SelBloque
ExtrATT.DCL
Propsito:
Inicia la operacin del Cuadro de
Dilogo.
Comprueba que el bloque
seleccionado posea atributos.
Lanza la funcin Lista->Excel.
Devuelve una lista con los bloques
de usuario encontrados en el
dibujo.
Discrimina si una Definicin de
Bloque incluye atributos.
Selecciona las Referencias de
Bloque que corresponden al nombre
de bloque seleccionado por el
usuario.
Definicin del Cuadro de Dilogo
El Cuadro de Dilogo
El cuadro de dilogo propuesto (ver Figura 1) es muy simple, aunque sirve
perfectamente a los fines que nos proponemos.
Esto se logra aplicando una funcin lambda, es decir una funcin annima,
definida en tiempo de ejecucin y que desaparece una vez cumplido su
objetivo:
(mapcar 'add_list
(mapcar '(lambda (term) (strcat (car term) "\t" (cdr term)))
*listaBloques*))
Si ListaNombres devolviera una lista vaca en lugar de llenar la casilla de
lista se presentara un mensaje de error en el componente errtile:
(set_tile "error" "No hay bloques en el Dibujo Actual")
El proceso de escritura en la lista concluye con la llamada a end_list.
Otro aspecto que nos interesa comprobar ahora es si las Definiciones de Bloque
restantes incluyen Definiciones de Atributos5. Para ello ser necesario examinar,
una a una, las Definiciones de Bloque encontradas. Una Definicin de Bloque es
tambin una Coleccin. En este caso integrada por entidades entre las cuales
pueden encontrarse Definiciones de Atributo. La funcin TieneAtributos (ver
figura 9) recorre mediante vlax-for cada Definicin de Bloque y devuelve t
(cierto) en caso de que la propiedad "ObjectName" de alguna entidad sea
"AcDbAttributeDefinition".
Conclusiones
Con lo publicado en este nmero completamos lo que sera el cdigo para una
aplicacin de utilidad evidente. Ms adelante abordaremos los procedimientos para
crear un proyecto que nos ayude a gestionar los diversos archivos, los aspectos a
tener en cuenta para su compilacin y el proceso mediante el cual podemos
convertir todo esto en una aplicacin ejecutable VLX.
1