6. Información Asociada Mediante Datos de Entidad Extendidos (XDATA).


La dificultad apuntada más arriba en cuanto a las limitaciones del método de los atributos se hizo evidente durante los trabajos de digitalización de los planos de las vías de una empresa de transporte ferroviario. En este caso se quería asociar a cada elemento de la vía los códigos de Instalación, Serie y Unidad utilizados en los sistemas de control y mantenimiento de la empresa operadora. Como parte de la asesoría encargada a uno de los autores por CIC, Consultoría Informática, s.l., [14] se propuso una estructura para los planos donde cada capa era identificada mediante un código asociado a la jerarquía Instalación-Serie. Pero quedaba por resolver la manera de asignar a cada objeto dentro de una misma capa sus códigos individuales como Unidad. Aún cuando estaba prevista la utilización de AutoCAD MAP en la explotación y mantenimiento de los planos por la Oficina Técnica de la Empresa Operadora, la asignación inicial de códigos sería realizada por la empresa de servicios técnicos contratada para la digitalización, y por ello debía programarse de manera que fuera asequible a las versiones normales de AutoCAD. Justo esta posibilidad era la brindaban, desde su introducción con la versión 11, los Datos de Entidad Extendidos.

6.1. Estructura de los Datos de Entidad Extendidos (XDATA).

Cada una de las entidades de AutoCAD admite hasta 16 Kilobytes de información como datos extendidos. En este caso el contenedor de datos no es ya un nuevo objeto ATTRIB que se ubica dentro de una secuencia en la base de datos del dibujo, sino que esos datos se integran dentro del registro de cada entidad gráfica (y también de las tablas de símbolos y otras entidades no gráficas) como campos de información adicionales. Otra ventaja de los XDATA sobre los atributos de bloque es la variedad de tipos de datos que son admitidos. La Tabla 2 presenta una reseña de estos tipos de datos, con el código de grupo que sirve para identificarlo dentro del registro de datos de la entidad.

Código DXF:

Tipo de Dato:

Observaciones:

1000

Cadena de Texto

Hasta 255 bytes de longitud

1001

Nombre de Aplicación

Hasta 31 bytes de longitud

1003

Nombre de Capa

 

1005

Identificador de entidad

 

1010

Valor de Punto 3D

3 números reales

1040

Número Real

Valor de coma flotante

1070

Número Entero

Entero de 16 bits (con o sin signo)

1071

Entero Largo

Entero de 32 bits con signo (gestionable por aplicaciones ARX)

1002

Cadena de Control

"{" ó "}" permite a la aplicación agrupar los datos como listas.

1004

Chunks de Datos Binarios

Hasta 127 bytes (gestionable por aplicaciones ARX)

1011

Posición en el SCU

Se actualiza al transformar la entidad propietaria.

1012

Desplazamiento en SCU

Se escala, gira o refleja pero no se estira ni se desplaza.

1013

Dirección en el SCU

Vector unitario girado o reflejado, no se escala, estira o desplaza.

1041

Distancia

Se escala igual que la entidad propietaria

1042

Factor de Escala

Se actualiza al transformar la entidad propietaria.

Tabla 2 - Tipos de Datos admitidos como XDATA

Al estar estos datos destinados a ser gestionados por aplicaciones de usuario, los mismos se agrupan según la aplicación que les haya dado origen. Estas son aplicaciones que deberán estar previamente registradas en la base de datos del dibujo mediante la función REGAPP. Una vez debidamente registrada, ese nombre de aplicación se incluirá en una tabla de nombre APPID mantenida dentro del archivo de dibujo.

El inicio de los campos XDATA en el registro de datos de la entidad se señaliza en el formato de intercambio DXF mediante un código -3. Los datos correspondientes a cada aplicación registrada se agrupan bajo un código 1001 al que se asocia el nombre de la aplicación. Los datos particulares se agrupan, según su naturaleza en campos identificados mediante los códigos DXF que se indican en la Tabla 2. Los datos extendidos (así como los demás campos de datos definitorios de la entidad) se pueden recuperar mediante la función ENTGET.

6.2. Descripción de la Herramienta para Codificación mediante XDATA.

Esta herramienta se gestiona desde el cuadro de diálogo que muestra la Figura 4. Este cuadro aparece una vez que se han seleccionado uno o varios objetos gráficos para codificar. El proceso de selección sigue los cauces habituales en AutoCAD, quedando resaltado el conjunto de selección. Una vez concluida la selección el programa comprueba que todos los objetos seleccionados pertenezcan a una misma capa. De no ser así lo avisa y pide una nueva designación.

Fig. 4 - Cuadro de diálogo principal dela herramienta de codificación.

El recuadro Objeto Seleccionado presenta:

  • El nombre de la Instalación a que pertenecen los objetos designados
  • La descripción de la Serie correspondiente.

En el recuadro Código de Mantenimiento: dos casillas de lista desplegables:

  • Instalación: el Código Numérico que corresponde a la Instalación.
  • Serie: el Código Numérico que corresponde a la Serie.

En caso de existir más de una opción para cualquiera de esos códigos deberá desplegarse la lista para inspeccionar las alternativas. El código que aparezca en la casilla será el asociado a la entidad. Estos códigos son propuestos de manera automática por el programa en correspondencia a la capa en que se encuentra la entidad seleccionada. No son casillas editables, puesto que necesariamente deberá optarse por alguno de los códigos propuestos en función de la capa. En caso de encontrarse errores en los códigos esto implica que se deben cambiar de capa los objetos CAD.

También en este recuadro tenemos la casilla de edición Unidad, para introducir el código particular que identifica a cada componente del sistema. La entrada de datos en esta casilla se limita a cuatro caracteres.

En el borde inferior izquierdo, se puede ver el tipo de objeto CAD seleccionado y su identificador. Si se ha realizado una selección múltiple, en lugar del tipo de objeto se indica "SELECCIÓN MULTIPLE".

  • Botón Cancelar: Cierra el diálogo para seleccionar otro objeto sin enlazar los datos al anteriormente seleccionado. Se emplea en caso de error en la designación.
  • Botón Aceptar: Escribe los datos para el objeto y cierra el diálogo para permitir la selección de otro objeto. En caso de pulsar este botón sin entrar datos, aparece una advertencia pidiendo cancelar en lugar de aceptar.
Si el objeto seleccionado ya tuviera el código de la unidad, el mismo se muestra en la casilla de edición, permitiendo modificarlo. En selecciones múltiples con una mezcla de objetos codificados y no codificados, o con diferentes códigos de unidad, se abre un cuadro de diálogo (figura 5) listando los diferentes códigos detectados. Se podrá seleccionar cualquiera de estos códigos pulsando sobre la lista y seleccionando el botón Aceptar o haciendo una doble pulsación sobre la línea correspondiente. Si se pulsa el botón Aceptar sin una selección previa de la lista, se tomará como código el primero de arriba. El código de unidad que se elija de esta manera pasará a reemplazar los demás códigos en los objetos que forman parte del conjunto de selección.
Fig. 5 - Cuadro con datos de Unidad

Todas las incidencias en la ejecución del programa se registran en un fichero nombrado como el dibujo y de extensión .LOG, que se situará en el mismo directorio que el archivo del dibujo. Estos ficheros permiten un control de calidad riguroso durante el proceso de codificación.

6.3. Observaciones al método XDATA.

Aunque resuelve la posibilidad de codificar de manera standard cualquier tipo de entidad gráfica, no importa cuál fuere su naturaleza, incluso los mismos bloques, deja mucho por hacer al desarrollador de aplicaciones, que debe gestionar en su totalidad esos datos que AutoCAD sólo se encarga de almacenar. Prueba de esto es el escaso número de funciones específicas para los XDATA que ofrecen los entornos de programación, apenas las necesarias para registrar la aplicación (REGAPP) y para comprobar el tamaño en bytes de la información vinculada (XDROOM y XDSIZE). La información relacionada con una misma aplicación y recuperada mediante ENTGET presenta una dificultad particular en lo que se refiere a la aparición de códigos de grupo DXF repetidos, cosa que impide su acceso, como habitualmente se haría cuando se trata de una lista de asociación, mediante la función ASSOC. Una solución sería la de recorrer la lista respetando el orden en que fueron introducidos los valores. Este procedimiento, sin embargo, pudiera no ser lo suficientemente confiable.

6.4. Programación con XDATA

Para la herramienta descrita se emplearon cuatro campos de tipo STRING, adicionando a la cadena de datos un prefijo con formato "XX=", donde "XX" representa un identificador particular del dato dentro de la aplicación. Este recurso, tomado de ADE 1.0, hace posible recuperar el dato de manera directa desde el API de MAP mediante la función ADE_EXPREVAL.

6.4.1. Vincular XDATA a un objeto.

El código de la Figura 6 demuestra la manera de añadir a cualquier entidad utilizando este formato. El argumento noment sería un nombre de entidad (ENAME) del dibujo actual, nombreaplic una cadena con el nombre de aplicación, lis_id una lista con los identificadores en un formato del tipo '("DATO1=" "DATO2=" ... "DATOn="), lis_val una lista con los valores que corresponderían a dichos datos '("valor1" "valor2" ... "valorn"), también éstos expresados como STRING.

Fig. 6 - Código para Vincular XDATA a un objeto.

6.4.2.. Recuperar los XDATA mediante ade_expreval

La Figura 7 muestra el código de una función que permite recuperar desde AutoCAD MAP en formatos real, entero, cadena o punto, los valores XDATA a partir de los identificadores que les fueron asociados. Por ejemplo, (leedato objeto "MIAPLIC" "DATO3" "string") pudiera devolver "777" , mientras que (leedato objeto "MIAPLIC" "DATO3" "real") devolvería en ese caso 777.0

Fig. 7 - Función para recuperar los XDATA vinculados a un objeto mediante ade_expreval

Inicio | Índice | Continuar...